【iptables】iptables扩展模块之state扩展

您所在的位置:网站首页 iptables详解图书推荐 【iptables】iptables扩展模块之state扩展

【iptables】iptables扩展模块之state扩展

2024-06-21 13:16| 来源: 网络整理| 查看: 265

关于Linux中的包过滤和iptables的用户态状态(User-land states)的一个教程。

Linux包过滤和iptables

Linux系统中的iptables是一个用于配置网络流量控制的工具,它允许系统管理员定义规则来接受、拒绝或转发经过Linux主机的网络流量。 iptables工作在内核层面,利用conntrack模块来跟踪网络连接的状态。这些状态有助于管理员更细致地控制网络流量,提高系统的安全性。

用户态状态(User-land states)

用户态状态是指在内核之外,iptables可以使用的四种状态,主要用于匹配基于当前连接跟踪状态的数据包。这些状态包括:

NEW:表示数据包是conntrack模块首次看到的数据包。例如,如果我们看到了一个SYN数据包,并且它是我们首次看到的特定连接中的第一个数据包,那么它将被匹配为NEW状态。这个状态可以用来接管其他防火墙丢失的连接,或者在连接已经超时但实际上并未关闭时,帮助我们重新建立连接。

ESTABLISHED:表示已经看到了双向流量的数据包。要进入ESTABLISHED状态,一个主机必须发送一个数据包,并从另一个主机收到回复。当防火墙收到回复数据包时,NEW状态将转变为ESTABLISHED状态。如果我们创建了一个数据包并由此产生了一个ICMP回复消息,那么这个ICMP回复也可以被视为ESTABLISHED状态。

RELATED:这是一个较为复杂的状态。当一个连接与另一个已经处于ESTABLISHED状态的连接相关时,它被认为是RELATED。这意味着,要被认为是RELATED,首先必须有一个ESTABLISHED的连接。然后,ESTABLISHED连接将生成一个主连接之外的新连接。如果conntrack模块能够理解这个新连接是RELATED的,那么它将被标记为RELATED状态。例如,FTP数据连接被认为是与FTP控制端口相关的,IRC发出的DCC连接也是如此。这个状态可以用来允许ICMP错误消息、FTP传输和DCC通过防火墙正常工作。需要注意的是,大多数TCP协议和一些UDP协议依赖于这种机制,它们在TCP或UDP数据段的有效载荷中发送连接信息,因此需要特殊的辅助模块来正确理解。

INVALID:表示数据包无法被识别或者没有任何状态。这可能是由于多种原因,例如系统内存不足或ICMP错误消息不响应任何已知连接。通常,对于这个状态下的数据包,最好的做法是全部拒绝(DROP)。

总结

通过使用--state匹配选项,我们可以基于数据包的连接跟踪状态来匹配数据包。这使得状态机对于我们的防火墙来说非常强大和高效。在过去,我们通常需要打开所有高于1024的端口以允许所有流量返回到我们的本地网络。现在有了状态机,我们不再需要这样做,因为我们只需要为返回流量开放防火墙,而不是为其他类型的流量开放。

参考

iptables扩展模块之state扩展 https://www.zsythink.net/archives/1597

Linux Packet Filtering and iptables https://www.linuxtopia.org/Linux_Firewall_iptables/x1347.html



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3