我的服务器目前正遭受 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 流量还可能产生其他后果。