文/江魁 王飛 張巍 胡華周
(作者單位為深圳大學)
由于園區網通常具有多運營商多出口的鏈路環境,為了訪問位于不同運營商的網絡資源,用戶一般需要在客戶端手動修改DNS 配置來實現出口選路功能,效率較為低下。傳統的智能DNS 能夠智能識別來訪用戶的IP 地址,然后返回一個用戶所屬運營商的服務器IP 地址供其訪問,但這也只是在DNS 側解決了來自不同運營商的用戶高效訪問園區網資源的需求,對于多出口園區網環境下,園區網用戶高效訪問互聯網資源的需求則無能為力。為了解決這一問題,本文設計了一種適用于多出口園區網環境下的反向智能DNS 系統,并已在深圳大學校園網絡環境下實現,可為各高校優化現有的DNS 系統起到一定的借鑒作用。
DNS 是互聯網中的一項核心服務,其主要功能是將域名和IP 地址之間進行轉換。DNS 也是目前各高校園區網的重要基礎設施,各高校基本上都建有自己的DNS 服務器,通過DHCP 方式將DNS 服務器IP 地址下發給園區網用戶,用戶直接訪問互聯網域名即可訪問對應網站。
DNS 的域名采用了層次樹狀結構的命名方法,通過遍布在全球的分布式域名服務器來完成域名到IP 地址的解析過程。
當應用程序需要將域名(以www.edu.cn 為例)解析為IP 地址時,該應用程序就會調用解析程序,把待解析的域名放在DNS 請求報文中,以UDP 用戶數據報方式發送給本地域名服務器。本地域名服務器查看本地數據庫或緩存中是否存在此域名的解析記錄,如有對應的解析記錄則將IP 地址放在回答報文中返回,否則將向根域名服務器進行查詢。根域名服務器將對應頂級域名(.cn)服務器的IP 地址返回給本地域名服務器,讓本地域名服務器再向頂級域名服務器查詢。頂級域名服務器再返回對應授權域名(.edu.cn)服務器的IP 地址供本地域名服務器下一步進行查詢。若授權域名服務器中存在對應記錄,則給本地域名服務器返回解析后的IP 地址,否則報錯。本地域名服務器再將結果返回給用戶。
用戶向本地域名服務器的查詢為遞歸查詢,本地域名服務器向根域名服務器的查詢為迭代查詢。遞歸查詢指本地域名服務器無法解析用戶所查詢的域名,則本地服務器將以DNS 客戶身份替用戶向其他域名服務器繼續查詢;迭代查詢是指域名服務器收到查詢請求時,要么返回解析后的IP 地址,要么告知用戶下一步應向哪個域名服務器進行查詢,直到查到所需結果或返回報錯信息為止。
1.現有DNS 無法判斷用戶的來向,只能通過預先設置的若干轉發服務器進行輪詢式的轉發,無法根據用戶的訪問請求設置不同條件,將其轉發給不同的DNS 服務器。
2.現有DNS 也無法監控當前的鏈路情況,不能根據動態實時的鏈路負載情況進行DNS 的智能調度。
3.現有DNS 對查詢的域名不具備識別能力,無法對惡意域名進行有效攔截。
4.現有DNS 的抗攻擊性較差,容易受到攻擊者的攻擊。
5.現有DNS 不具備大數據分析的能力,無法對用戶的DNS數據進行合理的行為分析。
針對現有DNS 系統的問題與不足,本文設計了一種適用于多出口園區網的反向智能DNS 系統,并以深圳大學校園網為例,對其架構進行說明。
傳統智能DNS 解決的問題是從外到內的最優路徑訪問,有別于傳統的智能DNS,反向智能DNS 系統解決的問題是從園區網內到園區網外的多路優化訪問。例如,深圳大學的網絡結構具有多個鏈路出口,分別是教育網、電信、移動和聯通。為了優化園區網絡,保證校內用戶安全、高效、可控地訪問互聯網資源,設計的反向智能DNS 系統架構如圖1 所示。圖中面向園區網所有用戶進行DNS 數據分發的是第一層DNS,該DNS 是整個園區網訪問互聯網流量的入口,根據用戶訪問的網站不同,將其DNS請求轉發到對應的第二層DNS 上,第二層DNS 對應不同運營商的DNS。比如教育網出口,深圳大學擁有自建的教育網DNS;電信出口使用了電信提供的DNS;聯通出口則使用聯通提供的DNS;移動出口使用移動提供的DNS。第一層DNS 可以對用戶DNS 請求提供智能解析功能,通過預先設置的策略可以對域名解析得到的IP 地址進行優選排序,從而實現園區網內到園區網外的多路優化訪問。如對于edu.cn 域名后綴的網站訪問,可以通過第一層DNS 將其指向教育網DNS;對于國內公網的訪問,可以根據鏈路的負載情況將其指向電信DNS 或移動DNS;對于國外網站和部分視頻網站的訪問則將其指向聯通提供的DNS,最終將某個IP 優先返回給用戶,從而實現用戶最優上網的功能。

圖1 分層DNS 系統架構

圖2 功能模塊
反向智能DNS 從功能上又可以分為控制模塊、安全模塊、服務模塊、存儲模塊和分析模塊,如圖2 所示。控制模塊主要負責策略定制、轉發控制以及流量調度,實現智能DNS 的選路功能以及對DNS 業務流量的負載均衡;安全模塊可以實現惡意域名攔截、DDOS 流量攻擊防護、DNS 隱蔽通道阻斷,從而建立安全可靠的DNS 架構;服務模塊主要由DNS 遞歸、緩存服務器構成,負責向園區網用戶提供DNS 查詢服務;存儲模塊負責收集DNS流量數據以及日志信息,由分析模塊對收集到的數據進行多維度的數據挖掘。各模塊之間相互協調,在實現不同功能的基礎上構成一個完整的系統。用戶的DNS 請求首先會由安全模塊進行檢查,之后由服務模塊提供DNS 查詢服務,若DNS 請求命中緩存則給用戶直接返回結果,否則服務模塊將根據控制模塊的策略將DNS 遞歸請求轉發至第二層DNS,第二層DNS 解析之后由服務模塊將結果返回給用戶,同時,存儲模塊采集DNS 的流量數據,分析模塊可以對流量數據進行實時或事后的多維分析。下面重點對反向智能DNS 系統相關功能模塊實現關鍵技術進行說明。
默認情況下,校內所有用戶使用第一層DNS 進行查詢,如果用戶能夠手動修改本機的DNS 配置,使用指定的DNS 服務器進行查詢,就可以繞過智能DNS 的管控,因此需要在網絡流量出口處部署一臺重定向設備,對用戶的DNS 數據進行轉發,將所有的DNS 請求報文重定向到指定的校內第一層DNS 上。
DNS 重定向設備會記錄相關的會話數據,對接收的DNS 請求報文進行基本包的安全檢查,解析出使用的DNS 服務器IP 地址,若IP 地址不在設定的白名單列表內,將其重定向至校內第一層DNS 上;若IP 地在白名單列表內,則不需要對其進行重定向,重定向設備收到DNS 響應報文后,將查詢結果返回給用戶。
反向智能DNS 的構建主要是為了提高園區網用戶訪問互聯網資源的效率,因此,智能解析的選路與調度功能是反向智能DNS 的核心。
智能解析最基本的功能是可以智能判斷訪問網站的用戶,然后將其DNS 請求轉發到相應運營商的DNS 服務器上,實現DNS的選路功能。除此之外,智能解析也支持策略定制,基于不同域名,可以選擇不同鏈路出口的DNS 服務器,例如對于edu.cn 域名后綴的訪問將使用教育網DNS;基于不同的用戶群體,可以分配不同的出口DNS,對于校內使用不同運營商的用戶群體,將其DNS 請求指向對應運營商的DNS;對于擁有多個IP 地址的域名,可以根據網絡狀況進行優選排序,將某個IP 優先返回給用戶;當某個出口鏈路負載較大時,可以根據策略將用戶的DNS 請求轉發至其他鏈路出口,防止鏈路擁塞影響用戶的正常上網;通過多種策略組合以及差異化的流量調度,以此來實現智能DNS 的選路與調度功能。
智能DNS 服務器收到DNS 查詢請求之后,會提取其中的關鍵信息,如查詢域名、目標DNS 服務器IP 地址等,通過與互聯網公司合作,獲取安全情報庫,與情報庫中的記錄進行對比,如果用戶訪問的域名在情報庫中屬于惡意域名,或者用戶使用的DNS 服務器IP 地址在情報庫中屬于惡意IP 地址,一律將用戶重定向至特定網頁,告知用戶其電腦可能受到惡意程序的感染,建議其安裝終端防護軟件進行清除。
DNS 是園區網最為重要的網絡基礎設施之一,目前針對DNS 服務器的分布式拒絕服務(Distributed denial of service)攻擊是比較流行的一種方式。因此,一個可靠的DNS 架構如果沒有高性能的抗DDOS 攻擊能力就不能稱其為健壯的架構。
針對園區網DNS 的DDOS 攻擊通常利用多臺機器對DNS 服務器發起大量的查詢請求,從而消耗服務器的資源,使得正常用戶的合法請求得不到響應。反向智能DNS 可以通過判斷每個源IP 的請求是否超過設定的閾值、每個域名的請求是否超過設定的閾值,對相應的IP 地址和域名進行限速,從而對每個IP 地址每秒訪問DNS 的并發請求量以及每個域名每秒并發訪問量進行有效地控制,對于前綴變化的泛域遞歸攻擊可以采取泛域限速的措施,以此來提升DNS 的抗攻擊能力。通過智能DNS 的安全防護模塊,使用多層級限速的過濾技術,可以有效過濾DDOS 攻擊流量,最大限度地保證正常用戶的DNS 訪問。
網絡隱蔽通道是攻擊者繞過網絡安全策略進行數據傳輸的重要途徑,而DNS 則是實現隱蔽通道的常用手段。由于DNS 是互聯網中關鍵的基礎服務之一,網絡管理策略通常對DNS 的數據作少量限制或不作限制,因此利用DNS 進行隱蔽通訊的方法可以繞過防火墻的策略。可以利用DNS 查詢過程建立隱蔽通道,實現數據傳輸,如圖3 所示。DNS 隱蔽通道由客戶端和服務端兩部分組成,客戶端程序將通信數據通過加密或編碼封裝在DNS 請求報文的域名字段內,利用DNS 的查詢過程,通過多級DNS 服務器間的層層轉發,最后分發給DNS 授權服務器,即隱蔽通道的服務端。服務端程序解析對應的請求報文,將通信數據封裝在DNS 響應報文內,再通過DNS 服務器返回給客戶端。在這個過程中,客戶端與服務器之間并沒有直接通信,而是利用多級DNS 服務器對通信數據進行轉發達到了通信的目的。由此可知,建立DNS 隧道需要注冊一個互聯網域名并擁有對應的DNS 授權服務器,以此確保客戶端經過封裝后的DNS 查詢請求能夠分發到DNS 授權服務器上。
由于DNS 隱蔽通道經常被攻擊者用于僵尸網絡的通信以及APT(Advanced Persistent Threat)攻擊,因此需要對隱蔽通道進行攔截,以此來提升園區網的安全性,避免攻擊者利用DNS 隱蔽通道對園區網造成危害。

圖3 DNS 隱蔽通道架構

圖4 數據分析功能層次結構
為了盡可能的傳輸更多的數據,在真實網絡環境中,DNS隱蔽通道一般會使用TXT、ANY 記錄類型來進行DNS 查詢。智能DNS 可以對TXT、ANY 類型的DNS 查詢進行限速或禁用這兩種記錄類型,以此來阻斷DNS 隱蔽通道的建立。由于用戶在使用DNS 的過程中幾乎不會用到TXT、ANY 這兩種查詢類型,所以禁用這兩種類型的DNS 查詢對用戶基本不會產生影響,同時,這種方法也可以阻斷大部分DNS 隱蔽通道的建立。
DNS 是整個互聯網流量的入口,擁有DNS 的訪問數據就等于擁有了用戶上網行為的大數據,通過對DNS 大數據進行數據挖掘并分析,可以從中發現互聯網用戶的網絡行為,為優化園區網結構、提高互聯網訪問效率提供幫助。
DNS 數據挖掘、多維分析在物理部署上由流量采集與存儲、多維數據分析兩大部分組成。對DNS 流量的采集通過網絡設備上的流量鏡像實現。鏡像設備將網絡中的域名流量數據復制下來,通過網絡鏈路傳送給存儲系統,由存儲系統進行相應處理后再做存儲。數據分析系統由分析服務器陣列構成,主要負責讀取存儲平臺中的流量數據,并進行有關的多種分析,其層次結構如圖4 所示。
數據分析可以從IP 地址、域名、用戶訪問量、區域等多個維度進行分類和計算,例如對用戶請求域名的TopN 及對應域名請求數最多的用戶源IP 進行統計分類,并將數據結果以報表形式呈現出來。
DNS 是用戶訪問互聯網的入口,無論對于網絡運營商、網絡管理者還是攻擊者,DNS 都是非常重要的網絡基礎設施,也是相對薄弱的網絡基礎設施。適用于多出口園區網的反向智能DNS系統,不僅能解決互聯網的多路優化訪問問題,使得用戶能更加高效、安全、可控地訪問互聯網資源,提升DNS 系統自身的安全性,也便于網絡管理者更為有效地對網絡進行分析與管理,可為園區網建設與管理提供借鑒與參考。