DNS欺騙***及其防護

  域名系統(Domain Name System,DNS)是一個將Domain Name和IP Address進行互相映射的Distributed Database.DNS是網絡應用的基礎設施,它的安全性對於互聯網的安全有着舉足輕重的影響。但是由於DNS Protocol在自身設計方面存在缺陷,安全保護和認證機制不健全,造成DNS自身存在較多安全隱患,導致其很容易遭受***。很多專家就DNS Protocol的安全缺陷提出了很多技術解決方案。例如IETF提出的域名系統安全協議(Domain Name System Security,DNSSEC),其目標就在於解決這些安全隱患。這個Protocol增加了安全認證項目,增強了Protocol自身的安全功能。但是新增加的安全機制需要佔用更多的系統和網絡資源,同時要升級Database和System Manggament Software,這些基於DNSSEC協議的軟件還不成熟,距離普及應用還有較長時間。目前,常見的措施是定期升級DNS軟件和加強相關的安全配置,禁用不安全的端口等。本文對以偵聽爲基礎的DNS ID欺騙(DNS ID spoofing)進行了探討,並提出了相關的防護解決方案。

    一、DNS SERVER的服務工作過程

    DNS是一種實現Domain Name和IP Address之間轉換的系統,它的工作原理就是在兩者間進行相互映射,相當於起到翻譯作用,所以稱爲域名解析系統。DNS System分爲Server和Client兩部分,Server的通用Port是53.當Client向Server發出解析請求時,Local DNS Server第一步查詢自身的Database是否存在需要的內容,如果有則發送應答數據包並給出相應的結果;否則它將向上一層DNS Server查詢。如此不斷查詢,最終直至找到相應的結果或者將查詢失敗的信息反饋給客戶機。如果Local DNS Server查到信息,則先將其保存在本機的高速緩存中,然後再向客戶發出應答。日常我們上網是通過Browser方式來申請從Domain Name到IP Address的解析,即Client向DNS Server提交域名翻譯申請,希望得到對應的IP Address.這裏以筆者所在院校爲例,說明DNS的工作原理。

    例如Client的Address爲10.252.2.16,學校DNS Server爲218.30.19.40,從此客戶機來訪問西安財經學院網站。在地址欄鍵入學校網站的www.xaufe.edu.cn,通過DNS Server查找其對應的IP Address.這個申請從10.252.2.16的一個隨機PORT發送出去,由218.30.19.40的53綁定端口接收到此申請並進行翻譯,首先在218.30.19.40的高速緩存中查找www.xaufe.edu.cn的IP Address,若存在對應的映射關係,就直接將IP Address發送給客戶機,若緩存中沒有,則218.30.19.40會向上層DNS SERVER查詢,最後將查詢到的結果先發送到218.30.19.40,最後由218.30.19.40將西安財經學院的IP Address(281.195.32.1)返回給Client 10.252.2.16.這樣10.252.2.16就可以和西安財經學院站點建立連接並訪問了。

  二、DNS欺騙***原理

    2.1 欺騙原理

    Client的DNS查詢請求和DNS Server的應答數據包是依靠DNS報文的ID標識來相互對應的。在進行域名解析時,Client首先用特定的ID號向DNS Server發送域名解析數據包,這個ID是隨機產生的。DNS Server找到結果後使用此ID給Client發送應答數據包。Client接收到應答包後,將接收到的ID與請求包的ID對比,如果相同則說明接收到的數據包是自己所需要的,如果不同就丟棄此應答包。根據***者的查詢和應答原理,可使用不同方法實現***,如:

    (1)因爲DNS Message僅使用一個簡單的認證碼來實施真實性驗證,認證碼是由Client程序產生並由DNS Server返回結果的,客戶機只是使用這個認證碼來辨別應答與申請查詢是否匹配,這就使得針對ID認證碼的***威脅成爲可能。

    (2)在DNS Request Message中可以增加信息,這些信息可以與客戶機所申請查詢的內容沒有必然聯繫,因此***者就能在Request Message中根據自己的目的增加某些虛假的信息,比如增加其它Domain Server的Domain Name及其IP Address.此時Client在受到***的Domain Server上的查詢申請均被轉向此前***者在Request Message中增加的虛假Domain Server,由此DNS欺騙得以產生並對網絡構成威脅。

    (3)當DNS Server接收到Domain Name和IP Address相互映射的數據時,就將其保存在本地的Cache中。若再有Client請求查詢此Domain Name對應的IP Address,Domain Server就會從Cache中將映射信息回覆給Client,而無需在Database中再次查詢。如果***將DNS Request Message的存在週期設定較長時間,就可進行長期欺騙。

    2.2 DNS欺騙***的方式

    DNS欺騙技術常見的有內應***和序列號***兩種。內應***即***在掌控一臺DNS Server後,對其Domain Database內容進行更改,將虛假IP Address指定給特定的Domain Name,當Client請求查詢這個特定域名的IP時,將得到僞造的IP.

 序列號***是指僞裝的DNS Server在真實的DNS Server之前向客戶端發送應答數據報文,該報文中含有的序列號ID與客戶端向真實的DNS Server發出請求數據包中含有的ID相同,因此客戶端會接收該虛假報文,而丟棄晚到的真實報文,這樣DNS ID序列號欺騙成功。客戶機得到的虛假報文中提供的域名的IP是***者設定的IP,這個IP將把客戶帶到***者指定的站點。

    2.3 DNS 序列號欺騙***原理

    DNS 序列號(ID)欺騙以偵測ID和Port爲基礎。在Switch構建的網絡中,***方首先向目標實施ARP欺騙。當Client、***者和DNS Server同在一個網絡時,***流程如下:①***方向目標反覆發送僞造的ARP Request Message,修改目標機的ARP 緩存內容,同時依靠IP續傳使Data經過***方再流向目的地;***方用Sniffer軟件偵測DNS請求包,獲取ID序列號和Potr;②***方一旦獲得ID和Potr,即刻向客戶機發送虛假的DNS Request Message,Client接收後驗證ID和Potr正確,認爲接收了合法的DNS應答;而Client得到的IP可能被轉向***方誘導的非法站點,從而使Client信息安全受到威脅;③Client再接收DNS Server的Request Message,因落後於虛假的DNS響應,故被Client丟棄。當Client訪問***者指向的虛假IP時,一次DNS ID欺騙隨即完成。

 三、DNS欺騙檢測和防範思路

    3.1 檢測思路

    發生DNS欺騙時,Client最少會接收到兩個以上的應答數據報文,報文中都含有相同的ID序列號,一個是合法的,另一個是僞裝的。據此特點,有以下兩種檢測辦法:

    (1)被動監聽檢測。即監聽、檢測所有DNS的請求和應答報文。通常DNS Server對一個請求查詢僅僅發送一個應答數據報文(即使一個域名和多個IP有映射關係,此時多個關係在一個報文中回答)。因此在限定的時間段內一個請求如果會收到兩個或以上的響應數據報文,則被懷疑遭受了DNS欺騙。

    (2)主動試探檢測。即主動發送驗證包去檢查是否有DNS欺騙存在。通常發送驗證數據包接收不到應答,然而***爲了在合法應答包抵達客戶機之前就將欺騙信息發送給客戶,所以不會對DNS Server的IP合法性校驗,繼續實施欺騙。若收到應答包,則說明受到了欺騙***。

    3.2 防範思路

    在偵測到網絡中可能有DNS欺騙***後,防範措施有:①在客戶端直接使用IP Address訪問重要的站點,從而避免DNS欺騙; ②對DNS Server和Client的數據流進行加密,Server端可以使用SSH加密協議,Client端使用PGP軟件實施數據加密。

    對於常見的ID序列號欺騙***,採用專業軟件在網絡中進行監聽檢查,在較短時間內,客戶端如果接收到兩個以上的應答數據包,則說明可能存在DNS欺騙***,將後到的合法包發送到DNS Server並對DNS數據進行修改,這樣下次查詢申請時就會得到正確結果。

   四、DNS防護方案

    4.1 進行IP地址和MAC地址的綁定

    (1)預防ARP欺騙***。因爲DNS***的欺騙行爲要以ARP欺騙作爲開端,所以如果能有效防範或避免ARP欺騙,也就使得DNS ID欺騙***無從下手。例如可以通過將Gateway Router 的Ip Address和MAC Address靜態綁定在一起,就可以防範ARP***欺騙。

    (2)DNS信息綁定。DNS欺騙***是利用變更或者僞裝成DNS Server的IP Address,因此也可以使用MAC Address和IP Address靜態綁定來防禦DNS欺騙的發生。由於每個Network Card的MAC Address具有唯一性質,所以可以把DNS Server的MAC Address與其IP Address綁定,然後此綁定信息存儲在客戶機網卡的Eprom中。當客戶機每次向DNS Server發出查詢申請後,就會檢測DNS Server響應的應答數據包中的MAC Address是否與Eprom存儲器中的MAC Address相同,要是不同,則很有可能該網絡中的DNS Server受到DNS欺騙***。這種方法有一定的不足,因爲如果局域網內部的客戶主機也保存了DNS Server的MAC Address,仍然可以利用MAC Address進行僞裝欺騙***。

    4.2 使用Digital Password進行辨別

    在不同子網的文件數據傳輸中,爲預防竊取或篡改信息事件的發生,可以使用任務數字簽名(TSIG)技術即在主從Domain Name Server中使用相同的Password和數學模型算法,在數據通信過程中進行辨別和確認。因爲有Password進行校驗的機制,從而使主從Server的身份地位極難僞裝,加強了Domain Name信息傳遞的安全性。

 安全性和可靠性更好的Domain Name Service是使用域名系統的安全協議(Domain Name System Security, DNSSEC)),用Digital Signature的方式對搜索中的信息源進行分辨,對DATA的完整性實施校驗,DNSSEC的規範可參考RFC2605.因爲在設立Domain時就會產生Password,同時要求上層的Domain Name也必須進行相關的Domain Password Signature,顯然這種方法很複雜,所以InterNIC域名管理截至目前尚未使用。然而就技術層次上講,DNSSEC應該是現今最完善的Domain Name設立和解析的辦法,對防範Domain Name欺騙***等安全事件是非常有效的。

    4.3 優化DNS SERVER的相關項目設置

    對於DNS Server的優化可以使得DNS的安全性達到較高的標準,常見的工作有以下幾種:①對不同的子網使用物理上分開的Domain Name Server,從而獲得DNS功能的冗餘;②將外部和內部Domain Name Server從物理上分離開並使用Forwarders轉發器。外部Domain Name Server可以進行任何客戶機的申請查詢,但Forwarders則不能,Forwarders被設置成只能接待內部客戶機的申請查詢;③採用技術措施限制DNS動態更新;④將區域傳送(zone transfer)限制在授權設備上;⑤利用事務簽名對區域傳送和區域更新進行數字簽名;⑥隱藏服務器上的Bind版本;⑦刪除運行在DNS服務器上的不必要服務,如FTP、telnet和Http;⑧在網絡外圍和DNS服務器上使用防火牆,將訪問限制在那些DNS功能需要的端口上。

    4.4 直接使用IP地址訪問

    對個別信息安全等級要求十分嚴格的WEB站點儘量不要使用DNS進行解析。由於DNS欺騙***中不少是針對竊取客戶的私密數據而來的,而多數用戶訪問的站點並不涉及這些隱私信息,因此當訪問具有嚴格保密信息的站點時,可以直接使用IP地址而無需通過DNS解析,這樣所有的DNS欺騙***可能造成的危害就可以避免了。除此,應該做好DNS Server的安全配置項目和升級DNS軟件,合理限定DNS Server進行響應的IP地址區間,關閉DNS Server的遞歸查詢項目等。

    4.5 對DNS數據包進行監測

    在DNS欺騙***中,Client會接收到至少兩個DNS的數據響應包,一個是真實的數據包,另一個是***數據包。欺騙***數據包爲了搶在真實應答包之前回復給Client,它的信息數據結構與真實的數據包相比十分簡單,只有應答域,而不包括授權域和附加域。因此,可以通過監測DNS響應包,遵循相應的原則和模型算法對這兩種響應包進行分辨,從而避免虛假數據包的***。

    五、結束語

    本文對DNS解析及DNS欺騙的原理進行了闡述,對DNS欺騙***的方式、檢測和防範的思路進行了探討,最後給出了一些預防DNS欺騙的常見方法。相信這些方案的應用,可以大大提高DNS的安全性和可靠性。但網絡的發展和應用日新月異,在實踐中還要不斷緊跟技術變化的步伐,不斷學習和總結纔能有效抵禦各種新類型的DNS故障。


網賺雜談

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章