00:00:40.283608 IP (tos 0x0, ttl 116, id 49680, offset 0, flags [none], proto UDP (17), length 32)
ip > ip: UDP, length 4
0x0000: 4500 0020 c21a 0000 6f11 1a1e 902b 4cdb E.......o....+L.
0x0010: ------ 000c c12f 0870 ac49 .....0.(.../.p.I
0x0020: 0000 0000 0000 0000 0000 **2664 94d4** ..........&d..
如何使用 iptables 丢弃“2664 94d4”这个数据包?
-I INPUT -p udp --dport 7777 -m string --algo bm --from 28 --hex-string 266494d4 -j DROP
不起作用。
答案1
iptables 不过滤这些字节是有道理的,因为它们不是 IP 数据包的一部分。
该数据包比以太网的最小帧长度短。因此需要 14 个字节的填充才能形成有效的以太网帧。序列0000 0000 0000 0000 0000 2664 94d4
是填充。在 iptables 开始过滤数据包之前,将这部分从数据包中剥离出来似乎是合理的。
UDP 有效负载只有 4 个字节,正如您的输出所示。有效负载是0870 ac49
。
我不确定标准是否指定了如何填充以太网帧。我原本以为填充内容都是 NUL 字节。但填充的最后四个字节不是 NUL。发送该以太网帧的设备可能确实存在信息泄露。