天天看點

UNIX下DNS伺服器之管理維護篇

【内容導航】

第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伺服器正常安全穩定的運作。

繼續閱讀