温馨提示×

VSFTP在CentOS上的防火墙配置指南

小樊
48
2025-11-15 18:56:46
栏目: 智能运维

VSFTP在CentOS上的防火墙配置指南

一 环境判断与准备

  • 确认系统版本与防火墙类型:
    • CentOS 6 通常使用 iptables;CentOS 7/8/9 使用 firewalld
    • 查看防火墙状态:systemctl status firewalld(若未运行,说明可能是 iptables 环境)。
  • 启动并启用 VSFTPD:
    • systemctl start vsftpd && systemctl enable vsftpd
  • 备份配置文件:
    • cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
  • 说明:FTP 有 主动模式(PORT)被动模式(PASV)。主动模式由客户端开数据端口、服务器用 20/tcp 连接;被动模式由服务器开一段数据端口范围供客户端连接。多数客户端与 NAT/云环境更推荐 PASV。

二 使用 firewalld 的配置(CentOS 7/8/9)

  • 方式A 快速放行内置 FTP 服务(推荐)
    • 开放 FTP 服务并永久生效:firewall-cmd --permanent --add-service=ftp
    • 重载防火墙:firewall-cmd --reload
    • 说明:该方式由 firewalld 内置 FTP 帮助模块动态放行数据通道,适合大多数场景。
  • 方式B 手动放行控制端口与被动端口范围
    • 放行控制端口:firewall-cmd --permanent --add-port=21/tcp
    • 放行被动端口范围(示例为 10060–10070/tcp,请与 vsftpd 配置保持一致):firewall-cmd --permanent --add-port=10060-10070/tcp
    • 重载防火墙:firewall-cmd --reload
    • 验证:firewall-cmd --list-portsfirewall-cmd --list-services | grep ftp
    • 提示:若使用大范围端口(如 49152–65535/tcp),请确保与 VSFTPD 的 pasv_min_port/pasv_max_port 一致。

三 使用 iptables 的配置(CentOS 6 或手动管理 iptables 的环境)

  • 放行控制端口 21/tcp
    • iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
  • 放行被动端口范围(示例为 10060–10070/tcp,需与 VSFTPD 一致):
    • iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 10060:10070 -j ACCEPT
  • 保存并重启:
    • 保存:service iptables save(或 iptables-save > /etc/sysconfig/iptables
    • 重启:service iptables restart
  • 验证:iptables -L -n | grep -E 'dpt:(21|10060|10070)'

四 VSFTPD 与防火墙联动的关键配置

  • 启用被动模式并限定端口范围(示例为 10060–10070):
    • pasv_enable=YES
    • pasv_min_port=10060
    • pasv_max_port=10070
  • 如需更改默认控制端口(示例改为 2021/tcp):
    • 防火墙放行新端口(firewalld):firewall-cmd --permanent --add-port=2021/tcp && firewall-cmd --reload
    • 如系统启用 SELinux,需将新端口加入 SELinux 的 ftp_port_t 类型:
      • 安装工具:yum install -y policycoreutils-python-utils
      • 添加端口:semanage port -a -t ftp_port_t -p tcp 2021
    • 修改 VSFTPD 配置:listen_port=2021
  • 重启服务:systemctl restart vsftpd

五 验证与常见问题处理

  • 连通性验证
    • 查看监听:ss -tnlp | grep :21netstat -antup | grep ftp
    • 客户端连接:使用 FileZilla 或命令行 ftp your_ip,在客户端选择 被动模式(PASV) 测试列目录与传输。
  • 常见错误与处理
    • 530 Login incorrect:检查用户名/密码、PAM 与 vsftpd.conf 的本地用户/匿名设置。
    • 无法列目录或传输失败:核对 PASV 端口范围已在防火墙放行,且与 pasv_min_port/pasv_max_port 一致;必要时改用更通用的端口段(如 49152–65535/tcp)。
    • SELinux 拒绝:按需开启布尔值(如 setsebool -P allow_ftpd_full_access 1),或将自定义端口加入 ftp_port_t 后再测试。

0