【问题标题】:Appropriate iptables rules for an FTP server in active \ passive mode主动\被动模式下 FTP 服务器的适当 iptables 规则
【发布时间】:2014-12-26 20:40:45
【问题描述】:

我在 CentOS6 上安装了 ProFTPD 服务器。 如果我使 ftp localhost,我可以正确连接,但如果我从外部尝试,我会收到消息“没有到主机的路由”。但是有一条主机路由,因为我是通过 SSH 连接的。

我尝试添加以下 iptable 规则:

iptables -A INPUT  -p tcp -m tcp --dport 21 -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 21"
iptables -A OUTPUT -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 21"

iptables -A INPUT  -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -m comment --comment "Allow ftp connections on port 20"
iptables -A OUTPUT -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 20"

iptables -A INPUT  -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow passive inbound connections"
iptables -A OUTPUT -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -m comment --comment "Allow passive inbound connections"

并重新启动 proftpd 和 iptables 服务。 我该怎么做才能解决这个问题?

【问题讨论】:

    标签: linux ftp iptables centos6 proftpd


    【解决方案1】:

    为了允许 FTP,您需要在服务器上设置以下规则:

    1. 允许客户端发起到21端口的控制连接,如下:

      iptables -A INPUT  -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 21"
      iptables -A OUTPUT -p tcp -m tcp --sport 21 -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 21"
      
    2. 对于主动模式,允许服务器从20端口发起数据连接,如下:

      iptables -A OUTPUT -p tcp -m tcp --sport 20 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 20"
      iptables -A INPUT  -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 20"
      
    3. 对于被动模式,允许客户端在非特权端口上发起数据连接:

      iptables -A INPUT -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -m comment --comment "Allow passive inbound connections"
      iptables -A OUTPUT -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow passive inbound connections"
      

    RELATED 数据连接在主动模式下建立时,普通的conntrack 模块应该正确跟踪,但是当此类连接在被动模式下建立时,您可能需要加载nf_conntrack_ftp 模块才能正确跟踪:

    • 检查是否加载了lsmod | grep nf_conntrack_ftp
    • modprobe nf_conntrack_ftp加载它。

    或者,您可以将RELATED 状态替换为NEW 状态,这种状态不太安全,但肯定可以完成工作。

    This link 简要总结了上述规则的基本原理。

    【讨论】:

      猜你喜欢
      • 2014-01-14
      • 2012-05-11
      • 1970-01-01
      • 2019-12-14
      • 2022-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-18
      相关资源
      最近更新 更多