CentOS 6.4下配置FTP(vsftpd)服务
系统环境:CentOS 6.4 + vsftpd-2.2.2
SELinux:Enforcing
1.安装vsftpd软件
[root@CentOS vsftpd]# yum install vsftpd -y
2.允许vsftpd开机自动启动
[root@CentOS vsftpd]# chkconfig --level 235 vsftpd on
3.修改/etc/vsftpd/vsftpd.conf文件
禁止匿名登录(默认允许匿名登录)
anonymous_enable=NO
将用户限制在其主目录下
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
//如果chroot_local_user=YES,则/etc/vsftpd/chroot_list文件中包含的就是不chroot的用户列表,即不受限制的用户列表
创建/etc/vsftpd/chroot_list文件(该文件默认不存在),并将其权限设为600
[root@CentOS vsftpd]# pwd
/etc/vsftpd
[root@CentOS vsftpd]# touch chroot_list
[root@CentOS vsftpd]# chmod 600 chroot_list
//chroot_list为空表示所有人都被约束在其主目录下
只允许指定用户访问FTP服务,添加如下一行:
userlist_deny=NO
之后修改/etc/vsftpd/user_list文件,将允许访问FTP服务的用户添加到文件中,格式:一个用户占一行(只有该文件中的用户才有访问FTP服务的权限)
//userlist_deny=YES
(默认值),表示不允许/etc/vsftpd/user_list文件中的用户访问FTP服务
将vsftpd的日志记录到系统日志(rsyslog),添加如下一行:
syslog_enable=YES
//wu-ftpd和vsftpd风格的传输日志均不支持中文,所以才将vsftpd的传输日志记录到系统日志中
4.添加公共目录(/opt/samba)到指定用户(ywh)的主目录中
mount --bind /opt/samba
/opt/ywh/public
//之后/opt/ywh/public目录中的内容将与/opt/samba目录中的内容完全一致
如果要永久性的挂载该目录,可以在/etc/fstab中添加如下一行:
/opt/samba
/opt/ywh/public none
bind 0 0
5.修改SELinux策略,SELinux默认不允许使用HOME目录作为FTP目录,也禁止写操作
[root@CentOS vsftpd]# setsebool -P ftp_home_dir on
[root@CentOS vsftpd]# setsebool -P allow_ftpd_full_access on
6.开放iptables INPUT链中的21端口和OUTPUT链中的20端口(使用主动方式对外提供FTP服务)
[root@CentOS vsftpd]# iptables -A INPUT -m state --state NEW -p tcp
--dport 21 -j ACCEPT
[root@CentOS vsftpd]# iptables -A OUTPUT -m state --state NEW -p
tcp --sport 20 -j ACCEPT
7.启动FTP服务
[root@CentOS vsftpd]# service vsftpd start
备注:
1.vsftpd(Very Secure Ftp Daemon)
2.vsftpd官方网站:http://vsftpd.beasts.org(会跳转到https://security.appspot.com/vsftpd.html)
3.vsftpd最新官方网站(2013.05.17):https://security.appspot.com/vsftpd.html
4.vsftpd-2.2.2 FAQ:ftp://vsftpd.beasts.org/users/cevans/untar/vsftpd-2.2.2/FAQ
5./var/log/xferlog是wu-ftpd风格的传输日志,/var/log/vsftpd.log是vsftpd自己风格的传输日志