在服务器上请求单个文件的 DoS 攻击,最好的克服方法是什么?

在服务器上请求单个文件的 DoS 攻击,最好的克服方法是什么?

我的服务器目前正遭受大型 DoS 攻击,不得不放弃 Apache 并将所有内容推送到 Nginx(重写是一场噩梦!)。

访问日志的示例:

186.92.86.149 - - [30/Nov/2011:09:49:40 -0500] "GET /boards/search.php HTTP/1.0" 404 169 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US)" "-"
187.131.200.33 - - [30/Nov/2011:09:49:40 -0500] "POST /boards/search.php HTTP/1.0" 413 199 "http://rol.ru" "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.3a) Gecko/20030105 Phoenix/0.5" "-"
189.72.198.227 - - [30/Nov/2011:09:49:40 -0500] "GET /boards/search.php HTTP/1.0" 500 193 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US)" "-"
101.109.17.136 - - [30/Nov/2011:09:49:40 -0500] "POST /boards/search.php HTTP/1.0" 413 199 "http://gazeta.ru" "Mozilla/4.0 (compatible; MSIE 5.0; Mac_PowerPC) Opera 6.0 [en]" "-"
186.188.156.111 - - [30/Nov/2011:09:49:40 -0500] "POST /boards/search.php HTTP/1.0" 413 601 "http://rol.ru" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)" "-"

由于他们都试图访问同一个页面,是否有一种快速简便的方法可以设置一些东西来自动将它们添加到 iptables 等?

答案1

将文件复制到新位置,然后让 nginx 生成指向该内容新位置的重定向。这只是一个临时措施,但从 Web 服务器发送 302 代码比每次解析和执行 PHP 要便宜得多。

真正的用户浏览器应该尊重重定向。

答案2

Fail2Ban 可能能够重写您的规则,以便自动禁止对该文件的传入请求。您可能还想与上游提供商合作阻止某些请求(如果他们可以的话),因为这不会阻止 DoS 阻塞您的连接,只会稍微降低其有效性。除非您的数据中心拥有大型连接,否则这会降低您的网站服务合法流量的能力,并且您的上游提供商可能能够帮助减少管道上游的这些请求。

相关内容