使用iptables防止udp泛滥

我想防止udp泛滥,所以我认为如果我放弃所有udps不来自内部networking,不涉及到udp连接,我可以防止udp泛滥。 换句话说,如果只有来自内部networkingudps,也来自外部networkingudps,但不是第一个,并与udp连接接受和其他人下降udp泛滥不会发生,我认为这个iptable代码,我写能行得通

# accept any packet that's a response to anything we sent iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p udp -s 8.8.8.0/24 -j ACCEPT iptables -A INPUT -p udp -j DROP 

8.8.8.0/24是我内部networking的地址。 你认为这是真的吗? 我的代码是真的?

即使你的iptables语句是正确的,你也不会有太大的成就。

UDP是无状态的。 这意味着我可以发送任意大的UDP数据包到您的服务器。 如果在目标UDP端口上没有进程侦听,这些数据包将被内核DROP 。 交通仍然通过互联网,并打你的调制解调器/ demarc。

使用UDP丢弃的唯一防止措施是防止与正在运行的服务相关的端口泛滥。 EG:我可以制作大量的DNS数据包,并通过UDP将它们发送给您的DNS服务器的端口。 服务器将大概ACCEPT这些数据包并尝试处理它们。 正是这个处理阻止了MIGHT的帮助。

如果你试图阻止任意的UDP数据包,你将会遇到不好的时间。 DHCP,DNS,RPC,NFS,NTP等…大量重要的networking协议通过UDP运行。 这些将需要被允许。


我build议你再看看你的networking。 如果您遇到UDP泛滥问题,可以查看确切的原因,然后解决可能的解决scheme。

如果您正在充斥大量的UDP数据包,而这些数据包正在填充您的上行带宽,那么您就可以获得更多的带宽或DDoS保护。

如果某些应用程序由于洪水而导致行为exception,请考虑修复该应用程序,使用更好的应用程序,或者使用某种第7层防火墙来预先筛选数据包。

最后,如果你只是认为阻止UDP flooding是一个好主意,因为….? …? 这可能不是。 除非你有一个特定的UDP洪水问题,否则它可能会比解决它更多。