IPTables如何阻止特定的UDP数据包?

时间:2012-03-02 05:22:10

标签: linux udp iptables centos5 netfilter

我想知道是否可以在IPTables中阻止这个特定的数据包?

IP (tos 0x0, ttl 122, id 59478, offset 0, flags [none], proto: **UDP** (17), **length: 32**) 49.125.39.7.53125 > 68.68.27.40.34535: UDP, **length 0**
    0x0000:  4500 0020 e856 0000 7a11 a086 317d 2707  E....V..z...1}'.
    0x0010:  4444 1b28 cf85 86e7 0008 0000 0000 0000  DD.(............
    0x0020:  0000 0000 0000 0000 0000 0000 0000

IP (tos 0x0, ttl  43, id 42852, offset 0, flags [none], proto: UDP (17), length: 32) 15.205.231.92.63002 > 68.68.27.40.18287: UDP, length 0
    0x0000:  4500 0020 a764 0000 2b11 91d3 0fcd e75c  E....d..+......\
    0x0010:  4444 1b28 f61a 476f 0008 0000 0000 0000  DD.(..Go........
    0x0020:  0000 0000 0000 0000 0000 0000 0000     

这是一种欺骗性的DoS攻击,随机源IP到随机目标端口,耗尽了我们服务器应用程序所需的udp端口。我想根据tcp转储的突出显示部分阻塞数据包,即UDP长度:32 +长度为0。这可能吗?

或者是否可以通过转储中的十六进制字符串来阻止数据包?

谢天谢地, 弗洛伊德

1 个答案:

答案 0 :(得分:0)

IPTables有一个u32模块,用于测试从数据包中提取的最多4个字节的数量是否具有指定值。 您可能能够测试数据包是否是DoS attachek。 以下是一个例子:

iptables -A INPUT -j DROP -m u32 --u32 "16 & 0xFFFF = 0x4444"

请参阅manpage of iptables(您应该在您的环境中使用man iptables)以获取更多详细信息。