如何通过 iptables 丢弃虚假的 tcp 数据包?

如何通过 iptables 丢弃虚假的 tcp 数据包?

我们看到了此处描述的问题 -http://archives.neohapsis.com/archives/bugtraq/2002-10/0266.html

简而言之,我们需要丢弃虚假数据包,例如设置了 SYN+FIN 标志的数据包。我可以通过添加规则来丢弃这个特定的数据包-

iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

现在可能会有更多标志组合。那么我应该添加所有标志还是有更好的方法?

答案1

丢弃虚假数据包的最佳时机是数据包尚未被跟踪时,因此在“原始”表中。或者,更准确地说:-t raw -A PREROUTING

查看以下社区 Wiki:iptables 技巧和窍门由我本人提供。其中一个“答案”已经包含一组丢弃虚假数据包的规则。

答案2

如果您使用以下连接跟踪,我建议丢弃所有无效数据包: iptables -A FORWARD -m state --state INVALID -m comment --comment "DROP INVALID" -j DROP

你也可以看到: -A FORWARD -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -m comment --comment "Bad TCP Packet" -j DROP -A FORWARD -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -m comment --comment "Bad TCP Packet" -j DROP -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -m comment --comment "Bad TCP Packet" -j DROP -A FORWARD -p tcp -m tcp --tcp-flags FIN,RST FIN,RST -m comment --comment "Bad TCP Packet" -j DROP -A FORWARD -p tcp -m tcp --tcp-flags FIN,ACK FIN -m comment --comment "Bad TCP Packet" -j DROP -A FORWARD -p tcp -m tcp --tcp-flags ACK,URG URG -m comment --comment "Bad TCP Packet" -j DROP

相关内容