防止誤入網(wǎng)站 安全域名系統(tǒng)使用指南
在發(fā)現(xiàn)經(jīng)常訪問(wèn)的網(wǎng)站出現(xiàn)宕機(jī)或者誤入某些非常下流網(wǎng)站的原因是由于域名系統(tǒng)(DNS)被污染而造成的。域名系統(tǒng)緩存污染并屬于不經(jīng)常發(fā)生的問(wèn)題,但問(wèn)題是一旦出現(xiàn)真正發(fā)生的情況,就可能會(huì)導(dǎo)致互聯(lián)網(wǎng)上大部分區(qū)域陷于停頓狀態(tài)。解決這一潛在威脅的辦法是什么?答案就是域名系統(tǒng)安全擴(kuò)展(DNSSEC)。
域名系統(tǒng)通常是這樣的情況下被污染的。DNS是互聯(lián)網(wǎng)地址名單的管理者。在它的幫助下,你不需要自己輸入出類(lèi)似“http://209.85.135.99/”這樣一個(gè)谷歌擁有的眾多IPv4地址之一來(lái)訪問(wèn)對(duì)應(yīng)的網(wǎng)站,只要簡(jiǎn)單地輸入“http://www.google.com”就可以達(dá)到相應(yīng)的目的。但是,你的瀏覽器是如何確認(rèn)“209.85.135.99”就屬于谷歌的正確地址呢?就本身而言,它是做不到這一點(diǎn)的。它需要依賴于DNS,并且,在這里沒(méi)有什么好抱怨的,普通DNS系統(tǒng)里沒(méi)有內(nèi)置任何措施,來(lái)確保返回給瀏覽器的相關(guān)信息是正確有效的。
而DNSSEC的作用就是通過(guò)要求網(wǎng)站利用DNS服務(wù)器來(lái)對(duì)域名和對(duì)應(yīng)的網(wǎng)絡(luò)IP地址進(jìn)行驗(yàn)證的方式來(lái)防止DNS緩存被污染。為了確保信息不受到破壞,DNSSEC利用數(shù)字簽名和公鑰技術(shù)來(lái)對(duì)交換信息進(jìn)行了加密。由于需要破壞流行網(wǎng)站的DNS信息才能獲取加密信息,這種防護(hù)措施反過(guò)來(lái)又讓黑客對(duì)DNS服務(wù)器的攻擊更難實(shí)現(xiàn)。
從7月15日開(kāi)始,作為主DNS服務(wù)器的13臺(tái)互聯(lián)網(wǎng)根域名服務(wù)器已經(jīng)實(shí)現(xiàn)了對(duì)DNSSEC的支持。到現(xiàn)在,在互聯(lián)網(wǎng)全部294個(gè)頂級(jí)域(TLD)中已經(jīng)有55個(gè)開(kāi)始支持DNSSEC。這里面包括了所有非盈利性組織使用的.org域,教育機(jī)構(gòu)使用的.edu域。并且,威瑞信已經(jīng)決定從2011年初起為.net域提供DNSSEC支持。
對(duì)于我們中的大多數(shù)人來(lái)說(shuō),這個(gè)層次的變化真得無(wú)所謂。我們并不需要呼叫根域名服務(wù)器或者頂級(jí)域來(lái)對(duì)域名進(jìn)行解析。實(shí)際上,現(xiàn)在切換到DNSSEC給我們帶來(lái)的影響才剛剛開(kāi)始。在10月18日,康卡斯特成為第一家部署DNSSEC的主要互聯(lián)網(wǎng)服務(wù)供應(yīng)商。因此,如果你現(xiàn)在想使用DNSSEC的話,就已經(jīng)沒(méi)問(wèn)題了。不論你是否屬于康卡斯特的用戶,都可以將自己的DNS服務(wù)器指向IP地址設(shè)置為75.75.75.75和75.75.76.76。關(guān)于操作的詳細(xì)說(shuō)明,你可以觀看康卡斯特提供的DNSSEC說(shuō)明視頻。如果你想了解為什么說(shuō)使用DNSSEC是一個(gè)好主意的話,可以登錄新建立的安全域名系統(tǒng)使用指南網(wǎng)站,上面提供了全面詳細(xì)的說(shuō)明資料。
所以,如果說(shuō)DNSEC是一個(gè)非常好的主意的話,為什么不是所有人都已經(jīng)做到了呢?這個(gè)么,你看,如同任何互聯(lián)網(wǎng)的重大調(diào)整,在應(yīng)用DNSSEC到舊的程序和硬件上時(shí),可能會(huì)出現(xiàn)問(wèn)題。
最主要的問(wèn)題就是一些路由器、交換機(jī)和防火墻不能有效處理DNSSEC的數(shù)據(jù)包。DNS流量使用的是用戶數(shù)據(jù)報(bào)協(xié)議(UDP),在通常情況下,DNS用UDP數(shù)據(jù)包的大小是在512字節(jié)之內(nèi)。因此,網(wǎng)絡(luò)上的很多軟件和硬件都默認(rèn)拒絕超過(guò)512字節(jié)的任何UDP數(shù)據(jù)包。不幸的是,DNSSEC的數(shù)據(jù)包總是大于512字節(jié)。
在某些系統(tǒng)中,這會(huì)導(dǎo)致DNS出現(xiàn)故障。而在其它系統(tǒng)中可能會(huì)導(dǎo)致故障并轉(zhuǎn)移到傳輸控制協(xié)議(TCP)中。與UDP相比使用TCP的缺點(diǎn)就是,占用的帶寬大得多。盡管可能不是什么大問(wèn)題,但對(duì)于企業(yè)網(wǎng)絡(luò)的管理者來(lái)說(shuō),這會(huì)導(dǎo)致潛伏期明顯增加。并且,沒(méi)人喜歡互聯(lián)網(wǎng)速度變慢。
此外,當(dāng)客戶搜索一家不存在的網(wǎng)站時(shí),一些互聯(lián)網(wǎng)服務(wù)供應(yīng)商和DNS服務(wù)器會(huì)對(duì)DNS答復(fù)信息進(jìn)行重寫(xiě),將他們重定向到經(jīng)過(guò)定制的搜索頁(yè)面上。舉例來(lái)說(shuō),我使用OpenDNS的原因就是,它的DNS查詢速度比我的互聯(lián)網(wǎng)服務(wù)供應(yīng)商更快。但是,如果我輸入的域名不存在,它將會(huì)返回一個(gè)OpenDNS的搜索頁(yè)面。在DNSSEC下使用OpenDNS這么做時(shí),會(huì)發(fā)生什么情況?我不知道,但我有種工作情況不會(huì)很正常的不好感覺(jué)。
順便提一下,在DNS安全管理方面,OpenDNS已經(jīng)提供了其它選擇:DNSCurve。DNSCurve將如何實(shí)現(xiàn)與DNSSEC協(xié)同工作呢?答案是不可能。它們?cè)噲D利用截然不同的方法來(lái)實(shí)現(xiàn)DNS安全。對(duì)于用戶來(lái)說(shuō),這可能就意味著,不管其它地方使用的是什么安全措施,你依然可以使用DNS,但如果大家使用的不是相同技術(shù)的話,在安全方面就不會(huì)獲得任何保障。
就個(gè)人來(lái)看,我認(rèn)為大家目前能做的最好情況,就是更新內(nèi)部DNS軟件和固件到最新的DNSSEC兼容版本。我們還可以了解上游的DNS是否按照域名系統(tǒng)運(yùn)行分析研究中心為非網(wǎng)絡(luò)管理員用戶提供的指南部署了DNSSEC,為了簡(jiǎn)單起見(jiàn),你也可以選擇運(yùn)行Java應(yīng)用程序,快速得到清晰明確的確定答案。
如果發(fā)現(xiàn)使用的ISP沒(méi)有使用DNSSEC的話,提醒他們盡快部署。DNSSEC是未來(lái)發(fā)展的趨勢(shì),ISP部署使用的越早,獲得的安全性就越高。