張海清
摘 要:DNS是Internet的基本支撐,其安全性對整個Internet的運行起著舉足輕重的作用。隨著互聯網應用的不斷深化,DNS已成為網絡攻擊的熱點目標。本文從DNS的工作原理出發,解析了DNS面臨的安全威脅與受到的常見攻擊,并提出了相應的防范方法。
關鍵詞:DNS;網絡攻擊;防范技術
1 引言
DNS(Domain Name System)域名系統,提供了Internet的底層基礎服務,它實現了將網絡域名映射為網絡IP地址,因此其安全性對整個Internet的安全性起著十分重要的作用。DNS作為當今全球最大、最復雜的分布式層次數據庫系統,由于其開放、龐大、復雜的特性以及設計之初對于安全性的考慮不足,再加上人為的攻擊和破壞,DNS已面臨非常嚴重的安全威脅。
2 DNS的工作原理
DNS是為了實現域名和IP地址之間的轉換,它的工作原理就是在域名與IP地址兩者之間進行相互的映射,起到相當于翻譯的作用。DNS可分為Server和Client兩部分,當Client向Server發出域名的解析請求時,本地的Server先查詢自己的數據庫是否存在需要的內容,如果有則發送應答數據包并給出相應的結果,否則它將向上一層Server進行查詢。如此不斷查詢,直至找到相應的結果或將查詢失敗的信息反饋給Client。DNS具體的工作流程如下:
(1)Client首先向本地的Server發出查詢請求,如要查詢解析域名為www.china.com的IP地址;
(2)本地Server如沒有對應的記錄,轉而向根Server尋求幫助;
(3)根Server返回com域的Server地址;
(4)本地Server向com域的Server發出域名解析請求;
(5)com域的Server返回china.com域的Server地址;
(6)本地Server繼續向china.com域的Server發出域名解析請求;
(7)china.com域的Server向本地Server返回域名為www.china.com的IP地址查詢結果;
(8)本地Server向Client成功返回域名www.china.com的解析結果,并且更新本地Server的緩存記錄。
從上述DNS的工作流程中我們可以看到DNS的服務機制具有以下的漏洞和不足:
(1)DNS容易成為暴露用戶行為的工具;
(2)Internet的DNS體系無法承受加密帶來的開銷和技術升級的成本;
(3)迭代查詢,對根域與頂級域服務器的依賴非常嚴重;
(4)DNS主要使用無連接的UDP協議明文傳送,很容易被偽造投毒;
(5)明文傳輸的DNS不具備任何保密性;
(6)DNS服務器具有軟件漏洞。
3 常見的DNS攻擊
由于DNS已成為了網絡攻擊的熱門目標,因此也成為了互聯網網絡安全的一個十分重大的隱患。網絡攻擊者們通過攻擊DNS達到了利用最少的成本,獲得最大的效益,利用最少的資源,發起最有破壞力的攻擊的目標,而且其攻擊也可以輕而易舉地繞過嚴密的安全監控和防護。如在2010年1月,網絡攻擊者們修改了百度的域名指向,以致百度網站出現無法訪問的情況;2011年3月,網絡攻擊者們利用Bind 9軟件出現的漏洞,使得部分DNS服務無法正常解析.com的域名。比較常見的DNS攻擊有緩存投毒、DNS欺騙和DDoS攻擊等,具體分析如下:
3.1 緩存投毒
緩存投毒是通過控制DNS的緩存服務器,把用戶從原本需要訪問的網站帶到其它的網站,從而實現黑客的目的。緩存投毒實現的方式主要有兩種:
3.1.1 攻擊或控制用戶ISP端的DNS緩存服務器的漏洞,將該ISP內的用戶訪問域名的響應結果改變;
3.1.2 利用權威域名服務器上的漏洞,在用戶權威域名服務器同時被當作緩存服務器使用時,就可以實施緩存投毒,將錯誤的域名紀錄存入服務器的緩存當中,使所有使用該服務器的用戶得到的都是錯誤的DNS解析結果。從網絡拓撲的角度來看,緩存投毒針對的DNS服務器是最接近用戶的服務器,因此對這些服務器的攻擊將會直接影響到連接這些服務器的所有用戶。
3.2 DNS欺騙
DNS 欺騙是局域網常見的一種DNS攻擊方式,是冒充域名服務器進行的一種欺騙行為。網絡攻擊者在DNS服務器響應之前先將虛假的響應結果交給用戶,從而通過欺騙的手段使用戶去訪問惡意的網站。假設當用戶提交給DNS服務器的域名解析請求報文數據包被截獲,然后按網絡攻擊者的意圖將一個虛假的IP地址作為應答信息返回給用戶,用戶就會把這個虛假的IP地址作為他所要的IP地址而進行訪問,這樣他就會被不知不覺地被欺騙到了網絡攻擊者想要其訪問的那個網站,從而實現了DNS欺騙。
3.3 DDoS攻擊
DDoS攻擊主要有兩種實現方式:
3.3.1 針對DNS的服務器軟件,利用其軟件程序中存在的各種漏洞,導致DNS服務器崩潰或拒絕提供服務;
3.3.2 利用DNS服務器作為中間的“攻擊放大服務器”,去攻擊其它互聯網上的主機或服務器,導致被攻擊的主機或服務器拒絕服務。
4 常見DNS攻擊的防范方法
4.1 緩存投毒的防范方法
4.1.1 必須及時更新DNS的數據,重建DNS的緩存,根據DNS服務器的性能和網絡的實際運行情況,將服務器緩存記錄的TTL值適當減少,以防止緩存中毒;
4.1.2 將UDP端口隨機化,在UDP端口的范圍內隨機選擇使用端口,而不是固定使用53端口,這樣可以使端口號和ID號的組合空間擴大到6萬多倍 ,從而有效降低緩存投毒的命中率;
4.1.3 設置靜態的DNS映射表,對動態DNS的更新進行限制,達到保護少數重要網站不受攻擊的目的。
4.2 DNS欺騙的防范方法
4.2.1 防范由于ARP欺騙而引起的DNS欺騙,由于這種DNS欺騙是以ARP欺騙為基礎的,所以可以通過將網關路由器的MAC地址和IP地址進行綁定以達到避免此類欺騙的目的;
4.2.2 在DNS欺騙中,客戶端會收到一個合法的應答包和一個欺騙的應答包。欺騙應答包為了能盡量快地返回給客戶端,它的報文結構比合法應答包簡單,甚至只有一個應答域,而沒有授權域和附加域。這樣我們就可以通過監聽DNS的應答包,按照一定的算法,鑒別出合法和欺騙兩種應答包,進而避免DNS的欺騙攻擊;
4.2.3 對DNS服務器做適當的安全配置和安全管理,限制DNS服務器作出應答的IP地址的范圍,安裝最新版的軟件,關閉服務器的遞歸功能等;
4.2.4 個別安全級別要求較高的服務可以直接用IP地址進行訪問,從而繞開DNS服務,這樣全部針對DNS的攻擊就都可以避免了。
4.3 DDoS攻擊的防范方法
對于DDoS攻擊可以采取以下幾個防范措施:取消DNS服務器中允許查詢網址的遞回功能;部署入侵檢測系統IDS;對重要的DNS服務器做冗余備份;安裝相應的防火墻,對高DNS流量的請求進行限制和過濾。
4.4 除了上述防范攻擊的方法之外,也應對DNS做好必要的保護措施,保證DNS的安全性,具體如下:
4.4.1 使用最新版本的DNS服務器軟件,并且還要隨著新漏洞的出現,不斷升級或安裝相應的補丁程序;
4.4.2 通過交叉檢驗功能,服務器反向查詢已得到的IP地址所對應的主機名,再用該主機名查詢DNS系統對應于該主機名的IP地址,判斷兩者是否一致,從而判定用戶的合法性;
4.4.3 安裝防火墻,將DNS服務器分為內部、外部服務器,并且進行隔離。內部服務器只提供內部網絡域名的解析,外部服務器提供外部用戶的查詢,并處理內網服務器提交的解析請求;
4.4.4 通過設置訪問控制列表ACL限制用戶對DNS服務器的訪問;
4.4.5 對區域傳送進行限制,防止網絡攻擊者通過正常的查詢命令獲得詳盡的的網絡內部信息。
5 結束語
本文基于當前DNS的現狀,闡述了DNS的工作原理,并對常見的DNS緩存投毒、DNS欺騙、DDoS攻擊等進行了詳細的分析和給出了防范這些攻擊的方法,對于提高DNS的可靠性、安全性和抗攻擊能力具有積極的作用。在日益發展的互聯網中,DNS將占據著越來越重要的地位,如何更進一步提高DNS的主動、智能安全防御能力將是我們下一步工作和研究的重點。
參考文獻
[1]孔政,姜秀柱.DNS欺騙原理及其防御方法[J].計算機工程,2010(2).
[2]董新科,邢雨,高維銀.DNS網絡安全系統分析與設計[J].計算機安全,2010(6).
[3]李基,楊義先. DNS安全問題及解決方案[M].北京:北京郵電大學信息安全中心,2005.