DDoS攻擊引起的網(wǎng)絡(luò)擁塞,是由惡意主機(jī)控制大量傀儡機(jī)所造成的,并非傳統(tǒng)意義上的端到端擁塞,所以只能在路由器上進(jìn)行控制,即基于IP擁塞控制來(lái)實(shí)現(xiàn)的。而目前主流的七種IP擁塞控制算法都需要在改進(jìn)后,才能有效地應(yīng)用于防范DDoS攻擊。
分布式拒絕服務(wù)DDoS(Distributed Denial of Service)攻擊被認(rèn)為是目前Internet所面臨的最大威脅之一。
目前有一些常用的DDoS攻擊防護(hù)機(jī)制和方法包括: 通過(guò)修改配置和協(xié)議預(yù)防攻擊、反向查找攻擊源頭、攻擊檢測(cè)和過(guò)濾、分布式攻擊檢測(cè)和過(guò)濾(主機(jī)端/路由器端)等。
DDoS攻擊與網(wǎng)絡(luò)擁塞
網(wǎng)絡(luò)產(chǎn)生擁塞的根本原因在于用戶提供給網(wǎng)絡(luò)的負(fù)載超過(guò)了網(wǎng)絡(luò)的存儲(chǔ)和處理能力,表現(xiàn)為無(wú)效數(shù)據(jù)包增加、報(bào)文時(shí)延增加與丟失、服務(wù)質(zhì)量降低等。如果此時(shí)不能采取有效的檢測(cè)和控制手段,就會(huì)導(dǎo)致?lián)砣饾u加重,甚至造成系統(tǒng)崩潰,在一般情況下形成網(wǎng)絡(luò)擁塞的三個(gè)直接原因是:
● 路由器存儲(chǔ)空間不足。幾個(gè)輸入數(shù)據(jù)流需要同一個(gè)輸出端口,如果入口速率之和大于出口速率,就會(huì)在這個(gè)端口上建立隊(duì)列。如果沒(méi)有足夠的存儲(chǔ)空間,數(shù)據(jù)包就會(huì)被丟棄,對(duì)突發(fā)數(shù)據(jù)流更是如此。增加存儲(chǔ)空間在表面上似乎能解決這個(gè)矛盾,但根據(jù)Nagel的研究,如果路由器有無(wú)限存儲(chǔ)量時(shí),擁塞只會(huì)變得更壞。
● 帶寬容量相對(duì)不足。直觀地說(shuō),當(dāng)數(shù)據(jù)總的輸入帶寬大于輸出帶寬時(shí),在網(wǎng)絡(luò)低速鏈路處就會(huì)形成帶寬瓶頸,網(wǎng)絡(luò)就會(huì)發(fā)生擁塞,相關(guān)證明可參考香農(nóng)信息理論。
● 處理器處理能力較弱。如果路由器的CPU在執(zhí)行排隊(duì)緩存、更新路由表等操作時(shí),處理速度跟不上高速鏈路,會(huì)產(chǎn)生擁塞。同理,低速鏈路對(duì)高速處理器也會(huì)產(chǎn)生擁塞。
以上是早期Internet網(wǎng)絡(luò)發(fā)生擁塞的三個(gè)主要原因。對(duì)此,TCP擁塞控制給出了較好的解決方案。在實(shí)際應(yīng)用中,如果所有的端用戶均遵守或兼容TCP擁塞控制機(jī)制,網(wǎng)絡(luò)的擁塞能得到很好的控制。但是,當(dāng)DDoS攻擊造成網(wǎng)絡(luò)擁塞時(shí),TCP基于窗口的擁塞控制機(jī)制對(duì)此無(wú)法加以解決。原因是攻擊帶來(lái)的擁塞是由大量惡意主機(jī)發(fā)送數(shù)據(jù)所造成的,這些主機(jī)不但不會(huì)完成TCP擁塞控制機(jī)制所規(guī)定的配合工作,甚至本身就可能包含了偽造源地址、加大數(shù)據(jù)發(fā)送量、增加連接數(shù)等攻擊方式。在此情況下,對(duì)DDoS攻擊所造成的網(wǎng)絡(luò)擁塞就必須在路由器上進(jìn)行處理,這只能是基于IP擁塞控制來(lái)實(shí)現(xiàn)的。
需要注意的是,DDoS攻擊所造成的網(wǎng)絡(luò)擁塞不同于上面所分析的普通情況,它們之間存在著本質(zhì)差異。相比之下,DDoS攻擊所造成的擁塞,其攻擊數(shù)據(jù)常常在分組大小、到達(dá)時(shí)間、協(xié)議類型等諸多方面具有一定相關(guān)性,這是由分布式拒絕服務(wù)自身特點(diǎn)所決定的。而普通情況下的網(wǎng)絡(luò)擁塞,其數(shù)據(jù)并非由多個(gè)受控攻擊者發(fā)送,因而不具有類似的相關(guān)性。對(duì)攻擊所造成的擁塞進(jìn)行防護(hù),就應(yīng)首先找到這個(gè)相關(guān)性,在此基礎(chǔ)上引入傳統(tǒng)擁塞控制機(jī)制并加以完善,才能進(jìn)行高效、準(zhǔn)確的檢測(cè)和控制工作。
七種主流IP擁塞控制算法及評(píng)價(jià)
根據(jù)DDoS攻擊的原理和機(jī)制,對(duì)各種機(jī)制的防護(hù)能力做評(píng)價(jià)時(shí)應(yīng)參照以下標(biāo)準(zhǔn): 條件一,是否能按一定規(guī)則進(jìn)行特征設(shè)定; 條件二,是否能根據(jù)一定規(guī)則對(duì)流經(jīng)的數(shù)據(jù)加以區(qū)分; 條件三,針對(duì)不同類型的數(shù)據(jù)包,是否能提供不同優(yōu)先級(jí)的服務(wù)。如果一個(gè)擁塞控制機(jī)制滿足了以上三個(gè)條件,就基本上具備了防護(hù)DDoS攻擊的能力。
下面將簡(jiǎn)略地分析當(dāng)前一些主流IP擁塞控制算法,并對(duì)其防護(hù)DDoS攻擊的可行性進(jìn)行評(píng)價(jià):
● 先進(jìn)先出FIFO(First In First Out)
傳統(tǒng)的先進(jìn)先出策略是目前Internet上使用最廣泛的一種服務(wù)模型。它的最大優(yōu)點(diǎn)是便于實(shí)施,但由于FIFO本質(zhì)上是一種“去尾”(Drop-tail)的算法,所以當(dāng)突發(fā)性數(shù)據(jù)到達(dá)時(shí)容易出現(xiàn)包丟失現(xiàn)象,其公平性較差,對(duì)上層的TCP快速恢復(fù)的效率也較低。
對(duì)照評(píng)價(jià)標(biāo)準(zhǔn)可知,該算法沒(méi)有滿足任何一個(gè)條件,過(guò)于簡(jiǎn)單且缺乏智能性,完全不能用于DDoS攻擊防護(hù)。
● 隨機(jī)早期檢測(cè)算法RED(Random Early Detection)
RED算法是按一定概率丟棄進(jìn)入路由器的數(shù)據(jù)包。RED的早期設(shè)計(jì)思路是避免丟棄屬于同一連接的連續(xù)數(shù)據(jù)包,從而提高連接的吞吐量。通過(guò)分?jǐn)偘鼇G失率,RED可以在各連接之間獲得較好的公平性,對(duì)突發(fā)業(yè)務(wù)的適應(yīng)性較強(qiáng)。RED也存在一些不足,例如可能會(huì)引起網(wǎng)絡(luò)的不穩(wěn)定,而且選擇合適的配置參數(shù)也不是一件容易的事。近年來(lái),研究者提出了許多RED的改進(jìn)算法,這些算法都在一定程度上,從不同方面改善了RED的性能。
對(duì)照評(píng)價(jià)標(biāo)準(zhǔn)可知,該方法對(duì)DDoS攻擊的防護(hù)作用不大,由于其思路是分?jǐn)偘鼇G失率,對(duì)正常業(yè)務(wù)和攻擊數(shù)據(jù)“過(guò)分公平”,不能做到有所區(qū)分,從而使得大量正常業(yè)務(wù)在攻擊發(fā)生時(shí)無(wú)法得到服務(wù)。
● 顯示擁塞指示算法ECN(Explicit Congestion Notification)
前面兩種擁塞控制算法都是通過(guò)包丟失來(lái)告訴端系統(tǒng),網(wǎng)絡(luò)已經(jīng)發(fā)生擁塞。而顯示擁塞指示算法通過(guò)明確的擁塞提示(RFC2481)來(lái)實(shí)現(xiàn)擁塞控制,對(duì)一次性大批量數(shù)據(jù)傳輸?shù)男Ч容^理想,但對(duì)時(shí)延有一定要求。
該算法在源端數(shù)據(jù)包中嵌入ECN,由路由器根據(jù)網(wǎng)絡(luò)情況設(shè)置CE(Congestion Experienced)比特位。源端接收到從網(wǎng)絡(luò)中反饋回來(lái)的這種CE置位數(shù)據(jù)包后,將隨后發(fā)出的數(shù)據(jù)包標(biāo)記為可丟棄的數(shù)據(jù)包。ECN的優(yōu)勢(shì)在于不需要超時(shí)重傳,也不依賴于粗粒度的TCP定時(shí),所以在對(duì)時(shí)延有一定要求的應(yīng)用場(chǎng)合性能較好。在此基礎(chǔ)上還提出了另一種改進(jìn)算法,它通過(guò)調(diào)整擁塞窗口CWND的大小,糾正有長(zhǎng)時(shí)間RTT的TCP連接的偏差,來(lái)改進(jìn)共享瓶頸處帶寬的公平性。
對(duì)照評(píng)價(jià)標(biāo)準(zhǔn)可知,該方法對(duì)防護(hù)DDoS攻擊效果不大,原因在于無(wú)攻擊特征識(shí)別和區(qū)分功能,在攻擊發(fā)生時(shí)智能性較差。
● 公平排隊(duì)算法FQ(Fair Queuing)
在FQ算法中路由器對(duì)每個(gè)輸出線路都建有一個(gè)排隊(duì)隊(duì)列。當(dāng)一條線路空閑時(shí),路由器就來(lái)回掃描所有隊(duì)列,依次將每隊(duì)的第一個(gè)包發(fā)出。FQ的帶寬分配獨(dú)立于數(shù)據(jù)包大小,各種服務(wù)在隊(duì)列中幾乎同時(shí)開(kāi)始。因此在沒(méi)有犧牲統(tǒng)計(jì)復(fù)用的情況下提供了另外的公平性,與端到端的擁塞控制機(jī)制可以較好地協(xié)同。它的缺點(diǎn)在于實(shí)現(xiàn)起來(lái)很復(fù)雜,需要每個(gè)數(shù)據(jù)流的排隊(duì)處理、每個(gè)流的狀態(tài)統(tǒng)計(jì)、數(shù)據(jù)包的分類以及包調(diào)度的額外開(kāi)銷等。
對(duì)照評(píng)價(jià)標(biāo)準(zhǔn)可知,該方法對(duì)防護(hù)DDoS攻擊效果不大,原因同ECN法。#p#分頁(yè)標(biāo)題#e#

● 加權(quán)公平排隊(duì)算法WFQ(Weighted Fair Queuing)
加權(quán)公平排隊(duì)算法是FQ的改進(jìn)算法。根據(jù)不同數(shù)據(jù)流的不同帶寬要求,對(duì)每個(gè)排隊(duì)隊(duì)列采用加權(quán)方法分配緩存資源,從而增加FQ對(duì)不同應(yīng)用的適應(yīng)性,該算法還有其他一些改進(jìn)算法。
對(duì)照評(píng)價(jià)標(biāo)準(zhǔn)可知,該方法通過(guò)改進(jìn)后可用于防護(hù)DDoS攻擊,思路是首先對(duì)攻擊進(jìn)行檢測(cè)和分類,然后將入口數(shù)據(jù)按攻擊數(shù)據(jù)、正常數(shù)據(jù)、可疑數(shù)據(jù)三種類型分別排隊(duì)處理,對(duì)攻擊數(shù)據(jù)直接丟棄,而通過(guò)對(duì)可疑和正常數(shù)據(jù)賦予一定權(quán)值,來(lái)提供不同質(zhì)量的服務(wù)。在路由器性能良好、處理能力強(qiáng)的情況下,甚至可以采取更復(fù)雜、智能的處理策略,例如多優(yōu)先級(jí)隊(duì)列。
● 加權(quán)隨機(jī)先期檢測(cè)WRED(Weighted Random Early Detection)
是將隨機(jī)先期檢測(cè)與優(yōu)先級(jí)排隊(duì)結(jié)合起來(lái),這種結(jié)合為高優(yōu)先級(jí)分組提供了優(yōu)先通信服務(wù)能力。當(dāng)某個(gè)接口開(kāi)始出現(xiàn)擁塞時(shí),它有選擇丟棄優(yōu)先級(jí)較低的分組,而不是簡(jiǎn)單地隨機(jī)丟棄分組。
對(duì)照評(píng)價(jià)標(biāo)準(zhǔn)可知,該方法通過(guò)改進(jìn)后可用于防護(hù)DDoS攻擊,思路與WFQ類似,它們都符合評(píng)價(jià)標(biāo)準(zhǔn)的條件三,改進(jìn)應(yīng)從增加條件一和條件二著手。
● 定制排隊(duì)
定制排隊(duì)是為允許具有不同最低帶寬和延遲要求的應(yīng)用程序共享網(wǎng)絡(luò)而設(shè)計(jì)的。定制排隊(duì)為不同協(xié)議分配不同的隊(duì)列空間,并以循環(huán)方式處理隊(duì)列,當(dāng)特定協(xié)議的數(shù)據(jù)流被分配了較大的隊(duì)列空間,也就獲得了較優(yōu)先的服務(wù),定制排隊(duì)比優(yōu)先級(jí)隊(duì)列更為公平。定制排隊(duì)可以保證每一個(gè)特定的通信類型得到固定的可用帶寬,同時(shí)在鏈路緊張的情況下,避免了數(shù)據(jù)流企圖超出預(yù)分配量限制的可能。
對(duì)照評(píng)價(jià)標(biāo)準(zhǔn)可知,該方法通過(guò)改進(jìn)后可用于防護(hù)DDoS攻擊,都是在資源分配和使用時(shí)為不同業(yè)務(wù)提供優(yōu)先級(jí)加權(quán),改進(jìn)思路與WFQ和WRED類似。
除了以上7種方法以外,還有其他一些方法。如將FQ與RED算法結(jié)合起來(lái)的Flow RED算法,它將緩存分成若干排隊(duì)隊(duì)列,再在每個(gè)數(shù)據(jù)流使用RED算法,仿真實(shí)驗(yàn)證明它的公平性較好; 又如核心無(wú)狀態(tài)公平排隊(duì)算法CSFQ(Core-Stateless Fair Queuing)在網(wǎng)絡(luò)邊界路由器執(zhí)行數(shù)據(jù)流管理,而在核心并不做處理等等。
可以看出,這些算法的防護(hù)能力存在著較大差異,其中的任何一種都需要在改進(jìn)后,才能有效地應(yīng)用于控制DDoS攻擊所造成的網(wǎng)絡(luò)擁塞。