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