温馨提示×

Ubuntu FTP Server如何设置防火墙

小樊
36
2025-12-28 23:55:12
栏目: 智能运维

Ubuntu FTP Server 防火墙设置指南

一、前置准备

  • 明确FTP模式与端口:FTP有主动模式被动模式。控制通道使用TCP 21;主动模式的数据通道由服务器使用TCP 20连接到客户端,被动模式则由服务器在配置的端口范围内等待客户端连接。若使用加密的FTPS,通常还会用到990/TCP(控制)989/TCP(数据)。为减少复杂度与便于穿越防火墙,生产环境更推荐被动模式或直接使用SFTP/FTPS
  • 选定防火墙工具:Ubuntu常用UFW(简单)或iptables/nftables(灵活)。以下分别给出配置方法。

二、使用 UFW 配置

  • 安装与启用:
    • 安装:sudo apt update && sudo apt install ufw
    • 启用:sudo ufw enable(启用时建议允许SSH 22/TCP,避免被锁)
  • 放行基础端口:
    • 控制通道:sudo ufw allow 21/tcp
    • 主动模式数据通道:sudo ufw allow 20/tcp
  • 放行被动模式端口范围(示例为50000–50050/TCP,请与FTP服务配置保持一致):
    • sudo ufw allow 50000:50050/tcp
  • 可选:仅允许指定来源IP访问FTP控制端口
    • sudo ufw allow from <你的IP或网段> to any port 21
  • 使配置生效与检查:
    • 重载:sudo ufw reload
    • 状态:sudo ufw status verbose
  • 如使用FTPS,按需放行:
    • sudo ufw allow 990/tcp
    • sudo ufw allow 989/tcp

三、使用 iptables 配置

  • 放行基础端口:
    • 控制通道:sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT
    • 主动模式数据通道:sudo iptables -A INPUT -p tcp --dport 20 -j ACCEPT
  • 放行被动模式端口范围(示例为50000–50050/TCP):
    • sudo iptables -A INPUT -p tcp --dport 50000:50050 -j ACCEPT
  • 保存与恢复(持久化):
    • 安装持久化工具:sudo apt install iptables-persistent
    • 保存:sudo netfilter-persistent save(或 sudo iptables-save > /etc/iptables/rules.v4
    • 恢复:sudo netfilter-persistent reload(或 sudo iptables-restore < /etc/iptables/rules.v4
  • 查看规则:sudo iptables -L -v -n
  • 如使用FTPS,按需放行990/TCP989/TCP

四、与 FTP 服务协同配置

  • vsftpd 示例(被动端口范围需与防火墙一致):
    • 编辑:sudo nano /etc/vsftpd.conf
    • 常用项:
      • listen=YES
      • anonymous_enable=NO
      • local_enable=YES
      • write_enable=YES
      • chroot_local_user=YES
      • allow_writeable_chroot=YES
      • 被动端口范围(示例):pasv_min_port=50000pasv_max_port=50050
    • 重启服务:sudo systemctl restart vsftpd
  • 验证要点:
    • 在客户端测试主动/被动模式是否能列目录与上传下载
    • 查看防火墙与FTP服务日志,确认控制与数据通道均未被阻断

五、安全与排错建议

  • 安全优先:
    • 尽量使用**SFTP(基于SSH)FTPS(显式/隐式)**替代明文FTP
    • 限制来源IP访问FTP端口(UFW或iptables均可实现)
    • 避免使用过大的被动端口范围,范围越小攻击面越小
  • 常见排错:
    • 能登录但列目录/传输失败:多为被动端口范围未放行或服务配置不一致
    • 启用UFW后无法SSH:启用时未允许22/TCP,需立即放行或到控制台修复
    • 规则不生效:确认已执行重载/保存,且云平台安全组/外部防火墙也放行对应端口

0