我需要一条规则来匹配没有设置选项和/或设置特定窗口接收大小的数据包:
IP (tos 0x0、ttl 66、id 9000、偏移量 0、标志 [无]、proto TCP (6)、长度 40) yyyy11111 > xxxxhttp:标志 [S]、cksum 0xe425 (正确)、seq 1729214256、win 715、长度 0
因此,这个数据包有 win 715,标志 [none] -> 我该如何匹配这样的数据包?
答案1
谢谢您的回答,但我认为我找到了最好的解决方案(速度最好):
iptables -I INPUT -m u32 --u32 "6&0xFF=0x6 && 0>>22&0x3C@12&0xFFFF=0x02CB" -j LOG
上面的代码确保这是一个 TCP 数据包,然后找到 IP 长度并将其采用(还有两个字节提取)到需要比较的字节(示例中为 715)。总之,每个人都可以使用出色的模块 -> u32 提取/查找/比较数据包中的每个位/字节。更多信息:iptables-u32.v0.1
答案2
Iptables 具有处理 TCP 标志和 TCP 选项的选项,即--tcp-option number
和--tcp-flags
。
对于窗口大小,您可以使用带有选项的字符串模块:--hex-string pattern
。因此,选项将适合您的情况。要获得准确的结果,您应该使用和来--hex-string 02CB
限制搜索偏移量。看看--from
--to
iptables 手册了解更多信息。