我们看到了此处描述的问题 -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