1. 禁用匿名访问
匿名FTP访问是高风险行为,易被恶意用户利用下载或上传敏感文件。需修改vsftpd配置文件(/etc/vsftpd.conf),设置anonymous_enable=NO,彻底关闭匿名登录权限。
2. 限制用户访问目录(Chroot Jail)
将FTP用户限制在其主目录内,防止越权访问系统其他目录。配置chroot_local_user=YES启用chroot jail,若需允许用户修改主目录内容(如上传文件),需添加allow_writeable_chroot=YES。
3. 启用TLS/SSL加密传输
FTP明文传输易导致密码和数据泄露,需启用TLS/SSL加密。首先生成自签名证书(sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem),然后在配置文件中添加:ssl_enable=YES、force_local_data_ssl=YES、force_local_logins_ssl=YES、rsa_cert_file=/etc/ssl/private/vsftpd.pem。
4. 配置防火墙规则
仅允许授权IP地址或端口访问FTP服务,减少暴露面。对于被动模式(Pasv),需开放数据端口范围(如pasv_min_port=30000、pasv_max_port=31000),并通过防火墙放行:
sudo ufw allow 21/tcp、sudo ufw allow 30000:31000/tcp;sudo firewall-cmd --permanent --add-port=21/tcp、sudo firewall-cmd --permanent --add-port=30000-31000/tcp,随后执行sudo firewall-cmd --reload。5. 强化用户认证与管理
sudo adduser ftpuser),避免使用root或其他高权限账户;Password123@),并定期更换;userlist_enable=YES、userlist_file=/etc/vsftpd.user_list指定允许访问的用户,设置userlist_deny=NO仅允许列表内用户登录。6. 禁用不必要的功能
关闭可能被滥用的FTP功能,降低攻击风险:
ls_recurse_enable=NO:禁止递归列出目录,防止DoS攻击;ascii_download_enable=NO:关闭ASCII模式下载,避免CPU资源消耗;anon_other_write_enable=NO:禁止匿名用户删除或重命名文件。7. 启用日志记录与监控
开启详细日志记录,便于追踪异常活动和排查安全事件。配置xferlog_enable=YES、xferlog_file=/var/log/vsftpd.log、xferlog_std_format=YES,定期检查日志(如sudo tail -f /var/log/vsftpd.log)。
8. 定期更新软件与补丁
及时更新vsftpd及操作系统,修复已知安全漏洞。执行sudo apt update && sudo apt upgrade(Ubuntu/Debian)或sudo yum update(CentOS/RHEL),确保软件版本为最新。
9. 可选:使用虚拟用户增强隔离
对于多用户场景,创建虚拟用户(而非系统用户),将虚拟用户映射到专用系统账户,实现更严格的权限隔离。配置guest_enable=YES、guest_username=ftpuser(映射到系统用户ftpuser),并通过user_config_dir指定虚拟用户个性化配置文件目录。