保守:站點應(yīng)盡快進行服務(wù)能力升級。
積極:盡所能,追溯攻擊者。
追溯攻擊者:
CC:proxy-forward-from-ip
單個IP高并發(fā)的DDOS:找到訪問異常的、高度可疑的ip列表,exploit,搜集、分析數(shù)據(jù),因為一個傀儡主機可被二次攻占的概率很大(但不建議這種方法)
單個IP低并發(fā)的DDOS:以前極少訪問被攻擊站點,但是在攻擊發(fā)生時,卻頻繁訪問我們的站點,分析日志得到這一部分ip列表
追溯攻擊者的過程中,snat與web proxy增加了追蹤的難度,如果攻擊者采用多個中繼服務(wù)器的方法,追溯將變得極為困難。
防御者:
1.應(yīng)對當(dāng)前系統(tǒng)了如指掌,如系統(tǒng)最高負載、最高數(shù)據(jù)處理能力,以及系統(tǒng)防御體系的強項與弱點
2.歷史日志的保存、分析
3.對當(dāng)前系統(tǒng)進行嚴格安全審計
4.上報公安相關(guān)部分,努力追溯攻擊者
5.網(wǎng)站,能靜態(tài),就一定不要動態(tài),可采取定時從主數(shù)據(jù)庫生成靜態(tài)頁面的方式,對需要訪問主數(shù)據(jù)庫的服務(wù)使用驗證機制。
6.防御者應(yīng)能從全局的角度,迅速及時地發(fā)現(xiàn)系統(tǒng)正在處于什么程度的攻擊、何種攻擊,在平時,應(yīng)該建立起攻擊應(yīng)急策略,規(guī)范化操作,免得在急中犯下低級錯誤
對歷史日志的分析這時將會非常重要,數(shù)據(jù)可視化與統(tǒng)計學(xué)的方法將會很有益處:
1.分析每個頁面的平均訪問頻率
2.對訪問頻率異常的頁面進行詳細分析 分析得到ip-頁面訪問頻率
3.得到對訪問異常頁面的訪問異常ip列表
4.對日志分析得到忠實用戶IP白名單
5.一般一個頁面會關(guān)聯(lián)多個資源,一次對于這樣的頁面訪問往往會同時增加多個資源的訪問數(shù),而攻擊程序一般不會加載這些它不感興趣的資源,所以,這也是一個非常好的分析突破點
防御思路
因為CC攻擊通過工具軟件發(fā)起,而普通用戶通過瀏覽器訪問,這其中就會有某些區(qū)別。想辦法對這二者作出判斷,選擇性的屏蔽來自機器的流量即可。
初級
普通瀏覽器發(fā)起請求時,除了要訪問的地址以外,Http頭中還會帶有Referer,UserAgent等多項信息。遇到攻擊時可以通過日志查看訪問信息,看攻擊的流量是否有明顯特征,比如固定的Referer或UserAgent,如果能找到特征,就可以直接屏蔽掉了。
中級
如果攻擊者偽造了Referer和UserAgent等信息,那就需要從其他地方入手。攻擊軟件一般來說功能都比較簡單,只有固定的發(fā)包功能,而瀏覽器會完整的支持Http協(xié)議,我們可以利用這一點來進行防御。
首先為每個訪問者定義一個字符串,保存在Cookies中作為Token,必須要帶有正確的Token才可以訪問后端服務(wù)。當(dāng)用戶第一次訪問時,會檢測到用戶的Cookies里面并沒有這個Token,則返回一個302重定向,目標(biāo)地址為當(dāng)前頁面,同時在返回的Http頭中加入set cookies字段,對Cookies進行設(shè)置,使用戶帶有這個Token。
客戶端如果是一個正常的瀏覽器,那么就會支持http頭中的set cookie和302重定向指令,將帶上正確的Token再次訪問頁面,這時候后臺檢測到正確的Token,就會放行,這之后用戶的Http請求都會帶有這個Token,所以并不會受到阻攔。
客戶端如果是CC軟件,那么一般不會支持這些指令,那么就會一直被攔在最外層,并不會對服務(wù)器內(nèi)部造成壓力。
高級
高級一點的,還可以返回一個網(wǎng)頁,在頁面中嵌入java script來設(shè)置Cookies并跳轉(zhuǎn),這樣被偽造請求的可能性更小
Token生成算法
Token需要滿足以下幾點要求
1,每個IP地址的Token不同
2, 無法偽造
3, 一致性,即對相同的客戶端,每次生成的Token相同
Token隨IP地址變化是為了防止通過一臺機器獲取Token之后,再通過代理服務(wù)區(qū)進行攻擊。一致性則是為了避免在服務(wù)器端需要存儲已經(jīng)生成的Token。
推薦使用以下算法生成Token,其中Key為服務(wù)器獨有的保密字符串,這個算法生成的Token可以滿足以上這些要求。
Token = Hash( UserAgent + client_ip + key )
本文主要講述了DDoS攻擊之一的CC攻擊工具實現(xiàn),以及如何防御來自應(yīng)用層的DDoS攻擊的理論總結(jié)。接下來的文章,筆者將會實現(xiàn)一個工作于內(nèi)核態(tài)的、具有黑名單功能的防火墻模塊,以對應(yīng)于上述防御狀態(tài)機中的防火墻單元,它實現(xiàn)了自主地動態(tài)內(nèi)存管理,使用hash表管理ip列表,并可以自定義hash表的modular。