摘 要:本文首先介紹了分布式拒絕服務攻擊(DDoS)的實施原理,進而分析了DDoS攻擊對電子商務網(wǎng)站和DNS服務器的危害,最后提出了一種防御基于DNS放大DDoS攻擊的方案。
關鍵詞:分布式拒絕服務攻擊 DNS UDP 放大攻擊 反射攻擊
電子商務指的是利用簡單、快捷、低成本的電子通訊方式,買賣雙方不謀面地進行各種商貿(mào)活動。然而隨著網(wǎng)絡技術(shù)的發(fā)展,拒絕服務攻擊也越來越成為電子商務網(wǎng)站始終如揮之不去的夢魘。
一、分布式拒絕服務攻擊的實施原理
拒絕服務攻擊(DoS)一般可以被歸納為兩大類。第一種DoS攻擊主要是利用網(wǎng)絡協(xié)議漏洞、操作系統(tǒng)或應用軟件的缺陷來達到攻擊的目的,如比較有名的ping of death攻擊。第二種是攻擊者直接向目標機器發(fā)送大量精心偽造的數(shù)據(jù)包,其主要目標往往是目標系統(tǒng)中最稀缺的資源,如內(nèi)存,CPU或者網(wǎng)絡帶寬等。此類型的拒絕服務攻擊一般被稱為泛洪(flooding)攻擊,如SYN-Flood 攻擊就是屬于此類攻擊。
二、分布式拒絕服務攻擊的危害性
拒絕服務攻擊威脅著因特網(wǎng)上所有類型的服務,DNS服務器也不例外。與DNS服務器相關的攻擊也可以分為兩種。第一種情況是以DNS服務器為攻擊目標,即攻擊者直接向DNS服務器發(fā)送大量的DNS查詢請求或其他無用的UDP流量進而影響DNS服務器的正常工作。防御這種蠻力攻擊的簡單有效的方法是使用Cluster集群技術(shù)進行負載平衡,這也是眾多世界級公司慣用的抵御DoS攻擊的措施。第二種DNS相關攻擊更為精巧和策略性,攻擊者往往利用DNS服務器來放大攻擊流量(也就是所謂的DNS放大攻擊或反射攻擊)。其基本原理是攻擊者發(fā)送一個 偽造的DNS詢問請求給DNS服務器,而這個DNS詢問請求的源地址被設置為目標地址(即被攻擊者地址)。由于DNS應答數(shù)據(jù)包的字節(jié)數(shù)遠大于DNS詢問數(shù)據(jù)包,故無形中攻擊流量被放大了。因此DNS放大攻擊會不但會耗盡被攻擊者的下行帶寬,也會消耗被利用DNS服務器的上行帶寬。由于攻擊流量會被放大,故一個攻擊者可以輕易的耗盡帶寬比自己大數(shù)倍的目標機器的帶寬。
三、DNS放大攻擊的防御措施研究
一個有效的防御方案的主要任務是在可承受的計算能力和內(nèi)存消耗下,能區(qū)分出正常的DNS應答數(shù)據(jù)流量和攻擊流量。具體來說,正常情況下發(fā)送的DNS詢問請求數(shù)據(jù)包和收到的DNS應答數(shù)據(jù)包都是對應的(當然未必是一一對應,由于某些請求可能未得到回應,故請求數(shù)據(jù)包的數(shù)量一般大于應答數(shù)據(jù)包,但真實的應答數(shù)據(jù)包必然有相對應的詢問數(shù)據(jù)包),而當攻擊發(fā)生時被攻擊機器將會收到大量沒有相應發(fā)送請求記錄的應答數(shù)據(jù)包(我們可稱這些數(shù)據(jù)包為未配對數(shù)據(jù)包),這些數(shù)據(jù)包就可以被標志為可疑的數(shù)據(jù)包。
我們使用snort來監(jiān)視進出機器的DNS詢問請求和應答數(shù)據(jù)包。同時我們使用PHP語言編寫了一個DNS放大攻擊檢測軟件DDAA(Detecting DNA Amplification Attacks)來實時處理我們捕獲到的數(shù)據(jù)并把這些信息存放到數(shù)據(jù)庫中,其中我們根據(jù)端口53來區(qū)分是否是DNS數(shù)據(jù)流量。其次我們可以把機器接收到的DNS應答數(shù)據(jù)包按照其特征可以被劃分為正?;蚩梢?。
下圖顯示了我們提出的防御方案的總體架構(gòu)。簡而言之,當DDAA引擎檢測到DNS數(shù)據(jù)包時先判定數(shù)據(jù)包是詢問請求包還是應答包(可根據(jù)源端口和目的端口來判定)。如果是詢問請求數(shù)據(jù)包,DDAA會把該包的信息寫入數(shù)據(jù)表,并供以后查詢。當確認是應答數(shù)據(jù)包后,DDAA會在數(shù)據(jù)庫表中尋找與之匹配的詢問請求數(shù)據(jù)包。如果未能在相應時間段內(nèi)(如5秒內(nèi))查詢到與之匹配的請求數(shù)據(jù)包,則可判定該應答數(shù)據(jù)包為可疑數(shù)據(jù)包。當可疑數(shù)據(jù)包的數(shù)目超過一個閥值后,如下圖所示,DDAA將會產(chǎn)生一個警報信號并改寫防火墻的設置來阻塞來自該IP地址的所有數(shù)據(jù)。DDAA軟件中的所有參數(shù)設置(如閥值等)都可以根據(jù)系統(tǒng)管理員的安全策略而動態(tài)的變化。
為了評估本方案的識別攻擊的準確度,我們按照圖1架構(gòu)了系統(tǒng)并模擬了攻擊。根據(jù)我們前面所述的場景,攻擊者偽造了DNS請求數(shù)據(jù)包并發(fā)送給本地DNS服務器,以便產(chǎn)生DoS攻擊。此場景下受害者可以是DNS服務器本身或者是其他網(wǎng)絡里的機器(只要DNS請求數(shù)據(jù)包里的源地址設為受害者地址即可)。當攻擊者的攻擊達到一定強度(即警報數(shù)超過一定閥值),DDAA會向防火墻發(fā)出信息,以阻塞該IP地址對系統(tǒng)的攻擊。一個指示防火墻阻塞IP地址 202.116.64.106的命令如下:
iptables-I RH-Firewall-1-INPUT-p udp-s 202.116.64.106-m-tate NEW-
m udp-sport 53-j REJECT
四、結(jié)束語
分布式拒絕服務攻擊(DDoS)嚴重威脅了電子商務網(wǎng)站的正常運作。本文中我們主要討論了基于DNS放大的DDoS攻擊的產(chǎn)生機理,并提出了一種新穎,有效和易實現(xiàn)的方法來減低此種攻擊對客戶機的危害。部署本方案可以較好的保護本地DNS服務器和主機,可以把攻擊帶來的損失降低到最小,從而提高了電子商務活動的安全性。
參考文獻:
[1]謝逸等.“新網(wǎng)絡環(huán)境下應用層DDoS攻擊的剖析與防御”.《電信科學》,2007年01期,89頁-93頁.
[2]李目海.“基于流量的分布式拒絕服務攻擊檢測”.華東師范大學,2010年博士論文.