1) 用戶向DNS 客戶端發(fā)送DNS請求,客戶端先查看本地緩存,如果緩存中有該域名,則直接返回給用戶;客戶端若沒有域名的相關緩存,則向本地域名服務器提出解析請求。

2) 本地域名服務器在收到請求后,先查看緩存,若緩存中有相關記錄,則應答客戶端的請求;否則,本地域名服務器直接向根域名服務器提出請求。

3) 根域名服務器接到請求后,將包含有所需解釋的域名的頂級域名服務器返回給本地域名服務器。

4) 本地域名服務器根據(jù)根域名服務器的返回結果,向頂級域名服務器發(fā)送請求。

5) 頂級域名服務器接到請求后,將包含所查詢的域名的域名服務器返回給本地域名服務器。

6) 本地域名服務器根據(jù)返回結果連接包含域名的域名服務器,得到查詢結果,

然后將查詢結果緩存,并向客戶端應答。

7) 客戶端接到應答后,將查詢結果緩存,然后向用戶應答。

按此在新窗口打開圖片按此在新窗口打開圖片

二、 安全威脅

DNS的安全威脅主要可分為幾種:DNS欺騙、分布式拒絕服務攻擊、DNS軟件漏洞攻擊、管理缺陷等。下面分別對這幾類攻擊進行介紹。

DNS欺騙

DNS的查詢請求是基于UDP的,DNS客戶端會接受首先到達的DNS應答包,而將后到達的DNS應答包當作是冗余包簡單丟棄掉。客戶端對DNS應答包的驗證僅通過隨機發(fā)送的查詢ID和UDP端口號,除此之外沒有任何的驗證。這就給DNS欺騙提供了機會。

1、DNS ID欺騙

DNS ID欺騙中的攻擊者必須跟用戶處于同一個局域網(wǎng)內(nèi)。

攻擊流程:

1) Arp欺騙。欺騙者向用戶發(fā)送偽造的arp應答報文,更新用戶本地的arp緩存,使用戶認為欺騙者為網(wǎng)關。這樣,在用戶向本地DNS服務器發(fā)送請求時,數(shù)據(jù)的流向就改為用戶—欺騙者—網(wǎng)關—本地DNS服務器。欺騙者通過sniffer軟件,嗅探到DNS請求包的ID和端口號。

2) 欺騙者利用得到的ID和端口號,優(yōu)先向用戶發(fā)送偽造DNS應答,用戶在對ID和端口號進行核對后認為是正確的應答。此時用戶訪問的域名已經(jīng)被替換為欺騙者偽造的IP。

3) 本地DNS服務器發(fā)送的真的DNS應答包因為晚于偽造包,用戶收到后丟棄。至此,DNS ID欺騙攻擊完成。

2、DNS緩存中毒

當攻擊者與用戶不是處于同一個局域網(wǎng)時,攻擊者無法得到DNS請求報文的ID與端口號,“生日攻擊”就是在這種情況下的對DNS緩存的一種攻擊方式。

攻擊流程如下:

1、 攻擊者向DNS服務器發(fā)送一定數(shù)量的DNS請求包,請求的DNS選擇該DNS服務器解析不了的,這樣的情況下,DNS服務器會向上層DNS服務器發(fā)出相同數(shù)量的請求。

2、 攻擊者快速向DNS服務器發(fā)送一定數(shù)量的偽造的DNS應答包,其中ID和端口號為隨機的,當ID和端口號與正確的相碰撞時,緩存攻擊成功。DNS服務器將錯誤的DNS解析項緩存,這樣,所有DNS請求都將導向攻擊者偽造的IP地址。

“生日悖論”的數(shù)學模型可以證明,一次成功的攻擊所需發(fā)送偽造包的數(shù)量并不多,即是說“生日攻擊”是易于發(fā)動,也易于成功的。

分布式拒絕服務攻擊

攻擊者通過控制的“僵尸網(wǎng)絡”(成百上千的被控主機群)向目標DNS服務器發(fā)送DNS查詢請求,從而導致目標DNS服務器過載以及網(wǎng)絡線路堵塞。從而形成分布式拒絕服務攻擊。

著名的“暴風影音DNS攻擊”事件就是分布式拒絕服務攻擊的一個實例。

軟件漏洞攻擊

1、 DoS(Deny of Service)攻擊

利用DNS軟件的漏洞,如9.2.0版本以前的BIND,向正在運行的BIND設備發(fā)送特定的DNS數(shù)據(jù)包請求,BIND會自動關閉,用戶的請求將無法得到DNS服務器的任何應答,用戶也將無法訪問互聯(lián)網(wǎng),從而形成DoS攻擊。

2、 緩沖區(qū)溢出攻擊

利用DNS軟件對輸入的請求字符串不做做嚴格的檢查的安全漏洞,攻擊者構造特殊的數(shù)據(jù)包攻擊DNS服務器,以期造成DNS軟件的緩沖區(qū)溢出,在溢出成功后,通過執(zhí)行特殊的代碼獲得高級的權限,從而得到DNS服務器的控制權。

管理缺陷

DNS現(xiàn)有的管理、配置以及安全機制的規(guī)劃都非常有限,甚至還很初級。例如目前全球DNS系統(tǒng)仍然主要依賴多點鏡像、負載均衡等方法來應對流量突發(fā)訪問以及遭受DDOS攻擊時保持正常運轉(zhuǎn)。另外對DNS的管理和配置以及安全防護也主要依賴管理者的實際經(jīng)驗。

三、 解決方案

應對上述DNS安全威脅的主要辦法可總結如下:

防范Arp攻擊、采用UDP隨機端口、建立靜態(tài)IP映射、運行最新版本的BIND、限制查詢、利用防火墻進行保護、利用交叉檢驗、使用TSIG機制、利用DNSSEC機制。

下面分別做出說明。

防范Arp攻擊

主要是針對局域網(wǎng)的DNS ID欺騙攻擊。如上所述,DNS ID欺騙是基于Arp欺騙的,防范了Arp欺騙攻擊,DNS ID欺騙攻擊是無法成功實施的。

采用UDP隨機端口

不再使用默認的53端口查詢,而是在UDP端口范圍內(nèi)隨機選擇,可使對ID與端口組合的猜解難度增加6萬倍,從而降低使DNS緩存攻擊的成功率。

建立靜態(tài)IP映射

主要是指DNS服務器對少部分重要網(wǎng)站或經(jīng)常訪問的網(wǎng)站做靜態(tài)映射表,使對這些網(wǎng)站的訪問不再需要經(jīng)過緩存或者向上一級的迭代查詢,從而在機制上杜絕DNS欺騙攻擊。

運行最新版本的BIND

使用最新版本的BIND,可以防止已知的針對DNS軟件的攻擊(如DoS攻擊、緩沖區(qū)溢出漏洞攻擊等)。應密切關注BIND安全公告,及時打好補丁。

限制查詢

在BIND8和BIND9之后,BIND的allow-query子句允許管理員對到來的查詢請求使用基于IP地址的控制策略,訪問控制列表可以對特定的區(qū)甚至是對該域名服務器受到的任何查詢請求使用限制策略。如限制所有查詢、限制特定區(qū)的查詢、防止未授權的區(qū)的查詢、以最少權限運行BIND等。

利用防火墻進行保護

這種保護方式可以使受保護的DNS服務器不致遭受分布式拒絕服務攻擊、軟件漏洞攻擊。原理是在DNS服務器主機上建立一個偽DNS服務器共外部查詢,而在內(nèi)部系統(tǒng)上建立一個真實的DNS服務器專供內(nèi)部使用。配置用戶的內(nèi)部DNS客戶機,用于對內(nèi)部服務器的所有查詢,當內(nèi)部主機訪問某個網(wǎng)站時,僅當內(nèi)部DNS服務器上沒有緩存記錄時,內(nèi)部DNS才將查詢請求發(fā)送到外部DNS服務器上,以保護內(nèi)部服務器免受攻擊。

利用交叉檢驗

這種保護方式可以從一定程度上防范DNS欺騙攻擊。原理是反向查詢已得到的IP地址對應的主機名,用該主機名查詢DNS服務器對應于該主機名的IP地址,如果一致,則請求合法,否則非法。

使用TSIG機制

TSIF(事物簽名)機制(RFC2845)通過使用共享密鑰(Secret Key)及單向散列函數(shù)(One-way hash function)提供信息的驗證以及數(shù)據(jù)的完整性。當配置了TSIG后,DNS消息會增加一個TSIF記錄選項,該選項對DNS消息進行簽名,為消息發(fā)送者和接受者提供共享密鑰,從而保證了傳輸數(shù)據(jù)不被竊取和篡改。TSIP機制的部署步驟不做贅述,相關RFC文檔有詳細說明。

利用DNSSEC機制

為保證客戶機發(fā)送的解析請求的完整性,保護DNS服務器及其中的信息,防止入侵者冒充合法用戶向他人提供虛假DNS信息,IETF(網(wǎng)絡工程任務組)提出了DNS安全擴展(DNSSEC)的安全防范思想。

1、 DNSSEC工作原理

為提高DNS訪問數(shù)據(jù)包的安全性,DNSSEC在兼容現(xiàn)有協(xié)議的基礎上引入加密和認證體系,在每個區(qū)域都有一對區(qū)域級的密鑰對,密鑰對中的公鑰對域名記錄信息進行數(shù)字簽名,從而使支持DNSSEC的接收者可以校驗應答信息的可靠性。

BIND9.0支持DNS的安全擴展功能?。DNSSEC引入兩個全新的資源記錄類型:KEY和SIG,允許客戶端和域名服務器對任何DNS數(shù)據(jù)來源進行密鑰驗證。DNSSEC主要依靠公鑰技術對于包含在DNS中的信息創(chuàng)建密鑰簽名,密鑰簽名通過計算出一個密鑰Hash數(shù)來提供DNS中數(shù)據(jù)的完整性,并將該Hash數(shù)封裝進行保護。私/公鑰對中的私鑰用來封裝Hash數(shù),然后可以用公鑰把Hash數(shù)翻譯出來。如果這個翻譯出的Hash值匹配接收者計算出來的Hash數(shù),那么表明數(shù)據(jù)是完整的、沒有被篡改的。

2、 DNSSEC的實施

1)、創(chuàng)建一組密鑰對

#cd/vat/named

#dnssec -keygen -a RSA -b 512 -n ZONE qfnu.edu.Kqfnu.edu+002+27782

2)、生成密鑰記錄

#dnssec –makekeyset -t 172802 I

3)、發(fā)送密鑰文件到上一級域管理員,以供簽名使用

#dnssec -signkey keyset -qfnu.edu Kedu.+002+65396.private

然后將返回qfnu.edu.signedkey文件

4)、在進行區(qū)域簽名之前,必須先將密鑰記錄添加到區(qū)域數(shù)據(jù)文件之中

#cat“$include Kqfnn.edu.+002+27782.key”>>db.qfnu.edu

5)、對區(qū)域進行簽名

#dnssec –signzone -O qfnu.edu db.qfnu.edu

6)、修改named.conf里的zone語句,系統(tǒng)將會載新的區(qū)域數(shù)據(jù)文件

3、 DNSSEC的不足

一方面,DNSSEC安全性雖然有所提高,但是標記和校驗必然產(chǎn)生額外的開銷,從而影響網(wǎng)絡和服務器的性能,簽名的數(shù)據(jù)量很大,家中了域名服務器對骨干網(wǎng)以及非骨干網(wǎng)連接的負擔,同時簡明校驗也對CPU造成了很大的負擔,同時簽名和密鑰也占用了占用的磁盤空間以及RAM容量。

另一方面,安全性能方面的考慮。絕大多數(shù)的DNS軟件是美國出口的,它們?yōu)榱送ㄟ^美國政府的安全規(guī)定而被迫降低加密算法和過程的安全強度。

第三方面,RSA算法的使用。RSA擁有美國專利,與某些廠商和組織倡導的“免費/開放”目標有所沖突,但是同時又別無選擇。在成本方面也是部署中的一個問題。

四、 總結

知名IT網(wǎng)站TechTarget近日發(fā)布的2010年五大安全主題的展望中,DNSSEC部署動向位列第三位,DNS服務的安全性已經(jīng)受到人們越來越多的關注。然而DNS系統(tǒng)本身的復雜性以及全球性特點給DNS系統(tǒng)的安全部署又帶來了很多的問題,而目前已有的安全方案仍然很不成熟,部署應用中也還有很多問題沒有解決,如何面對這些挑戰(zhàn),仍然是一個尚未解決又急需解決的難題。

參考文獻:

1、Dannie-《百度域名劫持事件百日談》

2、郭大興,周向榮 《DNS緩存中毒攻擊與防范》綠盟科技開發(fā)中心

3、孔致,姜秀柱 《DNS欺騙原理及其防御方案》計算機工程 2010年2月 第36卷 第三期

4、Harry’s home《從百度域名劫持事件談DNS系統(tǒng)的安全問題》

5、《TechTarget展望2010年五大安全主題》 中國信息安全認證中心

6、《互聯(lián)網(wǎng)域名系統(tǒng)安全管理的現(xiàn)狀及研究進展》 中國信息安全認證中心

7、姜春茂,黃春梅,聶福林 《基于DNS攻擊的安全防范策略》陜西科技大學學報 2004年

8、王啟建 高仲合 《基于DNS攻擊的安全分析及其防范》網(wǎng)絡與信息安全

9、王昕 王靜怡 《基于DNS攻擊的安全加固策略應用科技》

10、張紅輕,王道順 《基于DNS緩存中毒的Webmail攻擊及防護》 計算機工程 2009年2月

11、喬雷 《對暴風DNS遭遇攻擊導致大規(guī)模網(wǎng)絡故障的分析》 網(wǎng)絡安全博客

分享到

tangrong

相關推薦