码迷,mamicode.com
首页 > 其他好文 > 详细

CC 防御

时间:2015-04-24 01:22:46      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:cc

简单的

2.在操作系统Firewall建立规则,限制同一个IP的同时连接数
以Linux下的iptables为例,如下配置将限制同一个IP一分钟内最多建立15个连接,超出的连接会被iptables丢弃,不会到达nginx

/sbin/iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
/sbin/iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 60  --hitcount 25 -j DROP
service iptables save


这种方式有个不好,就是看不到被禁止的IP


3. 自己写个bash脚本统计各IP访问频率,自动将频率超过你设定的上限的IP扔到黑名单里
黑名单里的IP,用脚本自动写入iptables或者nginx.conf,封禁它几分钟,或者降低他的许可访问频率

我以前在yahoo的时候用一个叫YDoD(Yahoo! Department of Defense)的apache模块,可以自定义规则防止外部滥用我们的WEB服务,到了淘宝后改了个名字叫tdod,找了一圈,没找到开源的。不过原理跟我上面说得也差不多


4.

以下脚本通过netstat命令列举所有连接,将连接数最高的一个IP如果连接数超过150,则通过 iptables阻止访问:
#!/bin/sh
status=`netstat -na|awk ‘$5 ~ /[0-9]+:[0-9]+/ {print $5}‘ |awk -F ":" -- ‘{print $1}‘ |sort -n|uniq -c |sort -n|tail -n 1`
NUM=`echo $status|awk ‘{print $1}‘`
IP=`echo $status|awk ‘{print $2}‘`
result=`echo "$NUM > 150" | bc`
if [ $result = 1 ]
then
echo IP:$IP is over $NUM, BAN IT!
/sbin/iptables -I INPUT -s $IP -j DROP
fi 运行crontab -e,将上述脚本添加到crontab每分钟自动运行:
* * * * * /root/xxxx.sh
通过apache自带的ab工具进行服务器压力测试:
ab -n 1000 -c 100 http://www.xxx.com/bbs/index.php
测试完成后,我们就可以看到系统中有IP被封的提示:


5. 根据特征码屏蔽请求(对CC攻击效果较好)
一般同一种CC攻击工具发起的攻击请求包总是相同的,而且和正常请求有所差异。
当服务器遭遇CC攻击时,我们可以快速查看日志,分析其请求的特征,比如User-agent。下面的是某一次CC攻击时的User-agent
Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; MyIE 3.01)Cache-Control: no-store, must-revalidate
几乎没有正常的浏览器会在User-agent中带上“must-revalidate”这样的关键字。所以我们可以以这个为特征进行过滤,将User-agent中带有“must-revalidate”的请求全部拒绝访问:
if ($http_user_agent ~ must-revalidate) {
return 403;
}


CC 防御

标签:cc

原文地址:http://haibo600.blog.51cto.com/1951311/1637671

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!