首页主机资讯CentOS FTP Server防火墙设置技巧

CentOS FTP Server防火墙设置技巧

时间2025-11-14 13:40:03发布访客分类主机资讯浏览213
导读:CentOS FTP Server 防火墙设置技巧 一、先理清协议与端口 FTP 有主动模式与被动模式之分,控制通道固定为21/TCP;主动模式的数据通道由服务器从20/TCP主动连客户端高位端口,被动模式则由服务器在配置的端口范围内监听...

CentOS FTP Server 防火墙设置技巧

一、先理清协议与端口

  • FTP 有主动模式被动模式之分,控制通道固定为21/TCP;主动模式的数据通道由服务器从20/TCP主动连客户端高位端口,被动模式则由服务器在配置的端口范围内监听,客户端来连。为减少与防火墙/NAT的冲突,生产环境通常启用被动模式并限定端口范围。若使用加密的FTPS(基于 SSL/TLS),除21/TCP外,常见控制端口还有990/TCP;数据通道仍使用被动端口范围。若改用非标准控制端口(如2121/TCP),需同步调整防火墙放行规则。

二、firewalld 推荐做法

  • 放行控制通道与被动端口范围(示例将被动端口限定为5000–5500/TCP):
    1. 启动并持久化防火墙
      • systemctl start firewalld & & systemctl enable firewalld
    2. 放行 FTP 控制与被动端口
      • firewall-cmd --permanent --add-service=ftp
      • firewall-cmd --permanent --add-port=5000-5500/tcp
      • firewall-cmd --reload
    3. 仅允许指定来源访问(示例仅放行192.168.1.100
      • firewall-cmd --permanent --add-rich-rule=‘rule family=“ipv4” source address=“192.168.1.100” port port=“21” protocol=“tcp” accept’
      • firewall-cmd --permanent --add-rich-rule=‘rule family=“ipv4” source address=“192.168.1.100” port port=“5000-5500” protocol=“tcp” accept’
      • firewall-cmd --reload
    4. 验证
      • firewall-cmd --list-ports
      • firewall-cmd --list-rich-rules
  • 使用 FTPS 时,按需放行990/TCP(若你的配置使用隐式 FTPS 控制端口为 990):firewall-cmd --permanent --add-port=990/tcp & & firewall-cmd --reload。以上命令中的端口与来源地址请按实际环境调整。

三、使用 iptables 的做法(不使用 firewalld 时)

  • 放行控制端口与被动端口范围(示例范围5000–5500/TCP):
    • iptables -A INPUT -p tcp --dport 21 -j ACCEPT
    • iptables -A INPUT -p tcp --dport 5000:5500 -j ACCEPT
    • service iptables save & & service iptables restart
  • 主动模式需要放行服务器侧20/TCP出站建立数据连接,并确保有状态跟踪以允许已建立的会话返回:
    • iptables -A INPUT -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
    • iptables -A OUTPUT -p tcp --dport 20 -m state --state NEW,ESTABLISHED -j ACCEPT
  • 为让内核 FTP 连接跟踪模块处理被动模式协商,加载ip_conntrack_ftp模块(不同发行版路径可能不同):
    • 在 RHEL/CentOS 6 的 /etc/sysconfig/iptables-config 中加入:IPTABLES_MODULES=“ip_conntrack_ftp”
    • 或执行:modprobe ip_conntrack_ftp
  • 保存并重启规则后测试连接。注意:主动模式在复杂 NAT/防火墙环境下更易受阻,优先建议使用被动模式并限定端口范围。

四、vsftpd 与 SELinux 的配合要点

  • 在 /etc/vsftpd/vsftpd.conf 中启用被动模式并限定端口范围(示例5000–5500):
    • pasv_enable=YES
    • pasv_min_port=5000
    • pasv_max_port=5500
    • pasv_address=服务器公网IP(如存在 NAT,建议显式指定)
  • 若启用 FTPS,增加:
    • ssl_enable=YES
    • allow_anon_ssl=NO
    • force_local_data_ssl=YES
    • force_local_logins_ssl=YES
    • rsa_cert_file=/etc/pki/tls/certs/your_cert.crt
    • rsa_private_key_file=/etc/pki/tls/private/your_key.key
  • SELinux 处于 enforcing 模式时,按需开启布尔值以允许家目录访问与完整 FTP 访问:
    • setsebool -P ftp_home_dir on
    • setsebool -P allow_ftpd_full_access on
  • 修改配置后重启服务:systemctl restart vsftpd;日志可查看 /var/log/vsftpd.log 与 /var/log/messages 以排错。

五、安全加固与排错清单

  • 安全建议
    • 禁用匿名访问(anonymous_enable=NO),仅开放必要端口,避免使用过大的被动端口范围;必要时仅对受控来源放行(firewalld rich rule)。
    • 启用SSL/TLS加密(vsftpd 的 ssl_enable/force_ssl 系列选项),保护凭据与数据在传输过程中的安全。
    • 考虑更安全的替代方案SFTP(基于 SSH,单一端口、穿透性强),在条件允许时优先采用。
  • 快速排错
    • 使用 ftp your_server_ip 或 FileZilla 测试登录、列目录与传输;若仅能登录但列目录/传输失败,多为被动端口未放行或 NAT 未正确设置 pasv_address。
    • 查看服务与防火墙状态:systemctl status vsftpd、firewall-cmd --list-all;核对 vsftpd 配置中的 pasv_min_port/pasv_max_port 与防火墙放行是否一致。
    • SELinux 问题可用 getsebool -a | grep ftp 检查相关布尔值,必要时按上文开启;日志路径为 /var/log/vsftpd.log 与 /var/log/messages。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: CentOS FTP Server防火墙设置技巧
本文地址: https://pptw.com/jishu/747981.html
如何在CentOS FTP Server上安装插件 CentOS FTP Server数据同步方法

游客 回复需填写必要信息