河南 劉景云
除了直接篡改DNS 服務(wù)器之間傳輸?shù)臄?shù)據(jù)外,黑客還可能通過(guò)各種手段入侵正常的DNS 服務(wù)器,將虛假的域名解析信息直接存儲(chǔ)到該機(jī)的緩存區(qū)域,來(lái)蒙騙合法的客戶端用戶。
因?yàn)椴环ㄓ脩敉耆梢宰越ㄒ慌_(tái)看似正常的DNS 服務(wù)器,并向其他的DNS 服務(wù)器發(fā)起域名查詢操作,來(lái)誘使其獲取該虛假DNS 服務(wù)器所管控的網(wǎng)絡(luò)區(qū)域內(nèi)的記錄信息。當(dāng)別的DNS 服務(wù)器向該虛假DNS 服務(wù)器發(fā)出查詢請(qǐng)求時(shí),得到的卻是黑客精心預(yù)設(shè)的虛假IP 等惡意信息。當(dāng)客戶端查詢相應(yīng)的域名時(shí),自然會(huì)落入黑客設(shè)置的陷阱之中。
為了避免出現(xiàn)這種情況,可以使用DNSSec(DNS Security)技術(shù)加以防范。使用DNSSec 技術(shù),通過(guò)數(shù)字簽名和加密密鑰,對(duì)DNS 服務(wù)器之間的通訊數(shù)據(jù)進(jìn)行加密,保證其彼此傳輸?shù)男畔⑹钦鎸?shí)的未被惡意篡改的。
例如,當(dāng)某臺(tái)未經(jīng)授權(quán)的DNS 服務(wù)器向某臺(tái)經(jīng)過(guò)授權(quán)的DNS 服務(wù)器查詢域名信息時(shí),得到的域名解析信息經(jīng)過(guò)加密后傳回給前者。該DNS 服務(wù)器經(jīng)過(guò)檢測(cè)無(wú)誤后,才將其發(fā)送給客戶端,并將這些信息存儲(chǔ)在本機(jī)的緩存區(qū)域中。要想實(shí)現(xiàn)上述功能,授權(quán)DNS 服務(wù)器必須對(duì)自身DNS 區(qū)域進(jìn)行簽名處理。
這樣,系統(tǒng)就會(huì)針對(duì)DNS存儲(chǔ)區(qū)域內(nèi)的每一條資源記錄信息,創(chuàng)建對(duì)應(yīng)的資源記錄簽名信息。授權(quán)的DNS 服務(wù)器會(huì)將所需的資源記錄信息以及與之對(duì)應(yīng)的簽名信息一并發(fā)送出去。當(dāng)非授權(quán)的DNS 接收之后,通過(guò)使用授權(quán)DNS 服務(wù)器的公鑰信息以及資源記錄簽名信息,就可以準(zhǔn)確檢測(cè)該域解析信息是否被篡改過(guò)。同時(shí),為了檢測(cè)不存在的空資源記錄信息,系統(tǒng)該會(huì)將DNS 區(qū)域中的所有記錄進(jìn)行排序操作,針對(duì)每一條資源記錄創(chuàng)建對(duì)應(yīng)的經(jīng)過(guò)簽名的NSec(即Next Secure)記錄項(xiàng)目,每一條NSec 記錄不僅包含對(duì)應(yīng)的正常資源記錄位置信息,還包括下一條正常資源記錄位置信息。
這樣,利用這些NSec 記錄就可以將DNS 區(qū)域中的正常資源記錄信息有機(jī)的連接在一起。當(dāng)某個(gè)DNS 服務(wù)器向該授權(quán)的DNS 服務(wù)器提交的域名信息時(shí),該DNS 服務(wù)器根據(jù)資源記錄排序信息,不僅可以返回記錄為空的信息,而且根據(jù)與上一條資源記錄相關(guān)的NSec 記錄,將下一個(gè)存在的域名信息一并發(fā)送過(guò)去,讓非授權(quán)的DNS 服務(wù)器明了其提交的域名確實(shí)不存在。當(dāng)然,為了防止黑客惡意利用NSec 特性,來(lái)非法獲取授權(quán)DNS 服務(wù)器中的所有資源記錄信息,在Windows Server 2012 中內(nèi)置了更高版本的NSec 技術(shù),來(lái)破解黑客的圖謀。
例如,在域中存在兩臺(tái)DNS 服務(wù)器,其名稱為DNS1和DNS2,DNS1 扮演非授權(quán)DNS 服務(wù)器角色,DNS2 扮演授權(quán)DNS 服務(wù)器角色,其上安裝的都是Windows Server 2012。
在DNS2上打開(kāi)DNS 管理器,在左側(cè)選擇“正向查找區(qū)域”項(xiàng),在其右鍵菜單上點(diǎn)擊“新建區(qū)域”項(xiàng),在向?qū)Ы缑嬷羞x擇“主要區(qū)域”項(xiàng),在下一步窗口中選擇“至此域中控制器上運(yùn)行的所有DNS服務(wù)器”項(xiàng),點(diǎn)擊“下一步”按鈕,輸入?yún)^(qū)域名稱(例如“xxx.cn”),其余設(shè)置均保持默認(rèn),點(diǎn)擊“完成”按鈕,創(chuàng)建該區(qū)域。
之后選中該區(qū)域,在其右鍵菜單上點(diǎn)擊“新建主機(jī)(A 或AAAA)”“新建別名(CNAME)”“新建郵件交換器(MX)”等項(xiàng)目,來(lái)創(chuàng)建所需的資源記錄項(xiàng)目。例如創(chuàng)建名稱 為“client1pc”,F(xiàn)QDN 名為“client1pc.xxx.cn”,IP為“172.16.0.100”的資源記錄項(xiàng)目。當(dāng)DNS1 接收到客戶端的查詢請(qǐng)求后,如果查詢的就不在其管轄的網(wǎng)絡(luò)區(qū)域內(nèi),或不在其緩存中存儲(chǔ)的話,則DNS1 服務(wù)器會(huì)將該請(qǐng)求轉(zhuǎn)發(fā)給DNS2 服務(wù)器,之后將獲得的查詢信息發(fā)送給客戶端。
因此,需要在DNS1 的管理器中選擇DNS1 服務(wù)器,在其屬性窗口中的“轉(zhuǎn)發(fā)器”面板中點(diǎn)擊“編輯”按鈕,輸入DNS2 的IP 地址。這樣,就可以通過(guò)項(xiàng)DNS2 服務(wù)器轉(zhuǎn)發(fā)數(shù)據(jù)了。在客戶機(jī)上打開(kāi)PowerShell 窗口,執(zhí)行“resole-dnsname clientpc1.xxx.cn -Server dns1 -dnssecok”命令,可以向DNS1 服務(wù)器發(fā)送解析請(qǐng)求,DN1 將解析“clientpc1.xxx.cn”域名的請(qǐng)求信息轉(zhuǎn)發(fā) 給 了DNS2,由DNS2 進(jìn) 行正確解析后,經(jīng)由DNS1 的傳送,客戶端獲得了正確的IP信息。在DNS2 服務(wù)器上打開(kāi)DNS 管理器,在左側(cè)選擇“正向查找區(qū)域”→“xxx.cn”項(xiàng),在其右鍵菜單上點(diǎn)擊“對(duì)區(qū)域進(jìn)行簽名”項(xiàng),在向?qū)Ы缑妫ㄈ鐖D1)中選擇“使用默認(rèn)設(shè)置對(duì)區(qū)域簽名”項(xiàng),點(diǎn)擊“下一步”按鈕,并執(zhí)行簽名處理。
一體化的制圖數(shù)據(jù)生產(chǎn)更新采用集中和分布相結(jié)合的方式進(jìn)行,即對(duì)地形要素?cái)?shù)據(jù)進(jìn)行集中建庫(kù)管理,對(duì)制圖數(shù)據(jù)的編輯處理采用分布式、分幅式和離線式的生產(chǎn)組織模式,對(duì)編輯完成的分幅制圖數(shù)據(jù)集中建立制圖數(shù)據(jù)庫(kù)。因此,需要利用先進(jìn)的數(shù)據(jù)庫(kù)管理技術(shù),基于地形要素?cái)?shù)據(jù)庫(kù),按圖幅范圍輸出數(shù)據(jù),用于單幅地圖的編輯處理,地圖編輯完成后再返回?cái)?shù)據(jù)庫(kù),進(jìn)行集中建庫(kù)管理。
完成后在工具欄上點(diǎn)擊“刷新”,對(duì)該區(qū)域資源記錄列表中進(jìn)行整理操作。在列表的“類型”列中會(huì)出現(xiàn)一些新的記錄項(xiàng)目類型(如圖2),包括RR 簽名、DNS密鑰、NSec3(下一個(gè)安全參數(shù))等。其中的“DNS 密鑰”類型的項(xiàng)目包含該區(qū)域公鑰信息。只有將這些信息導(dǎo)入到DNS1 中,DNS1 才可以信任該密鑰并對(duì)傳輸?shù)男畔⑦M(jìn)行安全認(rèn)證。在DNS2 上打開(kāi)“C:WindowsSystem32dns”目錄,在其中可以顯示所有和DNS 設(shè)置相關(guān)的文件,上述公鑰信息自然保存在其中。為便于操作,可將上述目錄設(shè)置為共享狀態(tài)(如共享名為“ymfw”),允許DNS1 訪問(wèn),也可以將其中的“keyset-xxx.cn”附件復(fù)制出來(lái),存放到DNS1 可以訪問(wèn)到的位置。
圖1 區(qū)域簽名向?qū)Ы缑?/p>
在DNS1 上打開(kāi)DNS 管理器,在左側(cè)選擇“信任點(diǎn)”項(xiàng),在其右鍵菜單上依次點(diǎn)擊“導(dǎo)入”→“DNSKEY”項(xiàng),然后在彈出窗口中輸入“\dns2ymfwkeyset-xxx.cn”,或者點(diǎn)擊“瀏覽”按鈕,直接選擇復(fù)制過(guò)來(lái)的上述文件。點(diǎn)擊“確定”按鈕,可以顯示其擁有的DNSKEY 信任點(diǎn)信息。然后在PowerShell窗口執(zhí)行“g e tdnsservertrustanchor xxx.cn”命令,也可以查看DNSKEY 信任點(diǎn)信息。在其中的“TrustAnchorState”列中必須顯示為“Valid”,才表示有效。在客戶端也可以執(zhí)行“resolvednsname-namexxx.cn.trustanchors -type dnskey -Server dns1”命令,來(lái)顯示DNS1擁有的DNSKEY 信任點(diǎn)信息。為避免出現(xiàn)錯(cuò)誤,可在DNS1 上執(zhí)行“firewall.cpl”命令,將防火墻暫時(shí)關(guān)閉,避免出現(xiàn)網(wǎng)絡(luò)連接受阻的情況。
圖2 查看簽名信息
在客戶機(jī)打開(kāi)PowerShell窗口,執(zhí)行“resole-dnsname clientpc1.xxx.cn -Server dns1 -dnssecok”命令,然后向DNS1 服務(wù)器發(fā)送解析請(qǐng)求,其中的“-dnssecok”參數(shù)表示讓DNS1 服務(wù)器將和DNSSEC 相關(guān)的記錄傳送回來(lái)。
返回信息中,不僅可以顯示解析的IP 地址,還會(huì)顯示詳細(xì)的簽名信息。
為了進(jìn)一步提高域名解析的安全性,必須讓DNS1 驗(yàn)證從DNS2 接收的資源記錄信息的合法性。
選擇“啟用此規(guī)則中的DNSSec”和“要求DNS 客戶端檢查名稱和地址數(shù)據(jù)是否已經(jīng)由DNS 服務(wù)器驗(yàn)證”項(xiàng),點(diǎn)擊“創(chuàng)建”按鈕,在“名稱解析策略表”中顯示上述策略,點(diǎn)擊“應(yīng)用”按鈕,使該策略生效,如圖3 所示。
圖3 設(shè)置域名解析策略
之后在PowerShell 窗口中執(zhí)行“gpupdate/force”命令,來(lái)刷新組策略。
執(zhí)行“get-dnsclient nrptpolicy”命令,在返回信息中的“DnsSecValidation Required”欄中,如果顯示為“True”,表示上述策略已經(jīng)激活。
這樣,當(dāng)客戶端向DNS1提交域名解析請(qǐng)求后,DNS1會(huì)項(xiàng)DNS2 轉(zhuǎn)發(fā)該請(qǐng)求,當(dāng)DNS1 接收到DNS2 發(fā)揮的域名解析信息后,會(huì)對(duì)其安全性進(jìn)行驗(yàn)證,當(dāng)驗(yàn)證通過(guò)確認(rèn)沒(méi)有被非法篡改后,才將其發(fā)送給客戶端。
如果DNS1 上的DNSKEY信任點(diǎn)信息出現(xiàn)受損、丟失或者被破壞等情況后,則DNS1 服務(wù)器就無(wú)法信任DNS2 發(fā)送來(lái)的“xxx.cn”區(qū)域的DNSKEY 密鑰,自然無(wú)法驗(yàn)證域名解析信息的完整性,對(duì)客戶端也無(wú)法提供可靠的解析信息。
此刻,可在客戶端上執(zhí)行“ipconfig/flushdns”命令,清除DNS 緩存信息,然后再執(zhí)行“resole-dnsname clientpc1.xxx.cn -Server dns1 -dnssecok”命令,則會(huì)發(fā)現(xiàn)無(wú)法獲取所需的IP 信息,同時(shí)還會(huì)出現(xiàn)DNS 數(shù)據(jù)包不安全的警告信息。