CentOS中vsftpd安全设置指南
sudo yum update -ysudo yum install vsftpd -yanonymous_enable=NOlocal_enable=YESwrite_enable=YESchroot_local_user=YESallow_writeable_chroot=YES(若用户主目录需写入,必须设置为YES,否则会导致登录失败)user_list文件定义允许/拒绝登录的用户列表(需配合userlist_enable和userlist_deny使用)userlist_enable=YESuserlist_file=/etc/vsftpd/user_listuserlist_deny=NO(设置为NO时,仅允许user_list中的用户登录;设置为YES时,拒绝user_list中的用户登录)xferlog_enable=YESxferlog_file=/var/log/vsftpd.logxferlog_std_format=YES被动模式可避免客户端因防火墙限制无法连接的问题,需指定安全的端口范围(建议选择1024-65535之间的高端口):
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=50010(端口范围可根据实际需求调整)
加密数据传输,防止用户名、密码及文件内容被窃取:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/pki/tls/private/vsftpd.key \
-out /etc/pki/tls/certs/vsftpd.crt
ssl_enable=YESforce_local_data_ssl=YES(强制数据传输加密)force_local_logins_ssl=YES(强制登录过程加密)ssl_tlsv1=YES(启用TLSv1协议)ssl_sslv2=NO(禁用不安全的SSLv2)ssl_sslv3=NO(禁用不安全的SSLv3)rsa_cert_file=/etc/pki/tls/certs/vsftpd.crtrsa_private_key_file=/etc/pki/tls/private/vsftpd.key允许FTP服务端口(21/tcp)及被动模式端口范围通过防火墙(以firewalld为例):
sudo firewall-cmd --permanent --add-service=ftp # 允许FTP服务(自动开放21/tcp)
sudo firewall-cmd --permanent --add-port=50000-50010/tcp # 允许被动模式端口范围
sudo firewall-cmd --reload # 重新加载防火墙规则
调整SELinux策略,允许vsftpd访问用户主目录:
sudo setsebool -P ftp_home_dir on # 允许FTP访问用户主目录
sudo chcon -Rt svirt_sandbox_file_t /home/* # 设置用户主目录的SELinux上下文
sudo useradd -m ftpuser -s /sbin/nologin # 创建用户并设置shell为nologin(禁止SSH登录)
sudo passwd ftpuser # 设置强密码
sudo chown ftpuser:ftpuser /home/ftpuser # 修改主目录所有者
sudo chmod 755 /home/ftpuser # 设置目录权限(所有者可读写执行,其他用户可读执行)
应用配置后,重启vsftpd服务并设置为开机自启:
sudo systemctl restart vsftpd # 重启服务
sudo systemctl enable vsftpd # 开机自启
tail -f /var/log/vsftpd.log实时监控FTP活动,及时发现异常行为。sudo yum update vsftpd更新vsftpd至最新版本,修复安全漏洞。