VSFTP: Very Secure FTP
测试环境:CentOS 6.4 64bit
1. 安装FTP服务器(vsftpd)和客户端(ftp)
# yum -y install vsftpd ftp
# chkconfig vsftpd on
-------------------------------------------------------------------
2. 配置vsftp
! 按照下述参考配置修改 /etc/vsftpd/vsftpd.conf 文件
-------------------------------------------------------------------
3. iptables配置
# vi /etc/sysconfig/iptables
在该文件中追加:
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21
-A INPUT -p tcp -m tcp --dport 50000:50030 -j ACCEPT // 开放指定的端口,提高访问速度
-A INPUT -p tcp -m tcp --dport 21
-A INPUT -p tcp -m tcp --dport 50000:50030 -j ACCEPT // 开放指定的端口,提高访问速度
# service iptables restart
-------------------------------------------------------------------
4. selinux配置
# useradd ftp-usr
# passwd ftp-usr // 设置ftp-usr用户密码
# chown ftp-usr:ftp-usr /var/ftp/pub/
# vi /etc/passwd
修改ftp-usr用户配置(必须保留主目录,否则无法登陆;login建议设置为/sbin/nologin),修改完成如下所示:
ftp-usr:x:501:501::/home/ftp-usr:/sbin/nologin
# service vsftpd start
# ftp 127.0.0.1 // 使用ftp-usr登陆
! 登陆FTP后进行所有希望能够进行的操作(如上传文件、上传目录、删除文件、删除目录等),此时由于SELinux的限制很多操作都会失败,但这些操作都会被记录到 /var/log/audit/audit.log 中,操作完后执行下述2行命令,SELinux会自动更新策略,刚刚禁止的操作都会被允许。
# grep vsftpd /var/log/audit/audit.log | audit2allow -M vsftpd
# semodule -i vsftpd.pp // 会在用户主目录下生成vsftpd.pp
至此,vsftpd已经可以正常使用了。
最终的效果为只允许ftp-usr用户登录FTP,且不允许该用户切换工作目录。
- 配置文件说明
/etc/vsftpd/vsftpd.conf // vsftp主配置文件
/etc/vsftpd/ftpusers // 拒绝用户列表
/etc/vsftpd/chroot_list
生效前提:chroot_list_enable=YES
路径指定:chroot_list_file=/etc/vsftpd/chroot_list
当 chroot_local_user=YES 时,chroot_list为禁止切换工作目录的用户列表
当 chroot_local_user=NO 时, chroot_list为允许切换工作目录的用户列表
/etc/vsftpd/user_list
生效前提:userlist_enable=YES
路径指定:userlist_file=/etc/vsftpd/user_list
当 userlist_deny=YES 时,user_list为拒绝用户列表
当 userlist_deny=NO 时, user_list为允许用户列表
- 参考配置(/etc/vsftpd/vsftpd.conf)
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
xferlog_std_format=YES
idle_session_timeout=600
data_connection_timeout=120
data_connection_timeout=120
ftpd_banner=Welcome to [XXXXX] FTP service.
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list # 在该文件中添加“ftp-usr”,不允许该用户切换工作目录
local_root=/var/ftp/pub
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list # 在该文件中添加“ftp-usr”,不允许该用户切换工作目录
local_root=/var/ftp/pub
listen=YES
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list # 在该文件中添加“ftp-usr”,允许该用户访问FTP
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list # 在该文件中添加“ftp-usr”,允许该用户访问FTP
pasv_min_port=50000
pasv_max_port=50030
pasv_max_port=50030
reverse_lookup_enable=NO
pam_service_name=vsftpd
tcp_wrappers=YES
tcp_wrappers=YES