防範dns請求報文泛洪攻擊的方法及設備的製作方法
2024-01-24 03:43:15 1
專利名稱:防範dns請求報文泛洪攻擊的方法及設備的製作方法
技術領域:
本發明涉及網絡安全技術領域,尤其涉及一種防範DNS請求報文泛洪 (DNS Query Flood)攻擊的方法及設備。
技術背景域名系統(Domain Name System, DNS )是一種用於TCP/IP應用程式的 分布式資料庫,提供域名與IP位址之間的轉換。通過域名系統,用戶進行某 些應用時,可以直接使用便於記憶的、有意義的域名,而由網絡中的DNS月l 務器將域名解析為正確的IP位址。圖1為DNS客戶端與DNS伺服器交互過程示意圖。如圖1所示,DNS 客戶端通過向DNS月良務器發送DNS請求報文(DNS Query )獲取域名對應的 IP位址。DNS伺服器在接收到DNS請求報文以後,根據請求的域名進行查找, 有時還需要向上級DNS伺服器請求。DNS伺服器在最終得到DNS客戶端請 求的域名對應的IP位址後,發送DNS響應報文(DNS Reply)通知DNS客戶 端,DNS客戶端就可以向此IP位址請求網絡服務了。另外,在設置了 DNS代理的情形下,DNS客戶端並不直接向DNS服務 器發送DNS請求報文,而是將DNS請求報文發送到DNS代理,通過DNS代 理和DNS伺服器的交互獲取對應的IP位址。為便於描述,在本文中,將DNS 代理和DNS伺服器統稱為DNS服務端設備。DNS請求報文和DNS響應報文格式如圖2所示,其中,16比特(bit) 的標誌欄位被劃分為若干子欄位,參照圖3,各子欄位的含義如下QR是lbit欄位,0表示請求報文,l表示響應報文;opcode是4bit欄位,通常值為0 (標準查詢),其他值為1 (反向查詢) 和2 (伺服器狀態請求);AA是lbit欄位,表示"授權回答(authoritative answer)",其值為1時表 示該域名伺服器是:l受權於該域的;TC是lbit欄位,表示"可截斷的(truncated)",其值為1時表示信息長 度超過報文長度限制;RD是lbit欄位,表示"期望遞歸(recursion desired)"; RA是lbit欄位,表示"可用遞歸,,; 隨後3bit必須為0;rcode是4bit欄位,通常值為0 (沒有差錯)和3 (名字差錯)。 根據協議,DNS客戶端可以使用TCP或者UDP協議與域名伺服器通信。 使用TCP協議進行通信的交互過程為(1 ) DNS客戶端向域名伺服器發起TCP協議的三次握手(2)握手成功以後,TCP連接建立;(3 ) DNS客戶端向域名伺服器發送DNS查詢報文;(4) 域名伺服器向DNS客戶端回應;(5) 斷開TCP連接。使用UDP協議進行通信時,DNS客戶端直接向域名伺服器發送DNS查 詢請求,域名伺服器根據請求內容做出回應。根據DNS使用承載協議(TCP/UDP )的不同,DNS請求才艮文泛洪攻擊的 方式也分為兩種(一) 基於TCP協議的攻擊典型的攻擊方式為SYN泛洪攻擊。攻擊者通過偽造大量的不同源IP位址 的TCPSYN報文,向伺服器發起連接。伺服器收到此才艮文後用SYN/ACK應 答,而此應答發出去後,不會收到ACK報文,這樣便形成了一個TCP半連接。 如果攻擊者發送大量這樣的SYN報文,會在被攻擊主機上出現大量的半連接, 消耗盡其資源,使正常的用戶無法訪問。針對這種攻擊,目前較常見的做法是檢查TCP的cookie值來判斷其合法 性,最終達到對非法請求丟棄、合法請求回應的精確防範。(二) 基於UDP協議的攻擊由於域名查詢的過程比較耗時,攻擊者通過向域名伺服器發送大量DNS 請求報文,將正常用戶的DNS請求報文淹沒,並使域名伺服器無法正常工作 而拒絕服務。採用UDP協議的DNS攻擊是一種UDP泛洪攻擊,由於UDP並不是面向 連接的,報文相對獨立,沒有相關性,因此對於這種攻擊目前沒有做到精確過 濾。目前較常見的攻擊防範做法是檢測發往特定IP或特定域(該IP/域就是 被保護的主機/域)的UDP報文的速率,如果速率超過域值則判定受到攻擊, 丟棄所有UDP糹艮文。採用UDP方式的DNS攻擊,目前的防範方法無法做到精確過濾當設備 檢測到攻擊存在時直接丟棄後續收到的所有UDP報文,這會導致被攻擊報文 淹沒的合法用戶請求也無法得到處理,最終對所有合法用戶拒絕服務。 發明內容本發明所要解決的技術問題是提供一種防範DNS請求報文泛洪攻擊的方 法及設備,以丟棄非法的UDP承載的DNS請求,並使合法的UDP承載的DNS 請求能夠得到回應。為解決上述技術問題,本發明提供技術方案如下一種防範DNS請求報文泛洪攻擊的方法,包括DNS服務端接收DNS客戶端發送的UDP承載的DNS請求報文;DNS服務端向DNS客戶端發送DNS響應報文,並將所述DNS響應報文 中的TC和AA標誌位置1;DNS服務端在預設時間內接收到DNS客戶端發送的TCP SYN報文時, 通過TCP cookie方式檢測DNS客戶端的合法性。上述的方法,其中,還包括DNS服務端在預設時間內沒有接收到DNS 客戶端發送的TCPSYN報文時,直接確定該DNS客戶端非法。上述的方法,其中,所述通過TCP cookie方式檢測DNS客戶端的合法性 具體包括DNS服務端向DNS客戶端回應SYN/ACK報文,並將cookie填充 在所述SYN/ACK報文的seq域中;DNS服務端接收到DNS客戶端回應的ACK 淨艮文以後,檢查所述回應的ACK報文中seq域的值是否為cookie+1,若是, 確定該DNS客戶端合法,否則,確定該DNS客戶端非法。上述的方法,其中,還包括DNS服務端在確定DNS客戶端非法時,丟 棄該DNS客戶端後續發送的所有報文。上述的方法,其中,所述DNS服務端為DNS伺服器或者DNS代理。一種DNS服務端設備,包括第一 UDP模塊,用於接收DNS客戶端發送的UDP承載的DNS請求報文, 向DNS客戶端發送DNS響應報文,並將所述DNS響應報文中的TC和AA 標誌j立置1;第一TCP模塊,用於接收DNS客戶端發送的TCPSYN報文,向DNS客 戶端回應SYN/ACK報文,並將cookie填充在所述SYN/ACK報文的seq域中, 以及接收DNS客戶端回應的ACK報文;第一判斷模塊,用於檢查所述回應的ACK報文中seq域的值是否為 cookie+l,若是,確定該DNS客戶端合法,否則,確定該DNS客戶端非法。一種DNS客戶端設備,包括第二UDP模塊,用於採用UDP協議發送DNS請求報文,並接收DNS服 務端發送的DNS響應報文;第二判斷模塊,用於檢查所述DNS響應報文中的TC和AA標誌位是否 為1,在確定所述TC和AA標誌位為1時,發送重新請求消息到第二TCP模 塊;第二TCP模塊,用於在接收到所述重新請求消息時,採用TCP協議重新 進行請求,發送TCP的SYN報文,以及在接收到DNS服務端發送的SYN/ACK 報文時,回應TCPACK報文,並將cookie+l填充在所述TCP ACK報文的seq 域中。一種防範DNS請求報文泛洪攻擊的方法,包括 DNS客戶端採用UDP協議發送DNS請求報文;DNS服務端接收到所述DNS請求報文後,向DNS客戶端發送DNS響應 報文,並將所述DNS響應報文中的TC和AA標誌位置1;DNS客戶端接收到TC和AA標誌位為1的DNS響應報文以後,採用TCP 協議重新進行請求,發送TCP的SYN報文;DNS服務端在預設時間內接收到DNS客戶端發送的TCP SYN報文時, 通過TCP cookie方式檢測DNS客戶端的合法性。與現有技術相比,本發明的有益效果是當採用UDP承載的DNS請求報文泛洪攻擊發生時,相對於其他UDP泛洪攻擊檢測技術,本發明能有效的鑑別DNS請求的合法性,減少或者避免DNS伺服器受到攻擊,並確保合法的DNS請求能夠得到回應。
圖1為現有技術中DNS客戶端與DNS伺服器交互過程示意圖; 圖2為現有技術中DNS請求報文和DNS響應報文格式示意圖; 圖3為圖2中16比特的標誌欄位的格式示意圖; 圖4為本發明實施例的防範DNS請求才艮文泛洪攻擊的方法示意圖; 圖5為本發明實施例的DNS服務端設備的結構示意圖; 圖6為本發明實施例的DNS客戶端設備的結構示意圖。
具體實施方式
本發明的關鍵在於,將UDP承載的DNS請求報文泛洪攻擊防範轉化為 TCP的SYN報文泛洪攻擊防範。具體地,DNS月艮務端接收到UDP承載的DNS 請求報文以後,向DNS客戶端發送TC和AA標誌位都為1的DNS響應報文; DNS客戶端接收到這樣的DNS響應報文以後,重新以TCP協議發起DNS請 求。由於那些偽造源IP的DNS請求不會重新以TCP方式發起DNS請求,這 就可以過濾大多數偽造源IP的攻擊報文。然後,DNS服務端設備再通過TCP cookie方式檢測DNS客戶端的合法性,並響應所有合法客戶端的DNS請求。為使本發明的目的、技術方案和優點更加清楚,下面將結合附圖及具體實 施例對本發明進行詳細描述。參照圖4,本發明實施例的防範DNS請求報文泛洪攻擊的方法主要包括 如下步驟步驟SI 、 DNS客戶端採用UDP協議發送DNS請求報文;步驟S2、 DNS服務端接收到DNS請求報文以後,確定該報文以UDP承載,則向DNS客戶端發送DNS響應報文,並將報文中的TC和AA標誌位置1;步驟S3、DNS客戶端接收到TC和AA標誌位為1的DNS響應報文以後, 採用TCP協議重新進行請求,發送TCP的SYN報文;步驟S4、 DNS服務端接收到TCP SYN才艮文以後,向DNS客戶端回應 SYN/ACK報文,並將cookie填充在報文的seq域中;步驟S5、 DNS客戶端回應ACK報文;步驟S6、 DNS服務端接收到ACK報文以後,根據seq值進行合法性檢測。 在步驟S6中,DNS服務端檢查seq值是否為cookie+l ,若是,確定此DNS客戶端合法,再接收到此客戶發送的UDP承載的DNS請求報文時,對該請求報文進行回應。在步驟S2之後,DNS服務端如果在預設時間內沒有接收到DNS客戶端 發送的TCPSYN報文,或者在步驟S6中,所述s叫值不為cookie+l,則可以 確定該DNS客戶端非法,丟棄該客戶端後續發送的所有報文。依照上述實施例的方法,可以做到對非法DNS請求的精確過濾,保證合 法DNS請求能夠正常獲得服務。DNS客戶端的合法性檢測出來後,如果DNS服務端為DNS伺服器,則 在獲取到對應的IP位址後,將該IP位址通過DNS響應才艮文發送到客戶端; 如果DNS服務端為DNS代理,則利用TCP代理技術,向DNS伺服器進行 UDP的DNS請求,再將DNS伺服器的回應以TCP方式發送到DNS客戶端。在本發明的其他實施例中,在合法性檢測出來後,也可以直接向DNS客 戶端發送TCP的RESET報文,斷開TCP連接,等待該客戶端的下一次DNS 請求到達後(不必再做上述檢查過程),直接進行回應。參照圖5,本發明實施例的DNS服務端設備主要包括第一UDP模塊、第 一TCP模塊和第一判斷模塊,其中所述第一 UDP模塊用於接收DNS客戶端發送的UDP承載的DNS請求報 文,向DNS客戶端發送DNS響應報文,並將所述DNS響應報文中的TC和 AA標誌位置1;所述第一 TCP模塊用於接收DNS客戶端發送的TCP SYN報文,向DNS 客戶端回應SYN/ACK報文,並將cookie填充在所述SYN/ACK報文的seq域 中,以及接收DNS客戶端回應的ACK報文;所述第一判斷模塊用於檢查所述回應的ACK報文中s叫域的值是否為 cookie+l,若是,確定該DNS客戶端合法,否則,確定該DNS客戶端非法。所述第一判斷模塊還用於在所述第一 TCP模塊在預設時間內沒有接收到 DNS客戶端發送的TCP SYN報文時,直接確定該DNS客戶端非法。參照圖6,本發明實施例的DNS客戶端設備主要包括第二UDP模塊、第 二TCP模塊和第二判斷模塊,其中所述第二 UDP模塊用於採用UDP協議發送DNS請求才艮文,並接收DNS 服務端發送的DNS響應報文;所述第二判斷模塊,用於檢查所述DNS響應報文中的TC和AA標誌位 是否為1,在確定所述TC和AA標誌位為1時,發送重新請求消息到所述第 二TCP模塊;所述第二TCP模塊,用於在接收到所述重新請求消息時,採用TCP協議 重新進行請求,發送TCP的SYN報文,以及在接收到DNS服務端發送的 SYN/ACK報文時,回應TCPACK報文,並將cookie+l填充在所述TCP ACK 4艮文的s叫域中。最後應當說明的是,以上實施例僅用以說明本發明的技術方案而非限制, 本領域的普通技術人員應當理解,可以對本發明的技術方案進行修改或者等同 替換,而不脫離本發明技術方案的精神範圍,其均應涵蓋在本發明的權利要求 範圍當中。
權利要求
1.一種防範DNS請求報文泛洪攻擊的方法,其特徵在於,包括DNS服務端接收DNS客戶端發送的UDP承載的DNS請求報文;DNS服務端向DNS客戶端發送DNS響應報文,並將所述DNS響應報文中的TC和AA標誌位置1;DNS服務端在預設時間內接收到DNS客戶端發送的TCP SYN報文時,通過TCP cookie方式檢測DNS客戶端的合法性。
2. 如權利要求1所述的方法,其特徵在於,還包括DNS服務端在預設時間內沒有接收到DNS客戶端發送的TCP SYN報文 時,直接確定該DNS客戶端非法。
3. 如權利要求1所述的方法,其特徵在於,所述通過TCP cookie方式檢 測DNS客戶端的合法性具體包括DNS服務端向DNS客戶端回應SYN/ACK報文,並將cookie填充在所述 SYN/ACK報文的seq域中;DNS服務端接收到DNS客戶端回應的ACK報文以後,檢查所述回應的 ACK報文中seq域的值是否為cookie+1,若是,確定該DNS客戶端合法,否 則,確定該DNS客戶端非法。
4. 如權利要求2或3所述的方法,其特徵在於,還包括DNS服務端在確定DNS客戶端非法時,丟棄該DNS客戶端後續發送的 所有報文。
5. 如權利要求1所述的方法,其特徵在於 所述DNS服務端為DNS伺服器或者DNS代理。
6. —種DNS服務端設備,其特徵在於,包括第一 UDP模塊,用於接收DNS客戶端發送的UDP承載的DNS請求報文, 向DNS客戶端發送DNS響應報文,並將所述DNS響應報文中的TC和AA 才示志位置1;第一TCP模塊,用於接收DNS客戶端發送的TCPSYN報文,向DNS客 戶端回應SYN/ACK報文,並將cookie填充在所述SYN/ACK報文的s叫域中,以及接收DNS客戶端回應的ACK報文;第一判斷模塊,用於檢查所述回應的ACK報文中seq域的值是否為 cookie+l,若是,確定該DNS客戶端合法,否則,確定該DNS客戶端非法。
7. 如權利要求6所述的設備,其特徵在於所述第一判斷模塊,還用於在所述第一 TCP模塊在預設時間內沒有接收 到DNS客戶端發送的TCP SYN報文時,直接確定該DNS客戶端非法。
8. —種DNS客戶端設備,其特徵在於,包括第二UDP模塊,用於採用UDP協議發送DNS請求報文,並接收DNS服 務端發送的DNS響應報文;第二判斷模塊,用於檢查所述DNS響應報文中的TC和AA標誌位是否 為1,在確定所述TC和AA標誌位為1時,發送重新請求消息到第二TCP模 塊;第二TCP模塊,用於在接收到所述重新請求消息時,採用TCP協議重新 進行請求,發送TCP的SYN報文,以及在接收到DNS服務端發送的SYN/ACK 報文時,回應TCPACK報文,並將cookie+l填充在所述TCP ACK報文的seq 域中。
9. 一種防範DNS請求報文泛洪攻擊的方法,其特徵在於,包括 DNS客戶端採用UDP協議發送DNS請求報文;DNS服務端接收到所述DNS請求報文後,向DNS客戶端發送DNS響應 報文,並將所述DNS響應報文中的TC和AA標誌位置1;DNS客戶端接收到TC和AA標誌位為1的DNS響應報文以後,採用TCP 協議重新進行請求,發送TCP的SYN報文;DNS服務端在預設時間內接收到DNS客戶端發送的TCP SYN報文時, 通過TCP cookie方式檢測DNS客戶端的合法性。
10. 如權利要求9所述的方法,其特徵在於,還包括DNS服務端在預設時間內沒有接收到DNS客戶端發送的TCP SYN報文 時,直接確定該DNS客戶端非法。
全文摘要
本發明提供一種防範DNS請求報文泛洪攻擊的方法及設備。所述方法包括DNS服務端接收DNS客戶端發送的UDP承載的DNS請求報文;DNS服務端向DNS客戶端發送DNS響應報文,並將所述DNS響應報文中的TC和AA標誌位置1;DNS服務端在預設時間內接收到DNS客戶端發送的TCP SYN報文時,通過TCP cookie方式檢測DNS客戶端的合法性。依照本發明,能夠有效的防範UDP承載的DNS請求報文對DNS伺服器的泛洪攻擊。
文檔編號H04L29/06GK101282209SQ200810106458
公開日2008年10月8日 申請日期2008年5月13日 優先權日2008年5月13日
發明者張仲虎 申請人:杭州華三通信技術有限公司