Tips:“小鳥雲”是深圳前海小鳥雲計算有限公司旗下雲計算品牌, 國內領先的企業級雲計算服務商。 團隊擁有多年行業經驗, 專注雲計算技術研發, 面向廣大開發者、政企用戶、金融機構等, 提供基於智慧雲伺服器的全方位雲計算解決方案, 為用戶提供可信賴的企業級公有雲服務。
CC攻擊原理
CC主要是用來攻擊頁面的。 大家都有這樣的經歷, 就是在訪問論壇時, 如果這個論壇比較大, 訪問的人比較多, 打開頁面的速度會比較慢, 對不?!一般來說, 訪問的人越多, 論壇的頁面越多, 資料庫就越大, 被訪問的頻率也越高, 佔用的系統資源也就相當可觀, 現在知道為什麼很多空間服務商都說大家不要上傳論壇, 聊天室等東西了吧。
一個靜態頁面不需要伺服器多少資源, 甚至可以說直接從記憶體中讀出來發給你就可以了, 但是論壇就不一樣了, 我看一個帖子,
CC就是充分利用了這個特點, 模擬多個用戶(多少執行緒就是多少用戶)不停的進行訪問(訪問那些需要大量資料操作, 就是需要大量CPU時間的頁面)。
可能很多朋友還不能很好的理解, 我來描述一下吧。 我們假設伺服器A對Search.asp的處理時間需要0.01S(多執行緒只是時間分割, 對結論沒有影響), 也就是說他一秒可以保證100個用戶的Search請求, 伺服器允許的最大連線時間為60s, 那麼我們使用CC模擬120個用戶併發連接,
蝴蝶:我們假設伺服器處理Search只用了0.01S, 也就是10毫秒(這個速度你可以去各個有開放時間顯示的論壇看看),
當然, CC也可以利用這裡方法對FTP進行攻擊, 也可以實現TCP-FLOOD, 這些都是經過測試有效的。
防範方法
說了攻擊原理, 大家肯定會問, 那麼怎麼防禦?使用硬體防火牆我不知道如何防範, 除非你完全遮罩頁面訪問, 我的方法是通過頁面的編寫實現防禦。
1、使用Cookie認證。 這時候朋友說CC裡面也允許Cookie, 但是這裡的Cookie是所有連接都使用的, 所以啟用IP+Cookie認證就可以了。
2、利用Session。這個判斷比Cookie更加方便,不光可以IP認證,還可以防刷新模式,在頁面裡判斷刷新,是刷新就不讓它訪問,沒有刷新符號給它刷新符號。給些示範代碼吧,Session:
1then
Session(“refresh”)=session(“refresh”)+1
Response.redirect“index.asp”
Endif
這樣用戶第一次訪問會使得Refresh=1,第二次訪問,正常,第三次,不讓他訪問了,認為是刷新,可以加上一個時間參數,讓多少時間允許訪問,這樣就限制了耗時間的頁面的訪問,對正常客戶幾乎沒有什麼影響。
3、通過代理發送的HTTP_X_FORWARDED_FOR變數來判斷使用代理攻擊機器的真實IP,這招完全可以找到發動攻擊的人,當然,不是所有的代理伺服器都發送,但是有很多代理都發送這個參數。詳細代碼:
這樣會生成CCLog.txt,它的記錄格式是:真實IP[代理的IP]時間,看看哪個真實IP出現的次數多,就知道是誰在攻擊了。將這個代碼做成Conn.asp檔,替代那些連接資料庫的檔,這樣所有的資料庫請求就連接到這個檔上,然後馬上就能發現攻擊的人。
4、還有一個方法就是把需要對資料查詢的語句做在Redirect後面,讓對方必須先訪問一個判斷頁面,然後Redirect過去。
5、在存在多站的伺服器上,嚴格限制每一個站允許的IP連接數和CPU使用時間,這是一個很有效的方法。
CC的防禦要從代碼做起,其實一個好的頁面代碼都應該注意這些東西,還有SQL注入,不光是一個入侵工具,更是一個DDOS缺口,大家都應該在代碼中注意。舉個例子吧,某伺服器,開動了5000線的CC攻擊,沒有一點反應,因為它所有的訪問資料庫請求都必須一個隨機參數在Session裡面,全是靜態頁面,沒有效果。突然發現它有一個請求會和外面的伺服器聯繫獲得,需要較長的時間,而且沒有什麼認證,開800線攻擊,伺服器馬上滿負荷了。
代碼層的防禦需要從點點滴滴做起,一個腳本代碼的錯誤,可能帶來的是整個站的影響,甚至是整個伺服器的影響,慎之!
所以啟用IP+Cookie認證就可以了。2、利用Session。這個判斷比Cookie更加方便,不光可以IP認證,還可以防刷新模式,在頁面裡判斷刷新,是刷新就不讓它訪問,沒有刷新符號給它刷新符號。給些示範代碼吧,Session:
1then
Session(“refresh”)=session(“refresh”)+1
Response.redirect“index.asp”
Endif
這樣用戶第一次訪問會使得Refresh=1,第二次訪問,正常,第三次,不讓他訪問了,認為是刷新,可以加上一個時間參數,讓多少時間允許訪問,這樣就限制了耗時間的頁面的訪問,對正常客戶幾乎沒有什麼影響。
3、通過代理發送的HTTP_X_FORWARDED_FOR變數來判斷使用代理攻擊機器的真實IP,這招完全可以找到發動攻擊的人,當然,不是所有的代理伺服器都發送,但是有很多代理都發送這個參數。詳細代碼:
這樣會生成CCLog.txt,它的記錄格式是:真實IP[代理的IP]時間,看看哪個真實IP出現的次數多,就知道是誰在攻擊了。將這個代碼做成Conn.asp檔,替代那些連接資料庫的檔,這樣所有的資料庫請求就連接到這個檔上,然後馬上就能發現攻擊的人。
4、還有一個方法就是把需要對資料查詢的語句做在Redirect後面,讓對方必須先訪問一個判斷頁面,然後Redirect過去。
5、在存在多站的伺服器上,嚴格限制每一個站允許的IP連接數和CPU使用時間,這是一個很有效的方法。
CC的防禦要從代碼做起,其實一個好的頁面代碼都應該注意這些東西,還有SQL注入,不光是一個入侵工具,更是一個DDOS缺口,大家都應該在代碼中注意。舉個例子吧,某伺服器,開動了5000線的CC攻擊,沒有一點反應,因為它所有的訪問資料庫請求都必須一個隨機參數在Session裡面,全是靜態頁面,沒有效果。突然發現它有一個請求會和外面的伺服器聯繫獲得,需要較長的時間,而且沒有什麼認證,開800線攻擊,伺服器馬上滿負荷了。
代碼層的防禦需要從點點滴滴做起,一個腳本代碼的錯誤,可能帶來的是整個站的影響,甚至是整個伺服器的影響,慎之!