1. 强化用户访问控制
vsftpd.conf中设置anonymous_enable=NO,彻底阻断匿名用户登录,避免未授权用户上传恶意文件。userlist_enable=YES启用用户列表,结合userlist_deny=NO仅允许/etc/vsftpd/user_list中指定的用户登录;或使用deny_file指定禁止登录的用户列表。chroot_local_user=YES将用户限制在自己的主目录(如/home/ftpuser),防止访问系统其他目录;若需允许写入,需添加allow_writeable_chroot=YES确保目录可写但不影响隔离效果。2. 细化文件上传权限管理
write_enable=YES允许上传,但通过chown_uploads=YES和chown_username=ftpuser将上传文件的拥有者设为特定用户(如ftpuser),避免用户通过上传文件获取高权限。local_root指定用户专属上传目录(如local_root=/home/ftpupload),或使用dirallow/deny指令限制用户可访问的目录(如dirallow=/home/ftpuser、deny=/home/ftpuser/private)。file_open_mode=0644限制上传文件的权限(如禁止执行权限),或在应用层通过脚本检查文件扩展名(如禁止.exe、.sh等危险类型)。3. 实施传输速率限制
vsftpd.conf中设置local_max_rate(单位:字节/秒),如local_max_rate=102400(100KB/s),限制所有用户的上传速度,避免占用过多带宽。/etc/vsftpd/user_conf),为每个用户添加配置文件(如username),设置local_max_rate(如local_max_rate=51200),实现差异化速度控制。4. 防止暴力破解攻击
sudo apt-get install fail2ban),配置/etc/fail2ban/jail.local启用vsftpd jail(enabled=true、port=ftp、maxretry=3、bantime=600),自动封禁多次登录失败的IP地址。vsftpd.conf中设置max_login_attempts=3,限制用户在短时间内多次尝试登录,降低暴力破解成功率。/etc/pam.d/vsftpd添加password requisite pam_pwquality.so retry=3 minlen=8 difok=4,要求密码长度至少8位、包含4个不同字符。5. 加密与日志监控
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/certs/vsftpd.pem),配置vsftpd.conf设置ssl_enable=YES、force_local_data_ssl=YES、force_local_logins_ssl=YES,强制加密数据传输,防止上传过程中数据被窃取。xferlog_enable=YES启用传输日志,指定日志路径(如xferlog_file=/var/log/vsftpd.log),定期检查日志以监控用户上传行为,及时发现异常(如大量上传、上传可疑文件)。