FTP服务器是常见的攻击目标,因为其设计较老且经常配置不当。以下是保护Linux FTP服务器的关键措施:
考虑使用更现代的替代方案: - vsftpd (非常安全的FTP守护进程) - ProFTPD (配置灵活) - Pure-FTPd (注重安全)
避免使用老旧的、不维护的FTP服务器软件。
禁用匿名登录 (除非绝对需要):
anonymous_enable=NO
使用chroot jail限制用户访问其主目录:
chroot_local_user=YES
限制用户登录:
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
使用防火墙限制访问:
iptables -A INPUT -p tcp --dport 21 -s trusted_ip -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j DROP
更改默认端口 (非标准端口可减少自动化攻击):
listen_port=2121
限制连接速率防止暴力破解:
iptables -A INPUT -p tcp --dport 21 -m limit --limit 3/minute --limit-burst 5 -j ACCEPT
强制使用FTPS (FTP over SSL/TLS):
ssl_enable=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
或考虑SFTP (SSH文件传输协议)替代FTP
bash
pam_tally2.so deny=5 unlock_time=1800 onerr=fail
root_squash
启用详细日志:
xferlog_enable=YES
xferlog_std_format=NO
log_ftp_protocol=YES
定期检查日志:
grep "FAIL LOGIN" /var/log/vsftpd.log
保持系统更新:
apt update && apt upgrade -y
使用SELinux/AppArmor限制FTP进程权限
定期备份重要配置文件和数据
设置入侵检测系统 (如Fail2Ban):
[vsftpd]
enabled = true
filter = vsftpd
action = iptables[name=VSFTPD, port=ftp, protocol=tcp]
logpath = /var/log/vsftpd.log
maxretry = 3
考虑FTP代理或网络隔离
通过实施这些措施,您可以显著降低FTP服务器遭受攻击的风险,同时保持必要的文件传输功能。