由几个IP连接一个DDOS的DDOS

我有一个网站在过去一个月里每天都有一个DDOS同时被攻击,花了一个月的时间研究和查明bug后,我们制定了一个bash脚本,如果连接在一分钟内达到80+那么IP被禁止并被放入IPTABLES。

这工作了两天,我觉得我终于解决了这个问题。

但是,唉,现在这个人发送多个IP只有一个连接(审查输出在这里http://pastebin.com/7AJqBfJa )。 这就像使用一个IP每分钟发送150个连接一样,将站点closures。

这当然是一个完全不同的方法,当涉及到防止DDOS,我正在寻求大师的帮助和任何足够好的照顾,给一些build议。 在这一点上,我对如何解决这个问题感到茫然,任何帮助将不胜感激。

就像Niall提到的,mod_evasive在这种情况下工作得非常好,我最近用它来阻止我在我的一个站点上遇到的非常类似的问题。 这有助于您在单个IP上没有收到大量连接的情况,但您确实发现服务器上出现了不正常的模式。

在我的情况下,我也在这里写博客,我安装了mod_evasive并使用以下设置进行configuration:

<IfModule mod_evasive20.c> DOSHashTableSize 3097 DOSPageCount 3 DOSSiteCount 100 DOSPageInterval 3 DOSSiteInterval 5 DOSBlockingPeriod 300 DOSLogDir "/var/log/httpd/modevasive/" DOSEmailNotify [email protected] </IfModule> 

基本上,如果单个IP在5秒内请求相同的资源(文件)3次, 或在5秒内点击100个文件; 然后Apache将拒绝对该文件的进一步请求。

如果你想增强这个脚本; 您可以在命中参数时触发系统命令。 在我的情况下,我将这个命令添加到上面的configuration:

 DOSSystemCommand "/usr/bin/sudo /usr/sbin/csf -td %s 3600" 

这使得我的防火墙CSF阻止IP一个小时。 你可以简单地写一个iptables脚本来做同样的事情,但是CSF对我来说很容易。

无论如何,希望能帮助你钉住你的DDOS攻击者!

您可以使用iptables来限制每个IP连接到服务的数量,以便减轻DDoS,直到您的iptables脚本捕获它们

iptables -A INPUT -p tcp -m limit --limit 3/s --dport DESTINATIONPORT --limit-burst 10 -m state --state NEW -j ACCEPT

这会将每个连接的新连接限制为每秒10个,最多连接10个。

一定要根据自己的需要进行调整,每秒3个连接是相当低的,这取决于您的服务器正在运行的stream量

假设你正在运行Apache,mod_evasive可能是有用的。