温馨提示×

Ubuntu FTPServer防火墙配置指南

小樊
42
2025-12-07 08:33:06
栏目: 智能运维

Ubuntu FTP Server 防火墙配置指南

一 准备与模式选择

  • 安装并启用 FTP 服务(以 vsftpd 为例):sudo apt update && sudo apt install vsftpd;sudo systemctl enable --now vsftpd。
  • 选择传输模式:
    • 主动模式:服务器从 20/tcp 主动连接客户端数据端口,通常只需放行服务器的 20/tcp 出站(很多云厂商默认放行);客户端需允许入站高端口。
    • 被动模式(PASV):客户端连接服务器的高端口范围,需在服务器放行一段 被动端口范围,并在 vsftpd 配置中声明同一范围。
  • 若追求加密传输,建议启用 FTPS(SSL/TLS):生成证书后在 vsftpd 中设置 ssl_enable=YES 并指定证书与私钥路径,客户端使用“FTP over TLS”连接。

二 使用 UFW 放行规则

  • 启用防火墙:sudo ufw enable;sudo ufw status verbose(确认状态与默认策略)。
  • 放行控制连接:sudo ufw allow 21/tcp
  • 放行被动端口范围(示例为 30000:31000/tcp,范围大小按并发与业务需求调整):sudo ufw allow 30000:31000/tcp
  • 主动模式补充:通常还需允许服务器 20/tcp 出站(UFW 默认对已建立的连接放行,很多场景无需额外入站放行 20/tcp;若你的环境对出站有限制,再按需放行)。
  • 可选:仅允许特定来源网段,例如 sudo ufw allow from 203.0.113.0/24 to any port 21,30000:31000/tcp
  • 应用后重载:sudo ufw reload;用客户端(如 FileZilla)测试上传/下载与目录列取。

三 使用 iptables 放行规则

  • 放行控制连接与被动端口范围(示例范围 30000:31000/tcp):
    • sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT
    • sudo iptables -A INPUT -p tcp --dport 30000:31000 -j ACCEPT
  • 主动模式补充:确保已放行服务器 20/tcp 出站;如需显式入站规则可按需添加。
  • 持久化保存与恢复:
    • Debian/Ubuntu 常用持久化方案:sudo apt-get install iptables-persistent;sudo netfilter-persistent save(或 /etc/iptables/rules.v4 保存后 netfilter-persistent save)。
    • 重启后恢复:sudo netfilter-persistent restore(或 iptables-restore < /etc/iptables/rules.v4)。
  • 建议同时放行已建立/相关连接,减少被动模式干扰:sudo iptables -I INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT。

四 vsftpd 与防火墙联动配置

  • 编辑配置文件:sudo nano /etc/vsftpd.conf
  • 常用基础项:
    • local_enable=YES(允许本地用户登录)
    • write_enable=YES(允许写入)
    • chroot_local_user=YES(将用户限制在其主目录)
    • allow_writeable_chroot=YES(允许 chroot 目录可写)
  • 被动模式端口范围(需与防火墙放行范围一致):
    • pasv_enable=YES
    • pasv_min_port=30000
    • pasv_max_port=31000
  • 可选加密(FTPS):
    • ssl_enable=YES
    • rsa_cert_file=/etc/ssl/private/vsftpd.crt
    • rsa_private_key_file=/etc/ssl/private/vsftpd.key
  • 应用配置:sudo systemctl restart vsftpd;用 FileZilla 测试 PASV 连接与传输。

五 验证与排错

  • 防火墙状态与规则核对:
    • UFW:sudo ufw status verbose(确认 21/tcp 与被动端口范围已放行)。
    • iptables:sudo iptables -L -n -v(确认对应 ACCEPT 规则命中计数增长)。
  • 连接测试:
    • 主动模式:客户端使用 PORT 命令;服务器应能从 20/tcp 连回客户端高端口。
    • 被动模式:客户端使用 PASV;服务器应在配置的 30000–31000 范围内分配端口并放行。
  • 常见症状与处理:
    • 能登录但列目录/传输卡住:多为被动端口未放行或 vsftpd 的 pasv_min_port/pasv_max_port 与防火墙不一致。
    • 客户端报“无法建立数据连接”:检查云安全组/本机防火墙、客户端所在网络对高端口或服务器 20/tcp 出站的限制。
    • 启用 FTPS 后握手失败:确认证书路径、权限与客户端使用“FTP over TLS”模式。

0