Linux vsftpd防火墙规则配置:强化FTP服务器安全
FTP服务依赖**控制端口(21/tcp)**用于命令传输,**数据端口(20/tcp)**用于主动模式数据传输,被动模式端口范围(如40000-50000/tcp)用于被动模式数据传输(需在vsftpd配置中开启pasv_enable=YES并设置端口范围)。以下是不同防火墙工具的配置方法:
# 允许FTP控制端口(21/tcp)
sudo ufw allow 21/tcp
# 允许FTP数据端口(20/tcp,主动模式必需)
sudo ufw allow 20/tcp
# 允许被动模式端口范围(自定义,如40000-50000)
sudo ufw allow 40000:50000/tcp
# 启用防火墙并检查状态
sudo ufw enable
sudo ufw status
# 允许FTP服务(自动包含21/tcp和20/tcp)
sudo firewall-cmd --permanent --add-service=ftp
# 允许被动模式端口范围(自定义,如40000-50000)
sudo firewall-cmd --permanent --add-port=40000-50000/tcp
# 重新加载防火墙配置
sudo firewall-cmd --reload
防火墙规则需与vsftpd配置协同,避免因配置不当导致安全漏洞:
/etc/vsftpd.conf)# 禁用匿名登录(防止未授权访问)
anonymous_enable=NO
# 允许本地用户登录
local_enable=YES
# 开启写入权限(根据需求设置,若仅需下载可设为NO)
write_enable=YES
# 限制用户在其主目录(防止访问系统其他目录)
chroot_local_user=YES
# 允许chroot目录可写(若用户目录需上传文件)
allow_writeable_chroot=YES
# 设置被动模式端口范围(与防火墙规则一致)
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
# 限制登录尝试(可选,需配合pam_tally2模块)
max_login_attempts=3
sudo systemctl restart vsftpd
sudo systemctl enable vsftpd # 开机自启
通过/etc/hosts.allow和/etc/hosts.deny限制访问IP:
# 仅允许特定IP访问(如192.168.1.0/24)
echo "vsftpd: 192.168.1.0/24" | sudo tee -a /etc/hosts.allow
echo "vsftpd: ALL" | sudo tee -a /etc/hosts.deny
若系统启用SELinux,需调整策略允许FTP访问用户目录:
# 允许FTP访问用户主目录
sudo setsebool -P ftp_home_dir on
# 允许FTP完全访问(谨慎使用,生产环境建议细化权限)
sudo setsebool -P allow_ftpd_full_access off
# 设置用户目录SELinux上下文
sudo chcon -Rv --type=public_content_t /home/ftpuser
加密传输数据,防止中间人攻击:
# 生成SSL证书(自签名,生产环境建议使用CA签发)
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/certs/vsftpd.crt
# 修改vsftpd.conf
echo "ssl_enable=YES" | sudo tee -a /etc/vsftpd.conf
echo "rsa_cert_file=/etc/ssl/certs/vsftpd.crt" | sudo tee -a /etc/vsftpd.conf
echo "rsa_private_key_file=/etc/ssl/private/vsftpd.key" | sudo tee -a /etc/vsftpd.conf
echo "force_local_logins_ssl=YES" | sudo tee -a /etc/vsftpd.conf
echo "force_local_data_ssl=YES" | sudo tee -a /etc/vsftpd.conf
# 重启vsftpd
sudo systemctl restart vsftpd
/var/log/vsftpd.log(或/var/log/messages),监控可疑登录尝试(如多次失败)。sudo apt update && sudo apt upgrade vsftpd # Debian/Ubuntu
sudo yum update vsftpd # CentOS/RHEL
通过以上步骤,可有效利用防火墙规则配合vsftpd配置,显著提升Linux FTP服务器的安全性,防范未授权访问、数据泄露等风险。