linux

Linux vsftp防火墙规则:保护服务器安全

小樊
40
2025-10-07 14:55:06
栏目: 云计算

Linux vsftpd防火墙规则配置:强化FTP服务器安全

一、基础防火墙规则:开放必要端口

FTP服务依赖**控制端口(21/tcp)**用于命令传输,**数据端口(20/tcp)**用于主动模式数据传输,被动模式端口范围(如40000-50000/tcp)用于被动模式数据传输(需在vsftpd配置中开启pasv_enable=YES并设置端口范围)。以下是不同防火墙工具的配置方法:

1. Ubuntu/Debian(使用UFW)

# 允许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

2. CentOS/RHEL(使用Firewalld)

# 允许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配置优化:配合防火墙提升安全性

防火墙规则需与vsftpd配置协同,避免因配置不当导致安全漏洞:

1. 关键配置项(修改/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

2. 重启vsftpd服务

sudo systemctl restart vsftpd
sudo systemctl enable vsftpd  # 开机自启

三、高级安全增强:防火墙与系统协同

1. 使用TCP Wrappers(可选)

通过/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

2. 配置SELinux(若启用)

若系统启用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

3. 启用FTP over TLS(FTPS)

加密传输数据,防止中间人攻击:

# 生成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

四、验证与维护

  1. 测试连接:使用FTP客户端(如FileZilla)连接服务器,选择被动模式(PASV),验证登录及文件上传/下载功能。
  2. 监控日志:定期检查/var/log/vsftpd.log(或/var/log/messages),监控可疑登录尝试(如多次失败)。
  3. 定期更新:保持vsftpd及系统软件包最新,修复已知安全漏洞:
    sudo apt update && sudo apt upgrade vsftpd  # Debian/Ubuntu
    sudo yum update vsftpd                      # CentOS/RHEL
    

通过以上步骤,可有效利用防火墙规则配合vsftpd配置,显著提升Linux FTP服务器的安全性,防范未授权访问、数据泄露等风险。

0
看了该问题的人还看了