我不确定是否可以丢弃带有十六进制字符串匹配的数据包 syn ack 洪水,有人可以帮助我并告诉我如何做到这一点吗?
17:03:10.274551 IP (tos 0x0, ttl 89, id 6656, offset 0, flags [DF], proto TCP (6), length 52)
94.73.253.181.57383 > 104.194.219.130.6410: Flags [.], cksum 0x100e (correct), seq 0, ack 1, win 131, options [nop,nop,TS val 125819447 ecr 1772061023], length 0
0x0000: 0016 3e40 883e 8071 1fe7 0981 0800 4500
0x0010: 0034 1a00 4000 5906 6780 5e49 fdb5 68c2
0x0020: db82 e027 190a 0000 0000 0000 0001 8010
0x0030: 0083 100e 0000 0101 080a 077f da37 699f
0x0040: 815f
17:03:10.274812 IP (tos 0x0, ttl 88, id 5731, offset 0, flags [DF], proto TCP (6), length 52)
11.200.80.242.55382 > 104.194.219.130.28238: Flags [.], cksum 0xf466 (correct), seq 0, ack 1, win 16616, options [nop,nop,TS val 125819432 ecr 247032168], length 0
0x0000: 0016 3e40 883e 8071 1fe7 0981 0800 4500
0x0010: 0034 1663 4000 5806 6b62 0bc8 50f2 68c2
0x0020: db82 d856 6e4e 0000 0000 0000 0001 8010
0x0030: 40e8 f466 0000 0101 080a 077f da28 0eb9
0x0040: 6968
17:03:10.274929 IP (tos 0x0, ttl 90, id 46068, offset 0, flags [DF], proto TCP (6), length 52)
92.227.88.168.42173 > 104.194.219.130.49430: Flags [.], cksum 0x08c2 (correct), seq 0, ack 1, win 16800, options [nop,nop,TS val 125819447 ecr 1772061023], length 0
0x0000: 0016 3e40 883e 8071 1fe7 0981 0800 4500
0x0010: 0034 b3f4 4000 5a06 72ff 5ce3 58a8 68c2
0x0020: db82 a4bd c116 0000 0000 0000 0001 8010
0x0030: 41a0 08c2 0000 0101 080a 077f da37 699f
0x0040: 815f
17:03:10.275142 IP (tos 0x0, ttl 87, id 20342, offset 0, flags [DF], proto TCP (6), length 52)
21.253.248.223.61050 > 104.194.219.130.50090: Flags [.], cksum 0x16ae (correct), seq 0, ack 1, win 254, options [nop,nop,TS val 125819432 ecr 247032168], length 0
0x0000: 0016 3e40 883e 8071 1fe7 0981 0800 4500
0x0010: 0034 4f76 4000 5706 812c 15fd f8df 68c2
0x0020: db82 ee7a c3aa 0000 0000 0000 0001 8010
0x0030: 00fe 16ae 0000 0101 080a 077f da28 0eb9
0x0040: 6968
答案1
您要匹配什么模式?攻击可以更改每个请求的标头中的大多数字段,因此阻止字符串匹配不会很有效,并且会消耗更多 CPU。
请考虑使用一些常用的方法来阻止未按正确顺序到达的数据包。 这里就是几个例子。
您可以在 iptables 中的“原始”表中放入以下几项来阻止具有无效序列的数据包:
iptables -t raw -I PREROUTING -p tcp --tcp-flags ALL NONE -j DROP
iptables -t raw -I PREROUTING -p tcp --tcp-flags ALL ALL -j DROP
iptables -t raw -I PREROUTING -p tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
iptables -t raw -I PREROUTING -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -t raw -I PREROUTING -p tcp --tcp-flags ALL FIN,PSH,URG -j DROP
iptables -t raw -I PREROUTING -p tcp --tcp-flags ALL FIN -j DROP
如果这有帮助,请务必使用 iptables-save > /path/to/your/iptables 配置文件保存它。
有时这些工具也不能正确设置 mss 大小,你可以使用以下方法阻止这些工具:
iptables -t raw -I PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m tcpmss ! --mss 536:65535 -j DROP
还有许多其他方法可以阻止无效和欺骗数据包,但那将是一篇详尽的文章。本网站上的一些文章对每种方法进行了更详细的介绍。
如果您想使用十六进制字符串匹配来阻止某些特定内容,请告诉我序列,我会尽力帮助您。除非您确定字符串只会匹配欺骗流量,否则我建议您不要这样做。