名詞解釋:摘自百度百科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分佈全球各地。初步判斷,這是被其餘代理服務器發起的***。