检查损坏的 TCP 数据包还有用吗?

检查损坏的 TCP 数据包还有用吗?

我经常看到 iptables 的 IPv4 规则示例,这些规则用于阻止被视为无效或损坏的 TCP 数据包。某些 TCP 标志组合不应使用。

以下是 4 条此类规则的示例:

-A INPUT -i eth0 -p tcp -m tcp --tcp-flags ALL ACK
-A INPUT -i eth0 -p tcp -m tcp --tcp-flags ALL RST
-A INPUT -i eth0 -p tcp -m tcp --tcp-flags ALL ACK,FIN
-A INPUT -i eth0 -p tcp -m tcp --tcp-flags ALL ACK,PSH

我用这些来查看我收到了多少个这样的无效数据包(即注意到缺少目标,没有-j DROP)。

如果我将其插入到 INPUT 表的最开始处,我会看到大量此类错误。

当我将它们插入到ESTABLISHED,RELATED规则之后时:

-A INPUT -p tcp -m state --state ESTABLISHED,RELATED -m tcp ! --syn -j ACCEPT

我没有看到任何错误......这意味着那些破碎的TCP 数据包正在被发送到客户端所连接的服务。

我认为阻止这种行为是毫无意义的/不必要的。特别是,INVALID无论如何我都会首先使用状态:

-A INPUT -m state --state INVALID -j DROP

我想这足以消除非常危险的数据包

关于这 4 条规则的共识是什么破碎的TCP 数据包?

相关内容