当 C 类 IP 向我的 ubuntu 12.04 服务器发送过多的 SYN 数据包时,我该如何阻止整个 C 类 IP 块?
以下是我在 SYN 洪水攻击期间看到的示例:
每个不同的 IP 仅发送 1 个 SYN 数据包,因此防火墙不会阻止它。但是192.132.209.*
整个范围在很短的时间内发送了大量 SYN 数据包。
答案1
举10.0.0.0/24
个例子,
iptables -A INPUT -p tcp -s 10.0.0.0/24 --syn -m limit --limit 1/s --limit-burst 3 -j RETURN
应该可以完成这项工作,而且描述性很强,所以我想不需要任何解释。这里有一篇关于如何防止 TCP SYN 洪水攻击的好文章,读起来很容易:Linux Iptables 限制传入的 tcp 连接数/syn-flood 攻击。它对选项进行了更多解释,并提供了更广泛的方法(日志记录、单独链等)。
我从这里看不到您当前的状态iptables
,因此您可能需要将其添加到链的顶部INPUT
或将其正确集成到您当前的脚本中。
在评论中,您提到您正在寻找一种自动查找这些 IP 块的方法。好吧,我应该在命令 ( ) 中省略源地址过滤器-s 10.0.0.0/8
,这样限制将适用于全世界。
答案2
我找到了类似的解决方案。不是我想要的,但非常相似:
/sbin/iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 --connlimit-mask 24 -j REJECT --reject-with tcp-reset
将每个 C 类块的新 TCP 连接(端口 80)限制为 20 个。我在这里找到了它:
示例:C 类限制
答案3
C 类 IP 地址:192.0.0.0 至 223.255.255.255。
在这种情况下,--connlimit-mask
选项必须192.0.0.0/3
采用 CIDR 表示法。
如果指定掩码 24,则它也适用于 A 类和 B 类。您必须使用 CIDR 表示法来指定类。
--connlimit-mask 192.0.0.0/24