通过使用tcpdump -nlASX -s 0 -vvv port 80我得到像这样的东西:
14:58:55.121160 IP (tos 0x0, ttl 64, id 49764, offset 0, flags [DF], proto TCP (6), length 1480) 206.72.206.58.http > 2.187.196.7.4624: Flags [.], cksum 0x6900 (incorrect -> 0xcd18), seq 1672149449:1672150889, ack 4202197968, win 15340, length 1440 0x0000: 4500 05c8 c264 4000 4006 0f86 ce48 ce3a E....d@[email protected].: 0x0010: 02bb c407 0050 1210 63aa f9c9 fa78 73d0 .....P..c....xs. 0x0020: 5010 3bec 6900 0000 0f29 95cc fac4 2854 P.;.i....)....(T 0x0030: c0e7 3384 e89a 74fa 8d8c a069 f93f fc40 ..3...t....i.?.@ 0x0040: 1561 af61 1cf3 0d9c 3460 aa23 0b54 aac0 .aa...4`.#.T.. 0x0050: 5090 ced1 b7bf 8857 c476 e1c0 8814 81ed P......Wv..... 0x0060: 9e85 87e8 d693 b637 bd3a 56ef c5fa 77e8 .......7.:V...w. 0x0070: 3035 743a 283e 89c7 ced8 c7c1 cff9 6ca3 05t:(>........l. 0x0080: 5f3f 0162 ebf1 419e c410 7180 7cd0 29e1 _?.b..A...q.|.). 0x0090: fec9 c708 0f01 9b2f a96b 20fe b95a 31cf ......./.k...Z1. 0x00a0: 8166 3612 bac9 4e8d 7087 4974 0063 1270 .f6...NpIt.cp
我拉什么来使用IPTables通过string阻止。 还是有更好的方法来阻止有共同点的攻击?
问题是:我可以从这个IP数据包中select任何一部分,并把它称为一个string?
iptables -A INPUT -m string --alog bm --string attack_string -j DROP
换句话说:在某些情况下,我可以用TTL = xxx来禁止,如果攻击具有相同的TTL, 当然,它会阻止一些合法的数据包,但如果这意味着保持盒子的工作,直到攻击消失,但我想了解如何find其他常见的东西在一个数据包阻止IPTables
iptables -A INPUT -m string --alog bm --string attack_string -j DROP
这个想法有几个问题。
首先你应该看到相关的文档 :
请谨慎使用此比赛。 很多人希望使用这个匹配来阻止蠕虫以及DROP目标。 这是一个重大的错误。 这将被任何IDS逃避方法击败。
以类似的方式,很多人一直使用这个匹配作为意思,通过删除任何包含stringPOST的HTTP数据包来阻止HTTP或POST等GET特定函数。 请理解,这个工作最好由过滤代理完成。 另外,任何带POST这个词的HTML内容都会被删除。 这场比赛的目的是能够排队到用户和有趣的数据包更好的分析,就这些。 丢弃基于此的数据包将被任何IDS逃避方法击败。
-string指令的真正-string是将数据包放在单独的队列或链中,以供IDS系统处理。 它的目的不是为了整体/行为地解释第7层信息,或者是通过使用签名匹配来解释第七层信息,然后一旦确定它是“坏的”,就放弃它。 所以其次, -string指令对于你的用例来说还不够复杂,你可能会丢掉你想保留的数据包。
你还会注意到你的数据包中没有string可以提供给string。 TCPDump所显示的数据包一旦被翻译成(可能是)ASCI就是不可读的。 -string参数实际上是devise用于查找HTTP Post命令等数据包中的string。 如果你想跟随你的想法,使用iptables作为签名匹配的IDS系统,你可能想使用U3匹配function来寻找特定的位模式。
第三,也是最重要的一点,就是当涉及拒绝服务的数据包到达你的机器并被你的防火墙处理时,损坏已经完成了。 任何显着的缓解拒绝服务攻击都将涉及与上游提供商合作,在stream量到达服务器之前阻止stream量。
您的最后一条评论似乎表明您正在寻找调解syn洪水的方法。 Syn Cookies旨在完成这一任务。 您可以使用以root身份运行的以下命令启用syncookies。
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
还有其他一些设置可以调整以改变syn cookie的行为。 请参阅http://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt上的文档。