是我的TPS TPS的iptables好吗?

我已经尝试谷歌周围获得我的FTPS与TLS(proftpd)iptables killswitch我现在有工作(见https://www.reddit.com/r/linuxquestions/comments/57mga5/is_my_iptables_killswitch_working_have_some_p/ ) 。

我使用FTPS的端口10210和无源端口的60100-60119,这个stream量不通过VPN。 我已经拿出了这个(他们在最后一个下降线上):

# Allow traffic via TLS FTPS iptables -A INPUT -p tcp -m tcp --dport 10210 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT # It seems to be working without the line under #iptables -A INPUT -p tcp -m tcp --dport 20 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT iptables -A INPUT -p tcp -m tcp --sport 10210:60119 --dport 60100:60119 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT iptables -A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT iptables -A INPUT -j REJECT --reject-with icmp-port-unreachable iptables -A OUTPUT -p tcp -m tcp --dport 10210 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT # It seems to be working without the line under #iptables -A OUTPUT -p tcp -m tcp --dport 20 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp -m tcp --sport 10210:60119 --dport 10210:60119 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT 

它似乎工作,但由于我是一个iptables noob,我想知道我做错了什么(我可能有;),不知道的端口范围,也许它是打开的?)

编辑我有连接问题,所以我已经改变了这个更好的工作

 -A INPUT -p tcp -m tcp --dport 10210 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT -A INPUT -p tcp -m tcp --sport 10210 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT -A INPUT -p tcp -m tcp --dport 60100:60119 -j ACCEPT -A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT -A OUTPUT -p tcp -m tcp --dport 10210 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT -A OUTPUT -p tcp -m tcp --sport 10210 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT -A OUTPUT -p tcp -m tcp --dport 60100:60119 -j ACCEPT -A OUTPUT -p tcp -m tcp --sport 60100:60119 -j ACCEPT 

稍后,在阅读http://ipset.netfilter.org/iptables-extensions.man.html之后 ,尝试使用此代替上述端口范围

 iptables -A INPUT -p tcp --dport 60100:60119 -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -p tcp --dport 60100:60119 -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -p tcp --sport 60100:60119 -m conntrack --ctstate NEW,ESTABLISHED,RELATED-j ACCEPT 

并删除-A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT并且我不知道我是否也应该删除-m conntrack --ctstate NEW,ESTABLISHED为10210,因为它是FTPS的input端口?

OUTPUT部分仅用于从服务器发起的连接,根本不影响从客户端发起的连接。 通常情况下, 输出 不被过滤 ,除非你有特殊要求阻止传出。

INPUT是您应该过滤的部分。

ESTABLISHEDRELATED部分用于连接,已经启动并且应该继续工作(即像握手后的TCP一样)并且通常比其他规则更高的匹配。

我们可以分成三种types的FTP连接:

  1. 主动FTP(普通)
  2. 被动FTP(普通)
  3. FTP与SSL(任何encryption)

在主动FTP的情况下,你需要打开传入的TCP 20和TCP 21端口,这种types的连接很less使用,即从客户端发起两个连接。

在被动FTP情况更糟糕的情况下,被动FTP使用TCP 21端口作为命令,任意连接使用RANDOM TCP端口进行数据传输,该端口将在服务器的FTP响应中指定,因此,防火墙必须“监听” FTPstream量,这需要对数据包进行更深入的检查,然后dynamic地打开端口 – 这是正常情况。 在这种情况下,使用FTP连接跟踪助手/内核模块,并解决了这个问题 – 你只需要打开TCP端口21。

在SSL的情况下 – 它甚至更疯狂,因为关于RANDOM端口的数据也被encryption,并且防火墙无法猜测要打开哪个端口,在这种情况下,一些球员指定FTP服务器configuration中的随机端口的数量并打开所有这些端口防火墙。

通常过滤表的规则顺序通常是这样的:

 *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m conntrack --ctstate NEW -m tcp -m multiport --dports 22,80,443 -j ACCEPT -A INPUT -i eth1 -p tcp -m conntrack --ctstate NEW -m tcp -m multiport --dports 22,53,80,1234 -j ACCEPT -A INPUT -i eth1 -p udp -m conntrack --ctstate NEW -m udp -m multiport --dports 53,67,123 -j ACCEPT COMMIT 

对于SSL,您可能会在某处添加以下规则

 -A INPUT -p tcp -m conntrack --ctstate NEW -m tcp -m multiport --dports 21,15000:15050 -j ACCEPT