全球主机交流论坛

标题: 遭遇CC攻击,多种办法,求技术讨论 [打印本页]

作者: kirkcong    时间: 2010-10-8 06:27
标题: 遭遇CC攻击,多种办法,求技术讨论
我的网站为dedecms+discuz

遭遇了不知道谁不间断的CC攻击,具体为,不断访问我的dedecms的php文件(虽然有html,但毕竟还有一些php文件),或者攻击discuz论坛。

discuz论坛采取了默认的防止刷新,基本没问题。但对方不断的攻击php文件,导致经常502 bad gateway

我尝试的办法:

1、编写了脚本观察访问log,发现在攻击哪个文件就更名该php文件,不在电脑前就直接用已经编写的脚本,把dedecms的php文件全部转移。

2、通过日志,对方的是

61.136.145.9 - - [08/Oct/2010:06:25:58 +0800] "GET /archiver/fid-9.html HTTP/1.1" 499 0 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1)"

这样的,通过禁止客户端访问,就对其他的用户造成误杀了。




求教:

这样的情况下,我怎么办呢?

我想禁止他直接攻击我的xxx.com/plus/xx.php。

该如何作?比如,通过nginx,可以限制文件在一定时间的访问次数?

主要,他一攻击我的php,我整个服务器的php和mysql就基本瘫痪,影响了discuz
作者: zrdlrofmine    时间: 2010-10-8 06:31
未成尝试
作者: 大飞机    时间: 2010-10-8 07:13
禁止这ip 直接了当
作者: kirkcong    时间: 2010-10-8 07:32
原帖由 大飞机 于 2010-10-8 07:13 发表
禁止这ip 直接了当

问题是,对方可不是一个ip。。。
作者: kirkcong    时间: 2010-10-8 09:57

作者: ABC    时间: 2010-10-8 10:12
dedecms的php文件加上防止刷新
作者: ekucn    时间: 2010-10-8 10:17
提示: 作者被禁止或删除 内容自动屏蔽
作者: 杯具    时间: 2010-10-8 11:03
我建议你用ddos-deflate,把每分钟的同一ip线程数设置得小一点,基本可以挡掉CC。
作者: kirkcong    时间: 2010-10-8 11:04
原帖由 ekucn 于 2010-10-8 10:17 发表
nginx,限制文件在一定时间的访问次数,好像nginx没有这个功能,

不过你到是可以限制每ip的连接数量,虽然不能完全防住,但是至少对缓解有好处,一般你说的的在这种分布式cc跟ddos,的确没什么好办法,

到了最后无非就是比耗网络 ...

求教,每个ip的链接数量怎么限制?
作者: kirkcong    时间: 2010-10-8 11:12
原帖由 杯具 于 2010-10-8 11:03 发表
我建议你用ddos-deflate,把每分钟的同一ip线程数设置得小一点,基本可以挡掉CC。


谢谢,已经安装在测试
作者: freebsd    时间: 2010-10-8 11:51
从防火墙上入手,不要凭什么nginx,更不能凭dz功能,

抗cc要在防火墙那一级才有效。弄个脚本,把连接过多的,频繁刷一个面的过滤出来,K 掉就可以OK了
作者: 杯具    时间: 2010-10-8 12:02
ddos-deflate完全可以做到的。

比如:你可以设置每分钟同一IP访问的线程数为30个,超过了会触发iptables自动ban掉一段时间。
作者: domin    时间: 2010-10-8 12:04
个人经验认为:
小型的比较愚蠢的CC, ddos-deflate可以解决

大型的, 成千上w的同时CC的, ddos-deflate解决不了

写个脚本监视LOG比较好
作者: qiqi13245    时间: 2010-10-8 12:43
你这还不算牛的

某论坛最近几天。天天被十几台XXOO。。一封IP他们就换

还有我的某网站几乎天天被KO
作者: zllovesuki    时间: 2010-11-2 08:06
你去装个CSF,然后用这个脚本(前提你是LNMP)

#!/bin/bash

#Collecting list of ip addresses connected to port 80

netstat -plan|grep :80|awk {'print $5'}|cut -d: -f 1|sort|uniq -c|sort -nk 1 > /root/iplist

#Limit the no of connections
LIMIT=15;

for ip in `cat /root/iplist |awk '{print $2}'`;do

        if [ `grep $ip /root/iplist | awk '{print $1}'` -gt $LIMIT ]
        then
                echo "15 connection from $ip... `grep $ip /root/iplist | awk '{print $1}'` number of connections... Blocking $ip";

                #Blocking the ip ...

                CHECK_IF_LOCALIP=0;
                /sbin/ifconfig | grep $ip > /dev/null;
                if [ $? -ne $CHECK_IF_LOCALIP ]
                then {
                        FLAG=0;
                        grep $ip /etc/csf/csf.deny > /dev/null;
                        if [ $? -ne $FLAG ]
                        then
                                iptables -I INPUT -s $ip -j DROP;
                                echo "deny $ip;" >> /usr/local/nginx/conf/vhost/block.conf;
                                /usr/sbin/csf -d $ip;
                                ~/lnmp reload;
                        else
                                echo " Ipaddress $ip is already blocked ";
                        fi
                }
                else
                        echo " Sorry, the ip $ip cannot be blocked since this is a local ip of the server ";
                fi
        fi
done
作者: zrdlrofmine    时间: 2010-11-2 08:45
  楼上有高人




欢迎光临 全球主机交流论坛 (https://lilynana.eu.org/) Powered by Discuz! X3.4