【内容導航】
第1頁:UNIX系統DNS管理維護
第2頁:UNIX的DNS測試與調試工具
第3頁:DNS日常的安全管理維護
前面幾篇文章介紹了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 <user_name>和-g <group_name>:定義域名伺服器運作時所使用的UID和GID。 這用于丢棄啟動時所需要的root特權。
-t <directory>:指定當伺服器程序處理完指令行參數後所要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> };
address_match_list是允許進行域名查詢的主機IP清單,如"202.102.24.35; 61.132.57/24;"。
要限制對DNS伺服器進行域名遞歸查詢的主機,在options(或特定的zone區域)節中增加:
allow-recursion { <address_match_list> };
address_match_list是允許進行域名遞歸查詢的主機IP清單,如 "202.102.24.35; 61.132.57/24;"。
l 要限制對DNS伺服器進行區域記錄傳輸的主機,在options(或特定的zone區域)節中增加:
allow-transfer { <address_match_list> };
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.
則會生成兩個檔案,将它們放到本地域名伺服器的配置檔案中,記住要重新開機named守護程序。 然後将這兩個密鑰檔案複制到用戶端系統(或輔助域名伺服器),例如為/etc/tsig目錄。最後運作如下指令即可:
nsupdate -k /etc/tsig:tsig-key.
② 如果需要對區域記錄傳輸(自動或手工)進行TSIG簽名,則有兩種方法:
第一種方法:用dnskeygen生成TSIG密鑰,方法同上。
第二種方法:主域名伺服器配置檔案的内容(節選)如下:
// 定義認證的方法和共享密鑰
key master-slave {
algorithm hmac-md5;
secret "mZiMNOUYQPMNwsDzrX2ENw==";
};
// 定義輔助域名伺服器的一些特性
server 61.132.62.137 {
transfer-format many-answers;
keys { master-slave; };
};
// 區域記錄定義
zone "ghq.js.com"
type master;
file ghq.js.com
allow-transfer { 61.132.62.137; };
};
總之,我們在對BIND進行安全增強配置的基礎上,仍然需要密切關注最新的安全公告、安全更新檔和安全技術,要經常向有關的安全專家請教,再輔以必要的安全産品和安全服務,才能更充分地保護好企業的網絡,抵禦各種惡意攻擊,確定UNIX系統環境下DNS伺服器正常安全穩定的運作。