温馨提示×

Debian FTP服务器防火墙设置指南

小樊
33
2025-12-25 22:23:40
栏目: 云计算

Debian FTP服务器防火墙设置指南

一 前置准备与模式选择

  • 明确使用的 FTP 模式与端口:控制通道为 21/TCP;主动模式数据通道由服务器从 20/TCP 发起;被动模式需预先约定一段数据端口范围(建议在服务器配置中固定,如 30000–3100049152–65535)。若启用加密,显式 FTPS 使用 990/TCP,隐式 FTPS 常用 990/TCP(部分实现也使用 989/TCP,以服务配置为准)。为减少攻击面,建议仅开放必要端口,并优先使用 FTPSSFTP。在虚拟化环境中,确保虚拟网络(桥接/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 明文不安全,生产环境建议使用 FTPSSFTP;如用 SFTP,请改用 SSH 端口 22/TCP 的防火墙策略。
    • 规则未持久:确认已使用 iptables-persistent 保存或 UFW 已启用;重启后复查规则是否恢复。

0