这是我正在处理的规则:
iptables -A QUERY -p udp -m length --length 24:63 -m udp -m string --algo bm --hex-string '|ffffffff|' --from 12 --to 28 -j QUERYLIMIT
有没有办法检查只有UDP有效载荷,而不是处理整个头? 该规则的问题是标题大小可能会改变。
我知道-m u32 …是处理它的唯一方法吗?
通过iptables
手册页,它看起来像我-m u32
确实是你最好的select,如果你想使用纯粹的iptables。 是在负载的某个位置匹配的东西,还是真的需要-m string
的有效载荷版本?
如果你有一些编程能力,你也可以看一下QUEUE
目标,它将数据包传递给用户空间守护进程进行过滤。 以下是使用PerlvalidationDNS数据包的示例QUEUE表使用情况 。 请注意,这不会很快,特别是如果您使用Perl或其他脚本语言。 如果你想使用C,库看看是libnetfilter_queue 。
我还注意到,你现在的规则是从第12个字节开始的,它把它定位在检查IP头中的源地址和目的地址。 我不知道这是否正确,但是如果用有效载荷规则replace规则,请记住这一点。