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

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