Linux 在低级别阻止 UDP 以抵御 DDOS

Linux 在低级别阻止 UDP 以抵御 DDOS

我的服务器目前正遭受 DDOS 攻击,每秒有近 500k 个 UDP 数据包。

UDP 在 iptables 中被阻止,但处理器仍然超载。

有没有办法在较低级别阻止 UDP,以便不将数据包传递到所有 iptables 链/模块,而是在之前将其丢弃?

答案1

最早可能丢弃数据包的点是 iptablesraw表,如下图所示https://unix.stackexchange.com/questions/243079/netfilter-iptables-why-not-using-the-raw-table

您可以PREROUTING像这样在链中丢弃数据包:

iptables -t raw -A PREROUTING -p udp -j DROP

但是,使用这种方法,您也会丢失服务器发起的请求的 DNS 响应,因为表的处理raw发生在连接跟踪之前。

您可以像这样添加允许的 UDP 主机:

iptables -t raw -A PREROUTING -p udp -s !nnn.nnn.nnn.nnn -j DROP

其中nnn.nnn.nnn.nnn是您想要接收 UDP 流量的主机的 IP 地址。

根据服务器的不同,在连接跟踪之前禁用 UDP 流量还可能产生其他后果。

相关内容