iptables:NEW,ESTABLISHED和RELATED数据包之间的区别

服务器上防火墙的一部分:

iptables -A INPUT -p tcp --dport 22 -m state NEW --state -m recent --set iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 100 --hitcount 10 -j DROP 

当我在网上search时,我总是看到新的规则,但我很难理解为什么ESTABLISHED和RELATED没有被使用。

喜欢这个 :

 iptables -A INPUT -p tcp --dport 22 -m state NEW,ESTABLISHED,RELATED --state -m recent --set iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED,RELATED -m recent --update --seconds 100 --hitcount 10 -j DROP 

有人可以向我解释何时一个新数据变成ESTABLISHED和RELATED?

    在接收器拿起之前,考虑一个新的数据包电话。 ESTABLISHED包是他们的“你好”。 而且,如果您打电话告诉他们有关您要发送的电子邮件,则会收到RELATED包。 (电子邮件正在RELATED。)

    如果我的比喻不是那么好,我个人认为手册页处理得很好:

    新 – 意味着数据包已经开始了一个新的连接,或者是与一个没有在两个方向上看到数据包的连接有关

    ESTABLISHED – 表示数据包与在两个方向上都看到数据包的连接相关联,

    相关 – 意味着数据包正在启动一个新的连接,但与现有的连接相关联,如FTP数据传输或ICMP错误。

    iptables(8) – Linux手册页

    为服务器和客户端定义一个限制性的INPUT和打开的OUTPUT ,即:

     iptables -P INPUT DROP iptables -P OUTPUT ACCEPT 

    从iptables-extensions(8)的例子来看FTP处于主动模式:

    1.新

    NEW数据包已经启动了一个新的连接,或者与一个连接没有在两个方向上看到数据包相关联。

    端口50000上的客户端(任意随机非特权端口)通过端口21连接到FTP服务器,服务器至less需要接受此传入连接:

     iptables -A INPUT --dport 21 -m state --state NEW -j ACCEPT 

    2.build立

    ESTABLISHED数据包与在两个方向上看到数据包的连接相关联。

    现在在客户端,他使用本地端口50000在端口21上打开了到服务器的出站连接,并且他需要以下iptables以允许从server (21)client (50000)的响应:

     sudo iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT 

    3.相关

    相关数据包正在启动一个新的连接,但与现有的连接相关联,如FTP数据传输或ICMP错误。

    现在FTP连接build立好后,即将进行数据连接,客户端将在端口60000上打开一个服务器套接字(是的,主动FTP客户端成为数据连接的服务器)端口6000050000->21的其他连接RELATED ),并使用FTP PORT命令将此端口号发送到服务器。 然后,FTP服务器将在客户端上从端口20到端口60000打开一个新连接,而且,客户端现在需要以下方面来允许此新连接成功:

     sudo iptables -A INPUT -m state --state RELATED -j ACCEPT 

    最后,为了这个工作,你需要启用ip_conntrack_ftp内核模块,以允许系统将连接/包标记为RELATED (这是我的理解,我还没有深入这个):

     modprobe ip_conntrack_ftp