减轻 http 洪水?

减轻 http 洪水?

我有一个 DDoS 保护代理来处理 SYN 洪水等。但 http 洪水仍然会通过。出于某种原因,他们的 DDoS 代理没有阻止任何洪水。因此,大约有 500 个 IP 尽可能多地连接到该框,最大连接数约为 20k。这导致 php 产生 1k 个进程,使框过载。我该如何缓解这种 http 洪水?我认为设置一个需要 cookie 才能访问网站的 htaccess 文件会起作用,但 rewritecond 似乎正在调用 php,这会导致框过载。

我该如何缓解这种情况?

答案1

使用基于 cookie 的方法是正确的,但初始检查需要使用比 Apache/PHP 线程便宜得多的进程来完成。我建议在您的 Web 主机前面使用 nginx 代理,强制重定向和设置 cookie。这样,只有带有适当 cookie 的请求才会被允许通过您的 PHP 主机。

只要你设置了代理,这个相对较新的机器人检测软件就会非常令人印象深刻:

http://www.ecl-labs.org/2011/03/17/roboo-http-mitigator.html

我还强烈建议观看该页面链接的 DDoS 演示文稿:

http://www.ecl-labs.org/papers/yg-ab-building_floodgates.pptx

它涵盖了反 DDoS 概念并描述了他们编写 Roboo 的原因。

答案2

在像您这样的情况下,最好的办法就是对您的服务器的连接进行速率和/或 IP 限制(无论是在您的 DDoS 保护代理上 - 如果它有价值的话,它将能够做到这一点 - 或者在您的服务器上使用任何可用的防火墙软件(pf,iptables 等))。

您的目标是使用单独的防火墙或 DDoS 保护代理(计算量免费)在攻击袭击您的服务器之前阻止攻击,或者尽早(例如在 TCP 握手过程中)在您的服务器上(计算量便宜)阻止攻击,而不是尝试在 Web 服务器/应用程序层处理它(计算量昂贵:您必须设置整个 TCP 连接并开始与 Web 服务器通信,然后才意识到您不想响应这个特定的请求)。

答案3

我们设法通过 htaccess 规则缓解了这次攻击

RewriteEngine On

SetEnvIf User-Agent ".*MSIE 6.0; Windows NT 5.1; SV1.*" dontlog
RewriteCond %{HTTP_USER_AGENT} ".*MSIE 6.0; Windows NT 5.1; SV1.$" [OR]
RewriteCond %{HTTP_USER_AGENT} ".*MSIE 6.0; Windows NT 5.1;1813.$" [OR]
RewriteCond %{HTTP_USER_AGENT} "^(?:User-Agent: )?Mozilla/4.0 \(compatible; MSIE 6.0; Windows NT 5.1;(?: SV1|1813)\)$" [OR] 
RewriteCond %{HTTP_USER_AGENT} "MSIE 6.0; Windows NT 5.1; SV1"
RewriteRule ^(.*)$ http://127.0.0.1/$1 [R=302,L]

或 iptables

iptables -I INPUT 1 -p tcp --dport 80 -m string --string "MSIE 6.0; Windows NT 5.1; SV1" --algo bm -j DROP

你可能想要向 iptables 添加多个端口

答案4

我想补充 Voretak 的回复,您应该尝试 iptables 中的“LIMIT”目标。

取自: http://www.cyberciti.biz/faq/iptables-connection-limits-howto/

示例:限制每个 IP / 主机的 SSH 连接数每个客户端主机仅允许 3 个 ssg 连接:

/sbin/iptables  -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT
# save the changes see iptables-save man page, the following is redhat and friends
# specific command
service iptables save

相关内容