前面幾篇文章介紹了UNIX的概念、創建等。這篇介紹DNS的管理維護。
一、UNIX系統DNS管理維護 1、DNS的啟動與停止
如在Solaris 系統中啟動與停止DNS的方法:
用root身份登錄到系統
#ps –ef|grep named 查看named 的進程號pid
1)重啟動named:
# kill –HUP pid
2)停止named:
# kill pid
如在AIX系統中啟動與停止DNS的方法:
用root身份登錄到系統
1) 啟動named:
# startsrc –s named
2) 停止named:
# stopsrc –s named
3)數據庫修改後重讀數據庫:
# refresh –s named
2、讓DNS服務隨UNIX系統的自動啟動
在我們創建與配置好DNS服務器時,當UNIX系統重新啟動時,DNS服務一般是不會自動起來的,必須手工啟動,這樣很麻煩。在Solaris系統中,我們必須要修改 inetd.conf配置文件,找到named的注釋行,去掉前面的“#”即可。
在AIX系統中,為了使系統在下一次啟動時named能處於工作狀態,應打開/etc/rc.tcpip文件中關於named的注釋即可(# smit stnamed)。
二、UNIX 的DNS測試與調試工具 在完成DNS的安裝及設定後,客戶端即可向服務器提出名稱解析的要求,使用者可通過相關的工具來對DNS服務器做測試與調試。named提供幾種內置的輔助調試工具,其中最重要的是可配置性非常靈活的日志功能;我們可以在命令行指定調試級別或者用ndc設置它們,還可以命令named把運行統計結果轉儲到一個文件,並用dig或nslookup驗證域名查詢。
1、首先我們用系統命令 ping 來測試,看是否能拼通
# ping “域名”
在UNIX系統中,如果拼不通,則首先要檢查DNS服務是否處於工作狀態,其次用UNIX的PS命令查看一下named的進程是否存在如ps –ef|group named;假如進程已有,則要檢查DNS的創建過程所有的配置文件的正確與否。
在Windows客戶機中,可進入MSDOS方式,如在C\>提示下使用ping hostname命令,其中hostname指所查詢的域名全稱,如配置正確則立刻顯示經過解析的IP地址,否則長時間無顯示結果表示配置不正確需查找原因。
2、查看日志系統
named日志工具的靈活性是很好的,BIND4使用系統日志來報告錯誤消息和反常情況;BIND8通過添加另一個間接層並支持直接將日志計入文件,推廣了系統日志的概念。BIND日志是在named.conf中用logging語句配置的,BIND8默認的日志配置為:
logging {
category default {default_syslog;default_debug;};
category panic {default_syslog;default_stderr;};
category eventlib {default_debug;};
category packet {default_debug;};
};
BIND9默認的日志配置為:
logging {
category default {default_syslog;default_debug;};
};
default_syslog:用工具守護進程把info和更高嚴重性的消息發送到syslog;
default_debug:日志記錄到文件named.run,嚴重性設置為dynamic;
default_stderr:把消息發送給named的標准出錯輸出,嚴重性為info。
當DNS運行出錯時,我們可以查看系統日志文件syslog以及named.run等,對照有關BIND 錯誤消息清單(可以在http://www.acmebw.com/askmrdns/bind-messaged.htm網站上下載),找到解決方法。
3、調試級別
named調試級別用從0到11的整數來表示;數字越大,表示輸出信息越詳細。級別0關閉調試,級別1和2適用於調試配置和數據庫,大於4的級別適合代碼的維護人員使用。我們可以在named命令行用-d標記調用調試,例如:
# named –d2
將在調試級別2啟動named,調試信息寫入named.run文件,該文件的位置隨UNIX系統的不同而不同。嚴重性級別越高,則日志記錄的信息越多。
4、用ndc調試
ndc命令(在BIND 9中稱為rndc)是操作named的一種有利工具,產生文件的命令把文件放到named.conf中被指定為named主目錄的目錄中。
一些常用的ndc調試命令簡單介紹如下:
status:顯示運行中的named的當前狀態;
dumpdb:把DNS數據庫轉儲到named_dump.db;
stats:把統計轉儲到named.stats;
reload:重新裝載named.conf和區文件;
restart:重新啟動named,清空高速緩存;
notrace:關閉調試。
例如named的最新版本保留了查詢的統計,我們可以用ndc stats訪問它,named接到這條命令時,就將統計寫入文件named.stats。
5、使用nslookup、dig和host調試
以shell方式可以使用3種工具來查詢DNS數據庫:nslookup、dig和host,在BIND的軟件發布中包括nslookup和dig。Nslookup是這三個工具中最老的,而且總是隨同BIND一起發布;dig是域信息的探索程序,最初由Steve Hotz編寫,後來Michael Sawy針對BIND 9將它重新編寫,它也和BIND一起發布;host由Eric Wassenaar編寫,是另一個開放源代碼的工具,其特點是輸出對用戶很友好,功能是可檢查區文件的語法。
另外三者使用的解析器庫不同:dig和host使用BIND的解析器,而nslookup有其自身的解析器。
(1)nslookup
輸入 nslookup 命令後,會看到 > 提示符號,之後就可輸入查詢指令。一般會輸入IP address或是domain name來做反向及正向的解析。而nslookup不僅提供上述2種解析,亦提供DNS中其它的資料記錄型態,例如MX、NS…等等,我們可在提示符號直接輸入”?”來獲得所有可以使用的參數或資料型態。
# nslookup
Default Server: ghq.js.com
Address: 61.155.107.131
>
(2)dig
用法:dig [ @server ] [ -b address ] [ -c class ]… (詳細說明請以"man dig"來查詢)
# dig ghq.js.com
送出domain name的查詢封包至name server,後面參數可接IP address或domain name來獲得name server所提供的相關訊息,同nslookup一樣,dig也提供不同資料記錄型態,例如MX…等等。
(3)host
host基本上也是dns的查詢,後面可接IP address或domain name來獲得對應的domain name或IP。
# host ghq.js.com
ghq.js.com has address 61.155.107.131
三、DNS日常的安全管理維護 針對BIND DNS服務軟件的安全配置情況,我們要充分利用BIND自身已經實現的保護功能,加強BIND安全性,從而能抵御目前已知的BIND安全漏洞,並使潛在的安全漏洞所可能對服務器造成的影響盡可能地減少。這也是我們針對UNIX DNS日常管理維護非常重要的一項工作。
從DNS服務器的安全運行管理可以考慮采用下面幾種方法:
1、采用多個域名服務器應付惡意攻擊者,對DNS服務器進行拒絕服務攻擊。
如果純粹從理論上出發,那麼一台DNS服務器是完全可以完成所有任務的。當注冊了一個域名以後,實際上可以最大為企業的域名設置6個DNS服務器名。如果主域名服務器被人攻擊了,可以啟用輔域名服務器,如果主輔域名服務器都被同時攻破了,也可以用第三台或第四台域名服務器進行工作,具體設置幾個域名服務器可根據企業構建網絡情況而設定。
而對於廣大的用戶而言,當出現這種多個DNS服務器停止服務帶來的唯一的影響就是查詢域名的時候會延遲,因為它需要一個一個的去查詢,直到找到最後的一個為止。
2、啟動BIND(DNS)安全選項來進行配置。
named進程啟動選項如下:
-r:關閉域名服務器的遞歸查詢功能(缺省為打開)。該選項可在配置文件的
options中使用"recursion"選項覆蓋。
-u
和-g :定義域名服務器運行時所使用的UID和GID。 這用於丟棄啟動時所需要的root特權。
-t :指定當服務器進程處理完命令行參數後所要chroot()的目錄。
在options節中增加自定義的BIND版本信息,可隱藏BIND服務器的真正版本號。
version "No know?";
// version 8.2.3;
此時如果通過DNS服務查詢BIND版本號時,返回的信息就是"No know?"。
要禁止DNS域名遞歸查詢,在options(或特定的zone區域)節中增加:
recursion no;
fetch-glue no;
要限制對DNS服務器進行域名查詢的主機,在options(或特定的zone區域)節中增加:
allow-query { };
address_match_list是允許進行域名查詢的主機IP列表,如"202.102.24.35; 61.132.57/24;"。
要限制對DNS服務器進行域名遞歸查詢的主機,在options(或特定的zone區域)節中增加:
allow-recursion { };
address_match_list是允許進行域名遞歸查詢的主機IP列表,如 "202.102.24.35; 61.132.57/24;"。
l 要限制對DNS服務器進行區域記錄傳輸的主機,在options(或特定的zone區域)節中增加:
allow-transfer { };
address_match_list是允許進行區域記錄傳輸的主機IP列表,如"202.102.24.35; 61.132.57/24;"。
3、通過TSIG(Transaction Signature)對區域記錄傳輸進行認證和校驗。
首先請確保BIND域名服務器軟件已更新到最新版本,因為最新的BIND版本解決了在以前版本中發現的bug和/或安全漏洞。
如果需要用TSIG簽名來進行安全的DNS數據庫手工更新,具體操作步驟很簡單:
① 用BIND自帶的dnskeygen工具生成TSIG密鑰。
# dnskeygen -H 128 -h -n tsig-key.