近幾年來(lái),DNS解析服務(wù)頻繁受到攻擊。僅以國(guó)內(nèi)為例,2009年5月19日晚21時(shí)左右,江蘇、河北、山西、廣西、浙江、天津、內(nèi)蒙古、黑龍江、廣東等省市出現(xiàn)大范圍網(wǎng)絡(luò)故障,各地網(wǎng)民均遇到網(wǎng)絡(luò)不暢通、網(wǎng)頁(yè)無(wú)法打開(kāi)等問(wèn)題。據(jù)工業(yè)和信息化部通信保障局發(fā)布的公告,確認(rèn)該事件是由于暴風(fēng)網(wǎng)站域名解析受到網(wǎng)絡(luò)攻擊,導(dǎo)致電信運(yùn)營(yíng)商的遞歸域名解析服務(wù)器收到大量異常請(qǐng)求而引發(fā)擁塞。此后不久又發(fā)生了百度域名被劫持事件,2010年1月12日,國(guó)內(nèi)最大的中文搜索引擎公司百度的域名被解析到非法地址,導(dǎo)致網(wǎng)民無(wú)法正常登陸百度網(wǎng)站達(dá)8小時(shí)。這是百度成立以來(lái)最嚴(yán)重的訪問(wèn)故障事件,給該公司造成的直接損失超過(guò)700萬(wàn)元。
在諸多安全事件的背景下,DNS服務(wù)器的性能和安全性受到了空前關(guān)注。部分研究人員借鑒了被廣泛采用的Web緩存技術(shù),提出了“遞歸與緩存分離”的架構(gòu)解決方案。該方案使用兩臺(tái)服務(wù)器來(lái)做DNS解析,其中一臺(tái)只做DNS遞歸解析,另一臺(tái)只做DNS緩存查詢(xún)。研究人員認(rèn)為這個(gè)方案與Web緩存技術(shù)一樣,會(huì)帶來(lái)兩大優(yōu)點(diǎn):首先是整體性能的提升,因?yàn)镈NS解析的兩個(gè)過(guò)程已經(jīng)被進(jìn)行了分解,絕大多數(shù)情況下可以從緩存中得到結(jié)果,只有在必要時(shí)才需要遞歸解析,因而提高了性能;二是在受到攻擊時(shí)具有更好的安全性,因?yàn)镈NS攻擊往往是針對(duì)遞歸解析的,由于兩臺(tái)服務(wù)器各司其職,至少可以保證緩存查詢(xún)服務(wù)器的安全運(yùn)行。
從表現(xiàn)上看來(lái),“遞歸與緩存分離”架構(gòu)確實(shí)有一定的吸引力,但事實(shí)真的如此嗎?我們對(duì)這種架構(gòu)進(jìn)行了研究測(cè)試,得到這樣一個(gè)結(jié)論:DNS技術(shù)與Web緩存技術(shù)存在本質(zhì)區(qū)分,兩者并不能夠混為一談。盡管“遞歸與緩存分離”架構(gòu)可能會(huì)給性能和安全性帶來(lái)一定程度的提升,但同時(shí)也存在更大的隱患,并不是一個(gè)理想的架構(gòu)。
首先,讓我們來(lái)看一看“遞歸與緩存分離”架構(gòu)給性能帶來(lái)的影響。據(jù)統(tǒng)計(jì),正常應(yīng)用環(huán)境下,超過(guò)90%的DNS解析請(qǐng)求在DNS系統(tǒng)穩(wěn)定運(yùn)行后是可以緩存命中的,只有少量解析請(qǐng)求需要遞歸進(jìn)行,新架構(gòu)對(duì)性能的提升可能會(huì)比較有限。為了驗(yàn)證這一點(diǎn),我們做了一個(gè)傳統(tǒng)的通用緩存架構(gòu)和“遞歸與緩存分離”架構(gòu)的性能對(duì)比測(cè)試。測(cè)試環(huán)境中共有5臺(tái)配置相同的服務(wù)器(E5620@2.40GHz x 2/8GB內(nèi)存/雙千兆網(wǎng)卡),統(tǒng)一連接到一臺(tái)千兆以太網(wǎng)交換機(jī)。其中3臺(tái)安裝了在國(guó)內(nèi)擁有較大市場(chǎng)份額的IDNS服務(wù)軟件,另2臺(tái)作為高性能發(fā)包機(jī)使用。3臺(tái)IDNS服務(wù)器中,1臺(tái)為通用緩存架構(gòu),其余2臺(tái)配置為“遞歸與緩存分離”的部署架構(gòu)。(測(cè)試拓?fù)湟?jiàn)圖1)
接下來(lái),我們?cè)诎l(fā)包機(jī)上通過(guò)resperf工具,采用現(xiàn)網(wǎng)的域名日志分別對(duì)通用緩存架構(gòu)和“遞歸與緩存分離”架構(gòu)進(jìn)行了壓力測(cè)試。這個(gè)步驟一共進(jìn)行5次,取最終穩(wěn)定的QPS(query per second,每秒請(qǐng)求數(shù))值做為結(jié)果。最終,通用緩存架構(gòu)的QPS值穩(wěn)定在20萬(wàn),而“遞歸與緩存分離”架構(gòu)的QPS值為20.2萬(wàn)。我們可以看出,DNS系統(tǒng)運(yùn)行穩(wěn)定后,“遞歸與緩存分離”架構(gòu)只會(huì)面臨很少量的遞歸請(qǐng)求,因此實(shí)際性能與通用緩存架構(gòu)趨于一致,而不是大幅提升。
實(shí)際上,“遞歸與緩存分離”架構(gòu)在實(shí)際使用中也帶來(lái)了更多的安全問(wèn)題。一方面,遞歸與緩存分離帶來(lái)了新故障點(diǎn),它們彼此間又相互影響,使維護(hù)監(jiān)控工作變得復(fù)雜。另一方面,由于緩存服務(wù)是從遞歸服務(wù)處取得解析結(jié)果,“遞歸與緩存分離”架構(gòu)在遞歸服務(wù)受到緩存污染攻擊后會(huì)出現(xiàn)污染放大效應(yīng),且不容易被查覺(jué),可能導(dǎo)致更嚴(yán)重的安全事件。此外,由于這種架構(gòu)有著相對(duì)特殊的業(yè)務(wù)模型,緩存服務(wù)器受到的壓力通常遠(yuǎn)大于遞歸服務(wù)器,因此惡意攻擊者可以采用比緩存服務(wù)器小得多的攻擊流量對(duì)遞歸服務(wù)器進(jìn)行攻擊。這是一個(gè)相當(dāng)嚴(yán)重的問(wèn)題,因?yàn)樗鼇?lái)源于“遞歸與緩存分離”架構(gòu)本身。一些研究者認(rèn)為采用隱藏遞歸服務(wù)器IP外加訪問(wèn)控制策略的手段可以防止有針對(duì)性的攻擊,但雖然大部分遞歸服務(wù)器的IP地址不會(huì)被公開(kāi),通過(guò)建立一個(gè)授權(quán)DNS的方式卻可以很容易地得到遞歸服務(wù)器IP,并且如果攻擊者采用了源端口為53的攻擊方式,傳統(tǒng)的訪問(wèn)控制手段顯然也難以阻擋。
一些研究者還指出,采用“遞歸與緩存分離”架構(gòu)可在DNS系統(tǒng)受到攻擊,當(dāng)大量遞歸請(qǐng)求產(chǎn)生導(dǎo)致遞歸服務(wù)器崩潰而無(wú)力返回解析結(jié)果時(shí)起到一定的保護(hù)作用。理由是緩存服務(wù)器的域名在TTL時(shí)間內(nèi)緩存,還能夠做有限度的正常解析,從而可以在類(lèi)似2009年5月19日暴風(fēng)影音攻擊那樣的情況下起到保護(hù)作用。其實(shí),這種正常解析的效果是相對(duì)有限的,因?yàn)槟壳按笮途W(wǎng)站的域名傾向于使用較短的TTL,如百度、谷歌都只有20分鐘。因此,“遞歸與緩存分離”架構(gòu)可能能夠正常解析一段時(shí)間,但肯定比較短暫。
還有一些觀點(diǎn)認(rèn)為,在缺乏專(zhuān)業(yè)抗攻擊安全設(shè)備的情況下,用戶(hù)可以測(cè)試使用不同的DNS系統(tǒng)或不同的功能模塊或插件,利用合理的策略配置,在一定程度上應(yīng)對(duì)攻擊。我們也做了一個(gè)測(cè)試去驗(yàn)證這一觀點(diǎn),利用上一個(gè)測(cè)試環(huán)境,我們移除了一臺(tái)服務(wù)器,將其余4臺(tái)分別配置為發(fā)包機(jī)、壓力機(jī)、BIND服務(wù)器及IDNS服務(wù)器。作為開(kāi)放源代碼的DNS服務(wù)器軟件,BIND已經(jīng)成為世界范圍內(nèi)使用最為廣泛的產(chǎn)品,在測(cè)試中具有一定的代表性。壓力機(jī)使用的是開(kāi)源的dnsflood攻擊工具,分別針對(duì)IDNS服務(wù)器和BIND服務(wù)器進(jìn)行攻擊。在此前提下,發(fā)包機(jī)再采用resperf工具及現(xiàn)網(wǎng)域名日志進(jìn)行測(cè)試,觀察www.baidu.com以及www.google.com的解析情況。(測(cè)試拓?fù)湟?jiàn)圖2)
我們?cè)跍y(cè)試中注意到,針對(duì)標(biāo)準(zhǔn)的BIND服務(wù)器進(jìn)行dnsflood攻擊,很快便不能夠解析包括www.baidu.com和www.google.com在內(nèi)的所有域名;針對(duì)IDNS服務(wù)器進(jìn)行攻擊,可以解析出大部分域名,并能夠正確解析www.baidu.com和www.google.com。這個(gè)差異來(lái)源于DNS服務(wù)系統(tǒng)的設(shè)計(jì),根據(jù)文檔說(shuō)明,IDNS針對(duì)解析隊(duì)列進(jìn)行了一定程度的優(yōu)化,在擁塞時(shí)將采用概率智能拋棄策略,隨時(shí)保證到達(dá)的請(qǐng)求有機(jī)會(huì)獲得解析。而對(duì)于百度、谷歌等實(shí)際中訪問(wèn)量較大的常見(jiàn)域名來(lái)說(shuō),獲得解析結(jié)果的機(jī)會(huì)更大一些,從而在DNS系統(tǒng)受到攻擊時(shí)仍然能夠保持訪問(wèn)相對(duì)正常。
事實(shí)證明,隨著技術(shù)的發(fā)展進(jìn)步,DNS系統(tǒng)對(duì)類(lèi)似暴風(fēng)影音那一類(lèi)的拒絕服務(wù)攻擊已經(jīng)可以做到一定程度的防護(hù)。用戶(hù)在部署時(shí)可以通過(guò)測(cè)試、試用等手段評(píng)估更多的軟件解決方案。而目前業(yè)界比較關(guān)注的DNS“遞歸與緩存分離”架構(gòu),還存在著較多的安全隱患,選擇時(shí)宜慎重。