在CentOS系统中,使用vsftpd(Very Secure FTP Daemon)作为FTP服务器时,可以采取以下措施来防止FTP攻击:
确保你使用的是最新版本的vsftpd,因为新版本通常包含安全补丁和修复。
sudo yum update vsftpd
编辑/etc/vsftpd/vsftpd.conf
文件,进行以下配置:
# 启用被动模式
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
# 启用本地用户登录
local_enable=YES
# 禁止匿名用户登录
anonymous_enable=NO
# 启用chroot jail
chroot_local_user=YES
# 设置用户登录目录
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
# 启用SSL/TLS加密
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
# 设置SSL证书和密钥文件
rsa_cert_file=/etc/pki/tls/certs/localhost.crt
rsa_private_key_file=/etc/pki/tls/private/localhost.key
# 启用防火墙规则
firewall-cmd --permanent --add-service=ftp
firewall-cmd --permanent --add-port=21/tcp
firewall-cmd --permanent --add-port=1024-1048/tcp
firewall-cmd --reload
确保防火墙允许FTP流量通过。
sudo firewall-cmd --permanent --add-service=ftp
sudo firewall-cmd --permanent --add-port=21/tcp
sudo firewall-cmd --permanent --add-port=1024-1048/tcp
sudo firewall-cmd --reload
Fail2Ban可以监控日志文件并自动禁止恶意IP地址。
sudo yum install fail2ban
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
# 配置Fail2Ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
# 添加以下内容
[vsftpd]
enabled = true
port = ftp,ftp-data
filter = vsftpd
logpath = /var/log/vsftpd/vsftpd.log
maxretry = 3
bantime = 600
定期检查vsftpd的日志文件,以便及时发现异常活动。
sudo tail -f /var/log/vsftpd/vsftpd.log
如果SELinux处于 enforcing 模式,确保配置正确的SELinux策略。
sudo setsebool -P ftp_home_dir on
sudo setsebool -P allow_ftpd_full_access on
定期备份vsftpd.conf
和其他相关配置文件,以便在需要时恢复。
sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
通过以上步骤,你可以大大提高vsftpd服务器的安全性,减少FTP攻击的风险。