匿名访问是FTP服务器最易被滥用的入口,必须彻底关闭。编辑/etc/vsftpd.conf文件,将anonymous_enable=YES修改为anonymous_enable=NO,禁止任何匿名用户登录服务器。
通过chroot将用户限制在自己的主目录内,防止其访问系统其他敏感目录。配置/etc/vsftpd.conf:
chroot_local_user=YES:强制所有本地用户限制在主目录;chroot(如管理员),可添加chroot_list_enable=YES并指定chroot_list_file=/etc/vsftpd.chroot_list,在列表中填写允许的用户。write_enable=NO,彻底防止文件上传带来的风险;/etc/vsftpd.userlist文件指定允许访问的用户(userlist_enable=YES、userlist_deny=NO),或通过/etc/vsftpd.ftpusers文件添加禁止访问的用户(如root)。明文传输的FTP数据易被窃取或篡改,必须启用加密。步骤如下:
openssl生成自签名证书(生产环境建议使用CA签发证书);/etc/vsftpd.conf中添加ssl_enable=YES、rsa_cert_file=/etc/ssl/certs/vsftpd.crt、rsa_private_key_file=/etc/ssl/private/vsftpd.key,并设置force_local_data_ssl=YES、force_local_logins_ssl=YES,强制所有连接使用SSL。通过防火墙仅允许可信IP地址访问FTP端口(默认21/tcp,被动模式需开放30000-31000/tcp范围):
sudo ufw allow from trusted_ip to any port 21/tcp # 替换trusted_ip为可信IP
sudo ufw allow 30000:31000/tcp # 被动模式端口范围
sudo ufw reload
若使用iptables,可添加类似规则限制源IP。
max_clients=100(总连接数)和max_per_ip=5(单个IP的最大连接数),防止DDoS攻击耗尽服务器资源;anon_max_rate=307200(匿名用户最大带宽,300KB/s)和local_max_rate=307200(本地用户最大带宽)控制传输速度,避免恶意用户占用过多带宽。sudo apt update && sudo apt upgrade,确保vsftpd及系统补丁为最新版本,修复已知安全漏洞;xferlog_enable=YES、xferlog_file=/var/log/vsftpd.log),定期检查日志文件(如tail -f /var/log/vsftpd.log),及时发现异常登录、文件传输等活动。/etc/pam.d/vsftpd)配置复杂密码要求(如长度≥8位、包含大小写字母、数字和特殊字符),强制用户定期更换密码;Fail2Ban工具监控FTP登录日志,自动屏蔽多次尝试失败的IP地址(如5分钟内失败3次),防范暴力破解攻击。以上措施覆盖了vsftpd服务器的主要安全风险点,可根据实际需求调整配置(如是否允许写权限、是否开启被动模式等)。配置完成后,务必重启vsftpd服务使更改生效:sudo systemctl restart vsftpd。