陳 棟
(連云港廣播電視大學(xué))
DDoS(Distributed Denial of Service)分布式拒絕服務(wù)攻擊已經(jīng)成為除SQL注入式攻擊外,黑客最關(guān)心的攻擊方法.2009年5月19日,國內(nèi)著名的“暴風(fēng)門事件”就是由黑客利用了暴風(fēng)影音的軟件漏洞,使成千上萬的暴風(fēng)影音用戶向國內(nèi)域名服務(wù)器發(fā)送大量暴風(fēng)網(wǎng)站的DNS解析查詢信息,形成“多米諾骨牌”效應(yīng),形成大規(guī)模的DDoS攻擊后的大范圍網(wǎng)絡(luò)故障.
DDoS攻擊發(fā)源于傳統(tǒng)的DoS(Denial of Service)拒絕服務(wù)攻擊基礎(chǔ)之上,DoS往往是指黑客通過單一的IP地址向某一目標(biāo)主機(jī)發(fā)出“合法”的訪問請求,而耗盡目標(biāo)主機(jī)的網(wǎng)絡(luò)帶寬和硬件資源(CPU、內(nèi)存等)的攻擊方式.這種攻擊方式在當(dāng)今網(wǎng)絡(luò)技術(shù)和硬件技術(shù)飛速發(fā)展的情況下,已基本無用武之地.于是,分布式拒絕服務(wù)DDoS攻擊方式應(yīng)運而生.所謂分布式拒絕服務(wù)攻擊,就是黑客利用互聯(lián)網(wǎng)的優(yōu)勢,利用操作系統(tǒng)或軟件漏洞同時聯(lián)合眾多傀儡機(jī)對某一目標(biāo)主機(jī)展開更大規(guī)模、更高強(qiáng)度的攻擊,使目標(biāo)主機(jī)的大量網(wǎng)絡(luò)和硬件資源被占用,而無法對正常用戶提供服務(wù).
早期的DDoS攻擊主要針對于網(wǎng)絡(luò)層,利用TCP協(xié)議的缺陷實施攻擊.這類攻擊方法主要包括:SYN洪水攻擊、DNS查詢洪水攻擊等.
(1)SYN洪水攻擊
SYN洪水攻擊是黑客通過利用TCP協(xié)議的工作原理對目標(biāo)主機(jī)采取的攻擊活動.在互聯(lián)網(wǎng)中,任何兩個實體建立TCP連接都需要雙方進(jìn)行三次數(shù)據(jù)包的交換,稱之為“三次握手”.而黑客正是利用了這一過程中的漏洞,通過偽造數(shù)據(jù)包中的源IP地址,將帶有偽造源IP地址并含有SYN標(biāo)志位的數(shù)據(jù)包發(fā)送給服務(wù)器端,服務(wù)器端會向偽造IP地址發(fā)送請求確認(rèn)信息,但是該IP地址將不會做出回應(yīng),而服務(wù)器端則會繼續(xù)嘗試幾次直至響應(yīng)超時后丟棄此連接.黑客會發(fā)送大量的偽造源IP地址的數(shù)據(jù)包給服務(wù)器,而服務(wù)器會因SYN半連接請求占滿隊列而無法為正常的用戶提供服務(wù).
(2)DNS查詢洪水攻擊
DNS查詢洪水攻擊是針對于互聯(lián)網(wǎng)域名查詢系統(tǒng)的原理所產(chǎn)生的一種攻擊方式.DNS服務(wù)器在接收到客戶端的查詢請求之后,首先會在本地服務(wù)器上查找對應(yīng)的域名信息,如果未找到,服務(wù)器會將該請求轉(zhuǎn)發(fā)至上級域名服務(wù)器進(jìn)行遞歸查詢.黑客可以利用大量的傀儡機(jī)同時給域名服務(wù)器發(fā)送大量的域名查詢請求,當(dāng)單位時間內(nèi)的解析請求超過一定數(shù)量時,就會造成域名服務(wù)器解析超時甚至癱瘓.
近年來,隨著網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,各種網(wǎng)絡(luò)應(yīng)用軟件和Web應(yīng)用系統(tǒng)鋪天蓋地,傳統(tǒng)的針對的網(wǎng)絡(luò)層的攻擊已經(jīng)越來越少,取而代之的是針對應(yīng)用層的攻擊.由于應(yīng)用層協(xié)議的多樣化和復(fù)雜性,因此針對于應(yīng)用層攻擊所產(chǎn)生的破壞力遠(yuǎn)大于針對網(wǎng)絡(luò)層的攻擊,針對應(yīng)用層的DDoS攻擊主要有CC攻擊.
CC(Challenge Collapsar)攻擊,譯為挑戰(zhàn)黑洞攻擊.CC攻擊往往針對于基于數(shù)據(jù)庫的Web應(yīng)用系統(tǒng).黑客通過控制代理服務(wù)器或者大量在線的“肉雞”,偽裝成指向目標(biāo)服務(wù)器的合理請求,實現(xiàn)單用戶或多用戶同時多線程的動態(tài)頁面的訪問,此類攻擊以應(yīng)用層信息流為攻擊方式,此方式必須以真實的IP地址建立正常的TCP連接為前提.由于所提交的HTTP請求往往可以導(dǎo)致服務(wù)器執(zhí)行查詢等一系列復(fù)雜的動作,所以會耗費服務(wù)器大量的系統(tǒng)資源用于數(shù)據(jù)庫調(diào)用.
(1)SYN洪水攻擊的防御方法
防御SYN洪水攻擊的方法可以通過在服務(wù)器操作系統(tǒng)中加固TCP/IP協(xié)議堆棧實現(xiàn).以Windows Server 2003為例,在運行欄輸入“Regedit”命令,打開注冊表編輯器.找到 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiceTcpipParameters項.第一步:啟用系統(tǒng)SYN攻擊防護(hù)功能,創(chuàng)建一個名為SynAttackProtect的REG_DWORD數(shù)值項,并設(shè)置為十六進(jìn)制數(shù)1.第二步:設(shè)定觸發(fā)SYN洪水攻擊保護(hù)時的TCP連接請求的閾值,創(chuàng)建一個名為TCPMax-PortsExhausted的REG_DWORD數(shù)值項,并設(shè)置為十六進(jìn)制數(shù)5(有效值0~65535).第三步:限制同時打開的TCP半連接數(shù),創(chuàng)建一個名為TCPMaxHalfOpen的REG_DWORD數(shù)值項,并設(shè)置為十六進(jìn)制數(shù)500(有效值100~65535).第四步:縮短TCP半連接的超時時間,創(chuàng)建一個名為TCPMaxHalfOpenRetried的REG_DWORD數(shù)值項,并設(shè)置為十六進(jìn)制數(shù)400(有效值 80~65535).
(2)DNS查詢洪水攻擊的防御方法
建立基于DNS解析服務(wù)器群集的負(fù)載均衡系統(tǒng)是一種解決針對DNS查詢洪水攻擊的有效方法.可以將用戶請求分配到DNS解析服務(wù)器群集中具有不同IP的主機(jī)上,一方面可以增加攻擊者的成本,另一方面可以方便網(wǎng)絡(luò)管理員分析這種“過多”的DNS請求以查找攻擊者,然后配置相應(yīng)的防火墻策略以大大減少服務(wù)器資源耗盡的風(fēng)險.但是,此方法成本較高,適用于大型網(wǎng)絡(luò).而對于小型網(wǎng)絡(luò)而言,通常只有一臺DNS服務(wù)器,投入大量資金構(gòu)建群集系統(tǒng)顯然是不可能的,因此快速查找到異常對于網(wǎng)絡(luò)管理員來說非常重要.DNS Flood Detector是一種基于Libcap模塊的第三方軟件,該軟件工作在非混雜模式下,通過監(jiān)聽網(wǎng)絡(luò)中的DNS的流量請求信息來判斷DNS服務(wù)器是否正在遭受查詢洪水攻擊,適用于 Unix、Linux、Mac OS、FreeBSD 等操作系統(tǒng).
DNS Flood Detector的用法如下:
例如:當(dāng)需要以前臺模式輸出每秒查詢超過10次記錄的詳細(xì)信息,可執(zhí)行以下命令:./dns_flood_detector-v-v-b-t10
運行結(jié)果:
[17:15:57] source[192.168.1.46]-0 qps tcp:24 qps udp[8 qps A][16 qps PTR]
[17:15:57] source [10.0.24.3] -0 qps tcp:15 qps udp[15 qps A]
[17:16:07] source [192.168.1.46] -0 qps tcp:24 qps udp[8 qps A][16 qps PTR]
[17:16:07] source [10.0.24.3] -0 qps tcp:15 qps udp[14 qps A]
[17:16:17] source [192.168.1.46] -0 qps tcp:23 qps udp[7 qps A][15 qps PTR]
通過分析運行結(jié)果,網(wǎng)絡(luò)管理員可以方便的查找到攻擊者的源IP地址、端口號、PTR(指針)和MX(郵件交換)記錄等詳細(xì)信息,并據(jù)此設(shè)置相應(yīng)的防護(hù)策略.
由于通過防火墻技術(shù)來防御CC攻擊的方法主要局限于檢測單個IP地址的并發(fā)數(shù)來進(jìn)行判斷,但是如果存在大量的IP地址,而每個IP地址的連接數(shù)相對較少的情況下,這種方法反而并不有效,所以,從根本上防御CC攻擊的方法主要是通過網(wǎng)頁代碼來實現(xiàn),可以通過限制客戶端訪問的最大線程數(shù)來防御,以ASP代碼示例如下:
Dim IP_Client,TimeOut,Interval,Thread_Max,Brow_Client
TimeOut=600'設(shè)置訪問超時時間
Interval=1'最短刷新時間
Thread_Max=10'客戶端最大線程數(shù)
IP_Client=Request.ServerVariables("REMOTE_ADDR")'獲取客戶端IP
Brow_Client=Replace(Request.ServerVariables("HTTP_USER_AGENT"),vbCrLf,"")
'獲取客戶端瀏覽器版本
Application.Lock
If IsEmpty(Application(IP_Client))Then '當(dāng)客戶端第一次訪問時,為該客戶創(chuàng)建一
個包括IP地址、瀏覽器版本及詳細(xì)URL地址的Application變量
Application(IP_Client)="0"& vbCrLf&Now&
vbCrLf&_
Brow_Client& vbCrLf&GetDetailUrl()
Else
C_arr=Split(Application(IP_Client),vbCrLf)'建立訪問臨界值數(shù)組
If Int(C_arr(0))>=Thread_Max Then'判斷客戶端是否被封
If DateDiff("S",C_arr(2),Now)> =Int(C_arr(0))Then'判斷是否需要解封
C_arr(0)="0"
C_arr(2)=Now
Else
C_arr(0)=Int(C_arr(0))+1'繼續(xù)延長客戶端被封時間
SendBanMessage()
End If
Else
If DateDiff("S",C_arr(2),Now)< =Interval Then'判斷訪問間隔
C_arr(0)=Int(C_arr(0))+1'臨界值增1
Else
If Int(C_arr(0))<1 Then'處理數(shù)組為負(fù)的情況
C_arr(0)=0
Else
C_arr(0)=Int(C_arr(0))-1 '臨界值減1
End If
End If
C_arr(2)=Now'置為最近訪問時間
End If
End If
Function SendBanMessage()'定義函數(shù)客戶端IP被封時彈出提示信息
Response.Clear
Dim RemainTime
RemainTime=C_arr(0)-DateDiff("S",C_arr(2),Now)'客戶端解禁時間% >
你的訪問頻率過快!<br><br>
你的IP地址將于 <%=RemainTime% >秒之后解封!<%
Response.End
End Function
以上介紹的幾種防御方法可以有效的緩解各種常見的DDoS攻擊影響,而DDoS攻擊的最終目的是要耗盡服務(wù)器的網(wǎng)絡(luò)和硬件資源,因此,從這個角度上來講,哪怕有足夠多的正常訪問請求也同樣可以造成服務(wù)器的“拒絕服務(wù)”的情況出現(xiàn).所以,從根本上解決拒絕服務(wù)攻擊,還需要做好以下幾點工作:
(1)保證服務(wù)器有足夠的網(wǎng)絡(luò)帶寬.比如,服務(wù)器的現(xiàn)有帶寬為1M~10M的就很難抵御由百兆網(wǎng)絡(luò)或千兆網(wǎng)絡(luò)發(fā)起的攻擊.
(2)適時升級服務(wù)器硬件.服務(wù)器的CPU和內(nèi)存資源都是DDOS攻擊的主要消耗目標(biāo),如果要有效的抵抗每秒100萬個SYN數(shù)據(jù)包,就必須至少配備2.4 GHz的至強(qiáng)雙核處理器和1 G的內(nèi)存.因此在資金條件允許的情況下,請盡量增加CPU和內(nèi)存.
(3)采用較新的服務(wù)器操作系統(tǒng).新推出的服務(wù)器操作系統(tǒng)通常具有較高的安全性和增強(qiáng)型的網(wǎng)絡(luò)服務(wù)功能,并預(yù)置了許多安全策略,有利于抵抗各種攻擊.
(4)及時打補(bǔ)丁修復(fù)系統(tǒng)漏洞.必須及時修復(fù)系統(tǒng)漏洞,以免服務(wù)器漏洞被黑客利用,以使自身淪為傀儡機(jī),成為攻擊別人的幫兇.
(5)提前做好針對性預(yù)防工作.比如,針對SYN洪水攻擊,可以在服務(wù)器安裝完成后就開始加固TCP堆棧;而針對CC攻擊,可以在網(wǎng)頁設(shè)計階段就加入防止CC攻擊程序.
(6)準(zhǔn)確判斷攻擊方式.發(fā)生攻擊時,應(yīng)通過軟件抓取數(shù)據(jù)包進(jìn)行分析,根據(jù)不同的攻擊方式采取不同的解決方法.
(7)保留詳細(xì)系統(tǒng)日志,方便追查元兇.
[1] 丁黃望.DDOS攻擊主動防御機(jī)制的設(shè)計[J].福建電腦,2012(9):36-42.
[2] 王鵬.互聯(lián)網(wǎng)防御DOS/DDOS攻擊策略研究[J].郵電設(shè)計技術(shù),2012(10):23-28.
[3] 張永錚.DDoS攻擊檢測和控制方法[J].軟件學(xué)報,2012(8):19-24.
[4] 熊俊.應(yīng)用層DDOS攻擊檢測技術(shù)研究[J].信息安全與技術(shù),2012(9):32-34.
[5] 厲斌.網(wǎng)絡(luò)監(jiān)控與有效防御DDoS攻擊的研究[J].信息網(wǎng)絡(luò)安全,2013(10):42-46.
[6] 謝逸.非平穩(wěn)動態(tài)行為模型及其在DDoS檢測中的應(yīng)用[J].小型微型計算機(jī)系統(tǒng),2013(9):21-24.
[7] 么利中.DDOS攻擊手段及其防護(hù)研究[J].科技創(chuàng)新與應(yīng)用,2013(31):32-35.
[8] 辛憶培.DDoS攻擊的檢測算法研究[J].信息安全與技術(shù),2013(9):31-34.