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

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

3) 根域名服務(wù)器接到請(qǐng)求后,將包含有所需解釋的域名的頂級(jí)域名服務(wù)器返回給本地域名服務(wù)器。

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

5) 頂級(jí)域名服務(wù)器接到請(qǐng)求后,將包含所查詢的域名的域名服務(wù)器返回給本地域名服務(wù)器。

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

然后將查詢結(jié)果緩存,并向客戶端應(yīng)答。

7) 客戶端接到應(yīng)答后,將查詢結(jié)果緩存,然后向用戶應(yīng)答。

按此在新窗口打開(kāi)圖片按此在新窗口打開(kāi)圖片

二、 安全威脅

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

DNS欺騙

DNS的查詢請(qǐng)求是基于UDP的,DNS客戶端會(huì)接受首先到達(dá)的DNS應(yīng)答包,而將后到達(dá)的DNS應(yīng)答包當(dāng)作是冗余包簡(jiǎn)單丟棄掉??蛻舳藢?duì)DNS應(yīng)答包的驗(yàn)證僅通過(guò)隨機(jī)發(fā)送的查詢ID和UDP端口號(hào),除此之外沒(méi)有任何的驗(yàn)證。這就給DNS欺騙提供了機(jī)會(huì)。

1、DNS ID欺騙

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

攻擊流程:

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

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

3) 本地DNS服務(wù)器發(fā)送的真的DNS應(yīng)答包因?yàn)橥碛趥卧彀脩羰盏胶髞G棄。至此,DNS ID欺騙攻擊完成。

2、DNS緩存中毒

當(dāng)攻擊者與用戶不是處于同一個(gè)局域網(wǎng)時(shí),攻擊者無(wú)法得到DNS請(qǐng)求報(bào)文的ID與端口號(hào),“生日攻擊”就是在這種情況下的對(duì)DNS緩存的一種攻擊方式。

攻擊流程如下:

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

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

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

分布式拒絕服務(wù)攻擊

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

著名的“暴風(fēng)影音DNS攻擊”事件就是分布式拒絕服務(wù)攻擊的一個(gè)實(shí)例。

軟件漏洞攻擊

1、 DoS(Deny of Service)攻擊

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

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

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

管理缺陷

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

三、 解決方案

應(yīng)對(duì)上述DNS安全威脅的主要辦法可總結(jié)如下:

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

下面分別做出說(shuō)明。

防范Arp攻擊

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

采用UDP隨機(jī)端口

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

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

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

運(yùn)行最新版本的BIND

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

限制查詢

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

利用防火墻進(jìn)行保護(hù)

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

利用交叉檢驗(yàn)

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

使用TSIG機(jī)制

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

利用DNSSEC機(jī)制

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

1、 DNSSEC工作原理

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

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

2、 DNSSEC的實(shí)施

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

#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ā)送密鑰文件到上一級(jí)域管理員,以供簽名使用

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

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

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

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

5)、對(duì)區(qū)域進(jìn)行簽名

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

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

3、 DNSSEC的不足

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

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

第三方面,RSA算法的使用。RSA擁有美國(guó)專利,與某些廠商和組織倡導(dǎo)的“免費(fèi)/開(kāi)放”目標(biāo)有所沖突,但是同時(shí)又別無(wú)選擇。在成本方面也是部署中的一個(gè)問(wèn)題。

四、 總結(jié)

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

參考文獻(xiàn):

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

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

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

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

5、《TechTarget展望2010年五大安全主題》 中國(guó)信息安全認(rèn)證中心

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

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

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

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

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

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

分享到

tangrong

相關(guān)推薦