如何在Debian上配置FTPServer防火墙
小樊
49
2026-01-12 01:43:44
Debian 上配置 FTPServer 防火墙
前置准备
- 明确使用的是 FTPS(FTP over SSL/TLS),默认控制连接端口为 21/TCP,数据连接使用 20/TCP(主动模式)或由服务器在被动模式告知的高位端口。为减少攻击面,建议显式配置并只开放一段被动端口范围(如 30000–31000 或 50000–50100)。
- 若使用 vsftpd,在配置文件 /etc/vsftpd.conf 中设置被动端口范围,例如:
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=50100
修改后重启服务:sudo systemctl restart vsftpd。
- 若使用 ProFTPD,在 /etc/proftpd/proftpd.conf 中设置:
PassivePorts 50000 50100
修改后重启服务:sudo systemctl restart proftpd。
使用 UFW 放行规则
- 安装并启用 UFW(如未安装):
sudo apt update && sudo apt install ufw -y
sudo ufw enable
- 放行 FTP 控制与数据端口(主动模式需要 20/TCP;被动模式还需放开你配置的端口段):
sudo ufw allow 21/tcp
sudo ufw allow 20/tcp
sudo ufw allow 50000:50100/tcp
- 重载并检查:
sudo ufw reload
sudo ufw status verbose
- 说明:UFW 为前端工具,底层仍由 iptables/nftables 生效;规则顺序和是否默认拒绝会影响最终放行效果。
使用 iptables 放行规则
- 允许控制连接与主动模式数据端口:
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 20 -j ACCEPT
- 允许被动模式端口范围(示例为 50000–50100):
sudo iptables -A INPUT -p tcp --dport 50000:50100 -j ACCEPT
- 允许回环与已建立/相关连接,最后拒绝其余输入:
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
- 保存规则(持久化):
sudo apt install -y iptables-persistent
sudo netfilter-persistent save
sudo netfilter-persistent reload
- 验证:
sudo iptables -L -n -v
验证与常见问题
- 客户端连接测试:使用 FileZilla 选择 FTP over TLS(显式 FTPS),主机填服务器地址,端口 21,在“加密”中选择“要求显式 FTP over TLS”,用有效账号登录并列出目录,确认能正常传输。
- 被动端口连通性:在服务器上临时监听你配置的被动端口段(例如:sudo nc -l -p 50000),从外部测试连通性(如:nc -vz your_server_ip 50000),确保云厂商安全组/外部防火墙同样放行该段端口。
- 只开放必要端口:避免使用过大的端口范围(如 1024:65535),优先使用自定义的窄范围(如 50000–50100),并在服务器配置与防火墙两侧保持一致。
- 若使用 SFTP(基于 SSH),请改为放行 22/TCP,与 FTPS 的端口策略不同。