什麼是DDOS
分佈式拒絕服務攻擊(英文意思是Distributed Denial of Service,簡稱DDoS)是指處於不同位置的多個攻擊者同時向一個或數個目標發動攻擊,或者一個攻擊者控制了位於不同位置的多臺機器並利用這些機器對受害者同時實施攻擊。由於攻擊的發出點是分佈在不同地方的,這類攻擊稱爲分佈式拒絕服務攻擊,其中的攻擊者可以有多個。
DNS查詢過程通常都是基於UDP協議的,UDP協議是無連接狀態的。所以這一弱點很容易被黑客所利用,DNS服務器收到DNS reply報文時,不管自己有沒有發出去過解析請求,都會對這些DNS reply報文進行處理。DNS reply flood就是黑客發送大量的DNS reply報文到DNS緩存服務器,導致緩存服務器因爲處理這些DNS reply報文而資源耗盡,影響正常業務。
DNS reply flood大多都是虛假源攻擊,黑客控制殭屍主機發出的DNS reply報文的源IP地址通常都是僞造的,是不存在的。所以在防禦的時候,就可以從迴應源IP地址的真假性入手,判定這個源IP是否是真實源。
針對這種攻擊行爲,Anti-DDoS系統一般可使用源認證方式進行防禦。源認證的方法就是構造一個DNS request報文,看客戶端是否能正常回應。
1、Anti-DDoS系統部署在防護目標前,並對到達防護目標的DNS reply報文進行統計。當到達防護目標的DNS reply報文超過告警閾值時,Anti-DDoS系統啓動防禦。
2、Anti-DDoS系統收到某個源IP地址發來的DNS reply報文後,會重新構造一個新的DNS request報文,然後記錄構造查詢報文的Query ID和源端口號。
3、如果是虛假源,則不會對這個DNS request報文進行迴應,認證不通過。
4、如果是真實DNS授權服務器,則會重新迴應DNS reply報文。
5、Anti-DDoS系統收到DNS reply報文後,會與之前記錄的Query ID和源端口號進行匹配。如果完全一致,則判定此DNS reply報文就是反彈DNS request報文的迴應,源認證成功,加入白名單。
6、後續這個源再發送的DNS reply報文,直接通過,直到白名單老化。
近幾年,還有一種升級版的DNS reply flood攻擊,因爲殺傷力巨大,而備受安全界的關注,那就是DNS反射攻擊。
0x02 DNS反射攻擊
DNS反射攻擊是DNS reply flood的一種變異,是一種更高級的DNS reply flood。
DNS服務器是互聯網最基礎的設施之一,網絡中有很多開放的免費DNS服務器。DNS反射攻擊正是利用這些開放的DNS服務器製造的攻擊。這種DNS反射攻擊通常比普通的DNS reply flood攻擊性更強,追蹤溯源困難,更善於僞裝。
從圖中我們可以看到,黑客將自己的源IP地址僞造成被攻擊目標的IP地址,然後向一系列網絡中開放的DNS服務器發送大量的查詢請求。通過僞造DNS請求報文的源IP地址,控制DNS迴應報文的流向,這些DNS迴應報文就會都被引導到被攻擊目標,導致被攻擊目標的網絡擁塞,拒絕服務。而開放式的DNS服務器在全球有超過幾千萬臺,這些服務器接入帶寬往往都比較高,而且,DNS reply報文大小通常也是DNS request報文的幾倍甚至幾十倍,還可達到放大攻擊的效果。對於控制成千上萬臺殭屍主機的黑客來說,製造幾G乃至數十G的DNS攻擊流量並不太困難。
DNS反射攻擊和前面介紹的傳統DNS reply flood有兩點本質的不同:
1、傳統DNS reply flood一般攻擊目標是DNS緩存服務器;而DNS反射攻擊一般攻擊目標是客戶端。
2、傳統DNS reply flood大多是虛假源攻擊,而DNS反射攻擊中,DNS請求是真實的,所以DNS迴應報文也都是真實的,是由網絡中真實的DNS服務器發出的,屬於真實源攻擊。這種情況下,再使用前面剛講過的源認證方式,對於DNS反射攻擊就不適用了。
那是不是就沒有辦法防禦了呢?
當然不是,魔高一尺,道高一丈。我們看看Anti-DDoS系統是怎麼處理這種攻擊的。
Anti-DDoS系統借鑑防火牆的會話表機制,利用DNS交互交互過程中,DNS request報文首包建會話的機制,防禦DNS反射放大攻擊。
Anti-DDoS系統對DNS反射攻擊採用的防禦手段就是會話檢查。會話表五元組信息包含:源IP地址、目的IP地址、源端口、目的端口和協議。當DNS request報文經過Anti-DDoS系統時,Anti-DDoS系統會創建一張會話表,記錄DNS請求報文的這五元組信息。當Anti-DDoS系統再收到DNS reply報文時,就會查會話表:
如果匹配會話表,就判定是真實的DNS reply報文,允許通過。
如果沒有匹配會話表,則判定這個DNS reply報文爲攻擊報文,禁止通過。
除了源認證和會話檢查以外,對於DNS flood攻擊還可以通過限速的方式進行防禦。DNS限速有兩種,針對DNS request和DNS reply報文都生效。
域名限速
如果某個域名的DNS請求或迴應報文速率過高,可以針對這個域名進行限速。通常某個域名在攻擊前訪問量並不算高,突然有一天訪問量是平時的好多倍,那這個域名可能就是受攻擊了。這就好比超市賣東西,平時一天超市可能賣200包食鹽,突然有一天,來了好多人買鹽,超市倉庫都賣空了,那這就不正常了。域名限速就是指資源有限的情況下,每天就定量提供這麼多的資源, 先到先得。域名限速可以有針對性的對某個特定域名進行限制,而不影響其他域名的正常請求。
源IP地址限速
源IP地址限速和域名限速相比,屬於另一個維度的限制。如果某個源IP地址域名解析的速率過大,就可以有針對性的對這個源IP地址進行限制,這樣也不會對其他源有影響。
現在,這種利用網絡基礎架構發動的攻擊越來越多,比如之前的暴風影音、本節的DNS反射攻擊,還有後續我們即將要介紹的DNS緩存投毒攻擊、HTTP攻擊。作爲互聯網的基礎設施,DNS服務器和其他各種服務器的安全穩定運行也至關重要,也是網絡工程師在部署網絡設備時需要重點考慮的問題。
通過這兩篇帖子,大家對DNS request flood和DNS reply flood攻擊的防禦都有了全新的瞭解吧,但是DNS攻擊可不止這些,除了這些傳統攻擊手段外,黑客利用篡改域名和IP地址映射關係的手段製造的攻擊,在近幾年頻頻發生。下一節,我們就爲大家繼續介紹DNS緩存投毒攻擊。
--------------------------------------
以上文章部分轉載來自:http://www.uml.org.cn/safe/202008272.asp
如有侵權請第一時間聯繫,我將刪除。