名词解释:摘自百度百科php
名称起源 CC = Challenge Collapsar,其前身名为Fatboy***,是利用不断对网站发送链接请求导致造成拒绝服务的目的,nginx
CC***是DDOS(分布式拒绝服务)的一种,相比其它的DDOS***CC彷佛更有技术含量一些。这种***你见不到真实源IP,见不到特别大的异常流量,但形成服务器没法进行正常链接。最让站长们忧虑的是这种***技术含量低,利用工具和一些IP代理一个初、中级的电脑水平的用户就可以实施***。所以,你们有必要了解CC***的原理及若是发现CC***和对其的防范措施。数据库
CC***的原理就是***者控制某些主机不停地发大量数据包给对方服务器形成服务器资源耗尽,一直到宕机崩溃。CC主要是用来***页面的,每一个人都有这样的体验:当一个网页访问的人数特别多的时候,打开网页就慢了,CC就是模拟多个用户(多少线程就是多少用户)不停地进行访问那些须要大量数据操做(就是须要大量CPU时间)的页面,形成服务器资源的浪费,CPU长时间处于100%,永远都有处理不完的链接直至就网络拥塞,正常的访问被停止。服务器
CC***能够归为DDoS***的一种。他们之间的原理都是同样的,即发送大量的请求数据来致使服务器拒绝服务,是一种链接***。CC***又可分为代理CC***,和肉鸡CC***。代理CC***是***借助代理服务器生成指向受害主机的合法网页请求,实现DOS,和假装就叫:cc(Challenge Collapsar)。而肉鸡CC***是***使用CC***软件,控制大量肉鸡,发动***,相比来后者比前者更难防护。由于肉鸡能够模拟正经常使用户访问网站的请求。伪形成合法数据包。网络
CC***主要是用来***网站的。想必你们都有这样的经历,就是在访问某个网站时,若是这个网站比较大,访问的人比较多,打开页面的速度会比较慢,对不?!通常来讲,访问的人越多,论坛的页面越多,数据库就越大,被访问的频率也越高,占用的系统资源也就至关可观,如今知道为何不少空间服务商都说你们不要上传论坛,聊天室等东西了吧。并发
一个静态页面不须要服务器多少资源,甚至能够说直接从内存中读出来发给你就能够了,可是论坛之类的动态网站就不同了,我看一个帖子,系统须要到数据库中判断我是否有读帖子的权限,若是有,就读出帖子里面的内容,显示出来——这里至少访问了2次数据库,若是数据库的体积有200MB大小,系统极可能就要在这200MB大小的数据空间搜索一遍,这须要多少的CPU资源和时间?若是我是查找一个关键字,那么时间更加可观,由于前面的搜索能够限定在一个很小的范围内,好比用户权限只查用户表,帖子内容只查帖子表,并且查到就能够立刻中止查询,而搜索确定会对全部的数据进行一次判断,消耗的时间是至关的大。jsp
CC***就是充分利用了这个特色,模拟多个用户(多少线程就是多少用户)不停的进行访问(访问那些须要大量数据操做,就是须要大量CPU时间的页面,好比asp/php/jsp/cgi)。不少朋友问到,为何要使用代理呢?由于代理能够有效地隐藏本身的身份,也能够绕开全部的防火墙,由于基本上全部的防火墙都会检测并发的TCP/IP链接数目,超过必定数目必定频率就会被认为是Connection-Flood。固然也可使用肉鸡发动CC***。肉鸡的CC***效果更可观。导致服务器CPU%100,甚至死机的现象。tcp
使用代理***还能很好的保持链接,咱们这里发送了数据,代理帮咱们转发给对方服务器,咱们就能够立刻断开,代理还会继续保持着和对方链接(我知道的记录是有人利用2000个代理产生了35万并发链接)。分布式
固然,CC也能够利用这里方法对FTP、游戏端口、聊天房间等进行***,也能够实现TCP-FLOOD,这些都是通过测试有效的。ide
防护CC***能够经过多种方法,禁止网站代理访问,尽可能将网站作成静态页面,限制链接数量等。
事发前:原本个人这个受***站点是公司下线的一个业务,但网站仍在运行,已经没什么访问量了。但是受***当天我发现监控上此站点的链接数从8点开始往上飙升,因而登陆网站查看在线人数,结果实际登陆人数就我一个!而网卡流量还不到50K,问题出现了就得解决啊
因而打开访问日志查看,日志里不停的记录着非本站点的访问,好比我站点域名为www.51cto.com 可是日志里记录的内容以下(此日志是我处理cc***后的,只是让你们看个访问的现象):
199.201.122.141 - [10/Jan/2013:10:45:03 +0800] GET http://www.7xgj.com:81/login.jsp?id=106&name=%C7%C1%A6%A7%D1%F3 HTTP/1.1 "403" 564 "http://www.7xgj.com:81/login.jsp?id=+N3&name=+C3" "Mozilla/4.0 (compatible; MSIE 6.0; Windows 5.1)" "0.000" "340" "-"
199.201.122.141 - [10/Jan/2013:10:45:04 +0800] GET http://www.7xgj.com:81/login.jsp?id=106&name=%C7%C1%A6%A7%D1%F3 HTTP/1.1 "403" 564 "http://www.7xgj.com:81/login.jsp?id=+N3&name=+C3" "Mozilla/4.0 (compatible; MSIE 6.0; Windows 5.1)" "0.000" "340" "-"
199.201.122.141 - [10/Jan/2013:10:45:04 +0800] GET http://www.7xgj.com:81/login.jsp?id=512&name=%B4%B4%C6%A0%A7%C7 HTTP/1.1 "403" 564 "http://www.7xgj.com:81/login.jsp?id=+N3&name=+C3" "Mozilla/4.0 (compatible; MSIE 6.0; Windows 5.1)" "0.000" "340" "-"
199.201.122.141 - [10/Jan/2013:10:45:05 +0800] GET http://www.7xgj.com:81/login.jsp?id=512&name=%B4%B4%C6%A0%A7%C7 HTTP/1.1 "403" 564 "http://www.7xgj.com:81/login.jsp?id=+N3&name=+C3" "Mozilla/4.0 (compatible; MSIE 6.0; Windows 5.1)" "0.000" "340" "-"
199.201.122.141 - [10/Jan/2013:10:45:05 +0800] GET http://www.7xgj.com:81/login.jsp?id=898&name=%F1%B0%E8%D2%C5%F1 HTTP/1.1 "403" 564 "http://www.7xgj.com:81/login.jsp?id=+N3&name=+C3" "Mozilla/4.0 (compatible; MSIE 6.0; Windows 5.1)" "0.000" "340" "-"
199.201.122.141 - [10/Jan/2013:10:45:06 +0800] GET http://www.7xgj.com:81/login.jsp?id=898&name=%F1%B0%E8%D2%C5%F1 HTTP/1.1 "403" 564 "http://www.7xgj.com:81/login.jsp?id=+N3&name=+C3" "Mozilla/4.0 (compatible; MSIE 6.0; Windows 5.1)" "0.000" "340" "-"
199.201.122.141 - [10/Jan/2013:10:45:06 +0800] GET http://www.7xgj.com:81/login.jsp?id=173&name=%E7%C5%A0%D5%A2%E5 HTTP/1.1 "403" 564 "http://www.7xgj.com:81/login.jsp?id=+N3&name=+C3" "Mozilla/4.0 (compatible; MSIE 6.0; Windows 5.1)" "0.000" "340" "-"
199.201.122.141 - [10/Jan/2013:10:45:07 +0800] GET http://www.7xgj.com:81/login.jsp?id=173&name=%E7%C5%A0%D5%A2%E5 HTTP/1.1 "403" 564 "http://www.7xgj.com:81/login.jsp?id=+N3&name=+C3" "Mozilla/4.0 (compatible; MSIE 6.0; Windows 5.1)" "0.000" "340" "-"
此ip短期发送大量这种非对本站访问的链接,因而先把他给在防火墙上毙掉:
#!/bin/sh
IP=`tail -n 1000 /data/logs/test.log | awk '{print $1}' | sort | uniq -c | sort -rn| awk '$1 > 100 {print $2}'`
for i in $IP
do
iptables -I INPUT -p tcp --dport 80 -s $i -j DROP
done
这样链接数立马降低到正常水平,除了在iptables上这么处理,还有就是禁用了nginx虚拟主机的空主机头:
server {
listen 80 default;
location / {
return 403;
}
}
对以ip访问的请求通通拒绝访问。开始觉得是某地区dns解析问题,经分析日志,来源的ip分布全球各地。初步判断,这是被其余代理服务器发起的***。