使用 iptables 丢弃第一个数据包

使用 iptables 丢弃第一个数据包

我们的服务器正在遭受 UDP 洪水欺骗 IP 攻击。我认为,我们可以使用 iptables 解决这个问题,我想用 iptables 制定规则。

当一个 ip 尝试发送 udp 数据包时,iptables 将阻止此数据包。在第一个数据包发送后 10 秒内,其他数据包将被接受。

我如何使用 iptables 来实现这个功能?

答案1

尝试

iptables -A INPUT -p udp [--dport 12345] -m recent --name attack --set
iptables -A INPUT -p udp [--dport 12345] -m recent --name attack --rcheck --seconds 10 --hitcount 2 -j ACCEPT
iptables -A INPUT -p udp [--dport 12345] -j DROP

这应该允许在连续十秒的窗口中从任何给定地址发送第二个和后续数据包;其他数据包将被丢弃。像往常一样,将它们放在现有规则集中的正确位置既至关重要,也是您的问题。如果您没有通过端口限制这一点,请确保您没有锁定 DNS 响应(以及您可能认为可取的其他基于 udp 的响应)。

相关内容