本欄目下相關鏈接


防禦 CC 攻擊說明

CC 攻擊簡介

CC 攻擊的前身是 DDOS 攻擊(分佈式拒絕攻擊)。 DDOS 攻擊的原理針對 TCP/IP 協議的缺陷,也不能算是缺陷,只是當時設計該協議時是在幾十年前,設計者假定大家都是遵守遊戲規則的良好公民,現在聯網環境比當時要複雜得多,但是仍在使用以前的協議,所以才會帶來某些問題。 兩台機器通信要進行一個所謂的三次握手,首先是客戶機發出一個請求 (SYN) ,服務器收到該請求後,填寫會話信息表 (TCB,保存在內存中),並且向客戶機反饋一個回應包 (SYN-ACK) ,此時連接處於 TIME_WAIT 狀態,如果最終沒有收到客戶機的 ACK 信息包,會嘗試隔一段時間再發送一次回應包 SYN-ACK,這樣經過多次重試後,客戶機還沒有回應的話,服務器才會關閉會話,並從 TCB 中刪除掉該會話。這個等待過程大約為 30 秒。 當攻擊者同時發起十萬計的請求時 (SYN) 到服務器開放的端口,並且本身拒絕發送 SYN-ACK 回應時,服務器的的 TCB 將會很快超過負荷,並且攻擊者可以偽造包中的源 IP 地址,這樣攻擊者還不會被服務器返回的包堵住。可以看出這是 TCP/IP 協議中一個相當嚴重的問題。 通過防火牆策略審核過濾數據包,可以從一定程度上防止 DDOS 攻擊。

CC 攻擊跟 DDOS 攻擊本質上是一樣的,都是以消耗服務器資源為目的,目前看來,它主要針對 WEB 應用程序比較消耗資源的地方進行瘋狂請求,比如,論壇中的搜索功能,如果不加以限制,任由人搜索,普通配置的服務器在幾百個並發請求下,MYSQL 服務就掛掉了。

CC攻擊的種類有三種,直接攻擊,代理攻擊,殭屍網絡攻擊,直接攻擊主要針對有重要缺陷的 WEB 應用程序,一般說來是程序寫的有問題的時候才會出現這種情況,比較少見。殭屍網絡攻擊有點類似於 DDOS 攻擊了,從 WEB 應用程序層面上已經無法防禦,所以這兩種情況我們不進行深入的探討,這裡要主要討論第二種,代理攻擊,CC 攻擊者一般會操作一批代理服務器,比方說 100 個代理,然後每個代理同時發出 10 個請求,這樣 WEB 服務器同時收到 1000 個並發請求的,並且在發出請求後,立刻斷掉與代理的連接,避免代理返回的數據將本身的帶寬堵死,而不能發動再次請求,這時 WEB 服務器會將響應這些請求的進程進行隊列,數據庫服務器也同樣如此,這樣一來,正常請求將會被排在很後被處理,就像本來你去食堂吃飯時,一般只有不到十個人在排隊,今天前面卻插了一千個人,那麼輪到你的機會就很小很小了,這時就出現頁面打開極其緩慢或者白屏。

防禦 CC 攻擊

Discuz!5.5 在以往抗 CC 的基礎上又加了兩種方法,可以根據實際遭受攻擊的情況,通過配置組合出適合的抵抗方法。 限於篇幅,不詳細闡述對抗原理,現將配置方法做下簡要說明。
配置文件 config.inc.php


	$attackevasive = 0;		// 論壇防禦級別,可防止大量的非正常請求造成的拒絕服務攻擊
					// 防護大量正常請求造成的拒絕服務攻擊,
					// 0=關閉, 1=cookie 刷新限制, 2=限制代理訪問, 4=二次請求, 8=回答問題(第一次訪問時需要回答問題)
					// 組合為: 1|2, 1|4, 2|8, 1|2|4...

正常情況下設置為 0,在遭到攻擊時,分析其攻擊手法和規律,組合使用。
可以嘗試先設置為 2, 2|4, 1|2|4|, 1|2|4|8, 如果 1|2|4|8 還不行,我們認為應用程序層面上已經抵擋不住,可能主機遭受的攻擊來自於殭屍網絡的 DDOS 攻擊了,我們建議您從防火牆策略上入手。