- 首页 >
- 问答 >
-
云计算 >
- Debian FTP服务器防火墙设置指南
Debian FTP服务器防火墙设置指南
小樊
33
2025-12-25 22:23:40
Debian FTP服务器防火墙设置指南
一 前置准备与模式选择
- 明确使用的 FTP 模式与端口:控制通道为 21/TCP;主动模式数据通道由服务器从 20/TCP 发起;被动模式需预先约定一段数据端口范围(建议在服务器配置中固定,如 30000–31000 或 49152–65535)。若启用加密,显式 FTPS 使用 990/TCP,隐式 FTPS 常用 990/TCP(部分实现也使用 989/TCP,以服务配置为准)。为减少攻击面,建议仅开放必要端口,并优先使用 FTPS 或 SFTP。在虚拟化环境中,确保虚拟网络(桥接/NAT)与安全组/宿主机防火墙均已放行对应端口。
二 使用 UFW 放行规则
- 安装并启用 UFW(若未安装):sudo apt update && sudo apt install ufw && sudo ufw enable
- 放行控制与数据端口(示例为被动端口范围 30000–31000):
- sudo ufw allow 21/tcp
- sudo ufw allow 20/tcp
- sudo ufw allow 30000:31000/tcp
- 如启用 FTPS:sudo ufw allow 990/tcp
- 使配置生效:sudo ufw reload;核对规则:sudo ufw status numbered
- 提示:UFW 默认策略通常为拒绝入站、允许出站;按需仅开放上述端口即可。
三 使用 iptables 放行规则
- 放行控制、数据与被动端口范围(示例 30000–31000):
- sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT
- sudo iptables -A INPUT -p tcp --dport 20 -j ACCEPT
- sudo iptables -A INPUT -p tcp --dport 30000:31000 -j ACCEPT
- 允许回环与已建立/相关连接,最后拒绝其余入站:
- sudo iptables -A INPUT -i lo -j ACCEPT
- sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
- sudo iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
- 持久化规则(Debian 常用方式):
- 安装持久化工具:sudo apt install iptables-persistent
- 保存规则:sudo netfilter-persistent save(或 iptables-save > /etc/iptables/rules.v4)
- 重启后自动恢复:netfilter-persistent reload。
四 与 vsftpd 协同配置
- 在 /etc/vsftpd.conf 中固定被动端口范围,并确保与防火墙一致:
- pasv_enable=YES
- pasv_min_port=30000
- pasv_max_port=31000
- 启用 FTPS(示例为显式 TLS):
- ssl_enable=YES
- allow_anon_ssl=NO
- force_local_data_ssl=YES
- force_local_logins_ssl=YES
- rsa_cert_file=/etc/ssl/certs/vsftpd.pem
- rsa_private_key_file=/etc/ssl/private/vsftpd.pem
- 重启服务:sudo systemctl restart vsftpd
- 说明:若使用隐式 FTPS,通常需将监听端口设为 990 并在防火墙放行 990/TCP;证书可用 OpenSSL 生成自签名证书以满足启用 TLS 的硬性要求。
五 验证与常见问题
- 连通性验证:
- 控制通道:telnet 服务器IP 21 或 nc -vz 服务器IP 21
- 被动端口:nc -vz 服务器IP 30000–31000(逐端口或脚本检测)
- FTPS:使用 FileZilla 选择 FTP over TLS(显式) 连接 990/TCP
- 规则核对:
- UFW:sudo ufw status numbered
- iptables:sudo iptables -L -v -n
- 常见问题与处理:
- 被动模式失败:检查服务器配置中的 pasv_min_port/pasv_max_port 与防火墙端口范围完全一致;云环境需同时放行安全组/宿主机防火墙。
- 数据连接超时:主动模式常被客户端 NAT/防火墙拦截,优先使用被动模式;必要时在客户端设置被动模式。
- 明文传输风险:FTP 明文不安全,生产环境建议使用 FTPS 或 SFTP;如用 SFTP,请改用 SSH 端口 22/TCP 的防火墙策略。
- 规则未持久:确认已使用 iptables-persistent 保存或 UFW 已启用;重启后复查规则是否恢复。