缓解http洪水?

我有一个ddos保护代理来处理SYN洪水等等。 但http洪水仍然在通过。 由于某些原因,他们的ddos代理不会阻止任何洪水。 所以有大约500 ips连接到盒子的次数越多越好,最多连接20k。 这导致PHP产生1k个进程重载盒子。 我怎样才能缓解这个HTTP洪水? 我认为设置一个需要cookie访问该网站的htaccess文件将工作,但rewritecond似乎是调用PHP,导致该框超载。

我怎样才能减轻这一点?

您使用的是基于cookie的方法,但是最初的检查需要使用一个比Apache / PHP线程便宜很多的进程来完成。 我build议在您的虚拟主机之前的一个nginx代理强制redirect和设置一个cookie。 只有具有相应cookie的请求才允许通过您的PHP主机。

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

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

我也强烈build议从该页面链接到DDoS的演示文稿:

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

它涵盖了整体的反DDoS概念,并描述了为什么他们写Roboo。

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

您的目标是在攻击者使用单独的防火墙或DDoS防护代理(计算上免费)或者尽可能早地阻止攻击之前(比如在TCP握手过程中) – 在服务器上(计算上便宜)而不是试图处理与它在networking服务器/应用程序层(计算昂贵:你必须build立整个TCP连接,并开始与Web服务器交谈之前,意识到你不想回应这个特定的要求)。

我们设法通过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

我想补充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