![我需要通过 srcip 拒绝第一个传入的 UDP 数据包](https://linux22.com/image/665891/%E6%88%91%E9%9C%80%E8%A6%81%E9%80%9A%E8%BF%87%20srcip%20%E6%8B%92%E7%BB%9D%E7%AC%AC%E4%B8%80%E4%B8%AA%E4%BC%A0%E5%85%A5%E7%9A%84%20UDP%20%E6%95%B0%E6%8D%AE%E5%8C%85.png)
我目前正受到欺骗性 UDP 数据包的攻击。每个欺骗性 IP 都试图在 30 秒内仅发送 1 个 UDP 数据包。但是有大量 IP。
我需要丢弃第一个数据包。但如果同一源在 30 秒内发送另一个数据包,我想接受它。
-A INPUT -d <myip> -p udp --dport <myport> -m hashlimit --hashlimit-upto 1/min --hashlimit-mode srcip --hashlimit-name mmmm -j DROP
尝试过这个但是没有帮助..
答案1
如上所述。可能“最近”是您的最佳选择。根据需要进行调整:
iptables -N SPOOF
iptables -A SPOOF -m recent --rcheck --seconds 30 -j ACCEPT
iptables -A SPOOF -m recent --set -j DROP
iptables -A INPUT -p udp --dport <myport> -j SPOOF
这将创建一个新的表“SPOOF”,并向其发送匹配的传入 UDP 数据包。如果该主机在过去 30 秒内发送了数据包,则该数据包将被接受,否则将其丢弃。