名称起源
CC = Challenge Collapsar,其前身名为Fatboy攻击,是利用不断对网站发送连接请求致使形成拒绝服务的目的,
CC攻击是DDOS(分布式拒绝服务)的一种,相比其它的DDOS攻击CC似乎更有技术含量一些。这种攻击你见不到真实源IP,见不到特别大的异常流量,但造成服务器无法进行正常连接。最让站长们忧虑的是这种攻击技术含量低,利用工具和一些IP代理一个初、中级的电脑水平的用户就能够实施攻击。因此,大家有必要了解CC攻击的原理及如果发现CC攻击和对其的防范措施。
CC攻击的原理
CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃。CC主要是用来攻击页面的,每个人都有这样的体验:当一个网页访问的人数特别多的时候,打开网页就慢了,CC就是模拟多个用户(多少线程就是多少用户)不停地进行访问那些需要大量数据操作(就是需要大量CPU时间)的页面,造成服务器资源的浪费,CPU长时间处于100%,永远都有处理不完的连接直至就网络拥塞,正常的访问被中止。
防CC攻击
CC攻击可以归为DDoS攻击的一种。他们之间的原理都是一样的,即发送大量的请求数据来导致服务器拒绝服务,是一种连接攻击。CC攻击又可分为代理CC攻击,和肉鸡CC攻击。代理CC攻击是黑客借助代理服务器生成指向受害主机的合法网页请求,实现DOS,和伪装就叫:cc(Challenge Collapsar)。而肉鸡CC攻击是黑客使用CC攻击软件,控制大量肉鸡,发动攻击,相比来后者比前者更难防御。因为肉鸡可以模拟正常用户访问网站的请求。伪造成合法数据包。
本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Network/Security/
CC攻击主要是用来攻击网站的。想必大家都有这样的经历,就是在访问某个网站时,如果这个网站比较大,访问的人比较多,打开页面的速度会比较慢,对不?!一般来说,访问的人越多,论坛的页面越多,数据库就越大,被访问的频率也越高,占用的系统资源也就相当可观,现在知道为什么很多空间服务商都说大家不要上传论坛,聊天室等东西了吧。
一个静态页面不需要服务器多少资源,甚至可以说直接从内存中读出来发给你就可以了,但是论坛之类的动态网站就不一样了,我看一个帖子,系统需要到数据库中判断我是否有读帖子的权限,如果有,就读出帖子里面的内容,显示出来——这里至少访问了2次数据库,如果数据库的体积有200MB大小,系统很可能就要在这200MB大小的数据空间搜索一遍,这需要多少的CPU资源和时间?如果我是查找一个关键字,那么时间更加可观,因为前面的搜索可以限定在一个很小的范围内,比如用户权限只查用户表,帖子内容只查帖子表,而且查到就可以马上停止查询,而搜索肯定会对所有的数据进行一次判断,消耗的时间是相当的大。
CC攻击就是充分利用了这个特点,模拟多个用户(多少线程就是多少用户)不停的进行访问(访问那些需要大量数据操作,就是需要大量CPU时间的页面,比如asp/php/jsp/cgi)。很多朋友问到,为什么要使用代理呢?因为代理可以有效地隐藏自己的身份,也可以绕开所有的防火墙,因为基本上所有的防火墙都会检测并发的TCP/IP连接数目,超过一定数目一定频率就会被认为是Connection-Flood。当然也可以使用肉鸡发动CC攻击。肉鸡的CC攻击效果更可观。致使服务器CPU%100,甚至死机的现象。
使用代理攻击还能很好的保持连接,我们这里发送了数据,代理帮我们转发给对方服务器,我们就可以马上断开,代理还会继续保持着和对方连接(我知道的记录是有人利用2000个代理产生了35万并发连接)。
当然,CC也可以利用这里方法对FTP、游戏端口、聊天房间等进行攻击,也可以实现TCP-FLOOD,这些都是经过测试有效的。
防御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分布全球各地。初步判断,这是被其他代理服务器发起的攻击。
本文出自 “赵海华_运维之路” 博客,请务必保留此出处http://baiying.blog.51cto.com/1068039/1113087