使用IP表规则停止DoS攻击?

Modified on: Fri, 19 Jul 2019 01:00:03 +0800

我想知道我是否可以使用简单的IP表规则阻止小型(D)DoS攻击?

小我的意思是他们在我的网络服务器上充斥着来自一个或两个IP地址的大约400多个请求。在我注意到他们已经开始点击我的网络服务器后,我可以删除IP地址,但通常需要几分钟时间才能启动IP表,并开始完全删除它,以免它影响该Web服务器

我使用以下命令删除IP:

iptables -I INPUT -s "IP HERE" -j DROP

然后显然保存它:

/etc/init.d/iptables save

我通常使用以下命令找出攻击的IP地址:

netstat -plan|grep :80|awk '{print $5}'|cut -d: -f 1|sort|uniq -c|sort -n

这样做的问题是我必须在那里,并且它要求我在事后采取行动。是否有一个IP表规则,我可以使用它来触发150连接后立即删除IP地址?这样我就不用担心它会压倒Web服务器,而且我也不必在那时阻止它。

顺便说一下,如果重要的话,我在CentOS上使用Apache。

感谢您的时间。

最佳答案

对于提供灵活性的内容,请查看最近(和限制)模块。最近将跟踪IP在给定时间范围内建立的连接数,并可用于触发特定规则。最近的模块(相对)CPU很重 - 但与加载动态页面相比,可以完全接受。

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp -m multiport --dports 80,443 -m recent --update --seconds 3600 --name BANNED --rsource -j DROP
-A INPUT -p tcp -m multiport --dports 80,443 -m state --state NEW -j ATTK_CHECK

-A ATTACKED -m limit --limit 5/min -j LOG --log-prefix "IPTABLES (Rule ATTACKED): " --log-level 7
-A ATTACKED -m recent --set --name BANNED --rsource -j DROP
-A ATTK_CHECK -m recent --set --name ATTK –-rsource
-A ATTK_CHECK -m recent --update --seconds 600 --hitcount 150 --name ATTK --rsource -j ATTACKED
-A ATTK_CHECK -m recent --update --seconds 60 --hitcount 50 --name ATTK --rsource -j ATTACKED
-A ATTK_CHECK -j ACCEPT

基本上,上述内容相当于:

  • 接受已经建立的连接(即他们已通过我们的规则)
  • 从禁止的IP上删除端口80和443(SSL)上的所有连接 - 如果他们继续尝试连接,请延长时间 - 等待一小时(不进行任何连接尝试),然后再解除阻止。
  • 根据我们的规则检查新连接:

    • 在10分钟的攻击中考虑超过150个连接
    • 在1分钟的攻击中考虑超过50个连接
    • 记录攻击(但每分钟不超过5个条目 - 不想淹没我们的日志);并阻止连接

有关我使用的上述更详细的解释和分层版本,请参阅这篇文章

请记住,ipTables根本无法帮助解决网络拥塞问题,并且对任何分布式攻击都无效 - 它的优势在于安全性并减少服务器负载。

作者:,cyberx86

相关问答

添加新评论