歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> Unix教程 >> UNIX下DNS服務器之管理維護篇

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

日期:2017/2/27 17:42:51   编辑:Unix教程

  前面幾篇文章介紹了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.
Copyright © Linux教程網 All Rights Reserved