04 Feb 2010 @ 10:44 AM 

转: http://www.weithenn.org/cgi-bin/wiki.pl?Bind9-%E6%8F%90%E4%BE%9B_Domain_Name_%E8%88%87_IP_%E5%B0%8D%E6%87%89%E7%9A%84%E6%9C%8D%E5%8B%99

前言

DNS,Domain Name Service 主要目地為解決 Domain Name 與 IP Address 之間相互的對應問題,在網路世界間中的溝通其實就是使用 IP Address 來溝通 (就像是人類使用的身份證),但一連串的數字這樣對人類來說太過於麻煩,因此便出現 Domain Name Service 服務來將 IP Address 轉換成人類可方便閱讀的 Domain Name,簡單來說就是例如: 您輸入的 Yahoo 網址 http://tw.yahoo.com 轉成 IP Address 以便連結到 Yahoo 的網頁伺服器,關於網域名稱服務可參考站內文章 DNS 伺服器的原理與運作流程

FreeBSD 5.3-RELEASE 起內建 Bind9 不但安全性相對提高,並也把 Chroot 功能給加了進來,比較不習慣的可能就是設定檔的路徑

 /etc/namedb/               //原本設定檔實際路徑 (系統自動幫您連結至 Chroot 功能新路徑 /var 下)
 /var/named/etc/namedb/     //Bind9 設定檔的實際路徑

實作環境

  • FreeBSD 6.x-RELEASE
    • FreeBSD 6.1、6.2-RELEASE
  • FreeBSD 5.x-RELEASE
    • FreeBSD 5.3、5.4-RELEASE
  • BIND 9.3.x
    • BIND 9.3.0、9.3.3

安裝及設定

步驟1.本機反解範例檔案 (localhost.rev)

執行下列指令產生本機反解範例檔案 localhost.rev,產生的範例檔案 (localhost.rev 及 localhost-v6.rev) 將產生於 /var/named/etc/namedb/master 目錄下。

 #cd /var/named/etc/namedb/                          //切換路徑
 #sh make-localhost                                  //產生範例檔

步驟2.修改 DNS 設定檔 (named.conf)

修改 DNS 設定檔 named.conf

 #vi /var/named/etc/namedb/named.conf                //編輯 named.conf 內容如下

步驟2-1.安全性設定 – 隱藏 BIND DNS 版本

為何要隱藏您的 BIND DNS 版本呢? 原因在於有心人士可以透過先瞭解您 DNS 主機所運作的 BIND 版本來尋找相關漏洞攻擊程式,因此在 ISC BIND 建議下可透過設定來隱藏 BIND 系統版本。

 options {
        directory       "/etc/namedb";
        pid-file        "/var/run/named/pid";
        dump-file       "/var/dump/named_dump.db";   //將資料庫內容 Dump 出來路徑 (執行rndc dumpdb)
        statistics-file "/var/stats/named.stats";    //統計資訊路徑 (執行rndc stats)
        version         "None of your business";     //當別人查詢您的 BIND 版本時顯示的文字內容

步驟2-2.安全性設定 – 存取控制清單 ACLs

我們可以利用設定存取控制清單 (ACL,Access Control List,) 功能來限制外來對 Domain 的查詢要求並且配合 Allow-Query 參數來限制所有或特定 Zone 的查詢要求。

 acl "dns1.weithenn.org" { 61.60.59.58; };
 acl "dns2.weithenn.org" { 61.60.59.57; };

步驟2-3.限制來源查詢要求 (allow-query)

DNS Server 僅回應列表中 IP Address 的查詢要求,這裡的 allow-query 限制為針對 DNS Server

 options {
          allow-query { 168.95.192.1/32; 168.95.1.1/32; dns1.weithenn.org; dns2.weithenn.org; };
 };

步驟2-4.限制來源查詢要求 (allow-recursion)

允許哪些來源可以使用 DNS Server 進行遞迴查詢動作。簡單說就是透過這台 DNS 來查詢任何資料,包含不是該 DNS 主機負責的 Zone 也代為查詢,您應該不想讓別人用您的 DNS Server 去探查別人的 DNS 主機資訊吧?

 options {
          allow-recursion { 127.0.0.1/32; 61.60.59.58/32; };
 };

步驟2-5.限制特定 Zone 查詢要求 (allow-query)

DNS Server 僅回應列表中 IP Address 的查詢要求,這裡的 allow-query 限制為針對區域 (Zone),當您設定限制所有或特定 Zone 的查詢要求時,其特定 Zone 設定優先權將大為限制所有查詢要求。

 zone "weithenn.org" {
        type master;
        file "master/named.weithenn.for";
        allow-query { dns2.weithenn.org; };        //僅回應這個 IP 的查詢要求
 };

步驟2-6.安全性設定 – Zone Transfer 限制

DNS 架構下常需透過更新 Zone File 動作來更新 DNS Master 及 DNS Slave 間 Zone File 的資料,在信任網域下將 Zone File 資料列出是 OK 的,但若是能由外界進行查詢您 Zone 資料時將會演變為具有危險的行為,想想若有人知道您 Zone File 設定都一清二楚那他即可針對特定主機進行攻擊行為,因此限制您的 Zone Transfer 將更顯重要。比較常被忘記的部份為會記得設定 DNS Master 其 allow-transfer 對象為 DNS Slave,但別忘記了 DNS Slave 必須設定 allow-transfer { “none”; }; 避免您的 Zone File 從 DNS Slave 端被傳送出去這是比較容易被忘記的設定。

 zone "weithenn.org" {
        type master;
        file "master/named.weithenn.for";
        allow-transfer { 61.60.59.57; };           //僅此 IP 能 Zone Transfer 此 Zone File
        allow-transfer { dns2.weithenn.org; };     //可配合 ACLs 使用
 };

步驟2-7.進階性設定 – 代詢伺服器機制

代詢伺服器 (Forwarders) 機制為當您為您的站台指派代詢伺服器後,那麼所有對外的 DNS 查詢都會先送到您所指定的代詢伺服器,讓代詢伺服器利用快取資訊幫您快速回應 DNS 查詢,在台灣我們可設定全台最大的 DNS 快取伺服器其設定內容如下:

 forwarders {
                168.95.192.1;
                168.95.1.1;
 };

設定好 named.conf 後可利用 BIND 9 新增加的指令 named-checkconf 來檢查 named.conf 設定檔語法是否正確,若語法正確則執行完指令後將不會有任何訊息,若語法有錯會顯示錯誤訊息及行數。

 /usr/sbin/named-checkconf                        //檢查 named.conf 語法是否有錯
                           -v                     //顯示 named-checkconf 版本

步驟3.建立 named.weithenn.for 檔案 (Forward)

建議您可複製剛才建立的反解範例檔案 localhost.rev 再進行修改可避免 keyin 錯誤。

  • SOA: 為標準區域中的第一筆記錄,之後括號 () 內為與次要 DNS 溝通的相關資訊,其數值單位為 (秒)
    • Serial: 區域版本編號
    • Refresh: 同步更新時間
    • Retry: 重試同步時間
    • Expire: 同步到期時間
    • Minimum: 最小快取存活時間
 #vi /var/named/etc/namedb/master/named.weithenn.for   //建立正解檔內容如下
 $TTL      86400
 @       IN      SOA     user.weithenn.org. hostmaster.weithenn.org. (
                                      2005042601 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
               IN      NS      gateway
               IN      A       61.60.59.58
 gateway       IN      A       61.60.59.58
 www           IN      A       61.60.59.58
 mail          IN      A       61.60.59.58
 @             IN      MX  10  mail

設定好 named.weithenn.for 後可利用 BIND 9 新增加的指令 named-checkzone 來檢查 named.weithenn.for 設定檔語法是否正確,若語法正確則執行完指令後將不會有任何訊息,若語法有錯會顯示錯誤訊息及行數。

 /usr/sbin/named-checkzone weithenn.org named.weithenn.for         //檢查語法是否有錯
 /usr/sbin/named-checkzone -d weithenn.org named.weithenn.org      //開啟除錯功能
                           -v                                      //顯示 named-checkconf 版本

步驟4.修改服務設定檔 (rc.conf)

修改 /etc/rc.conf 中加入下列的設定以便在系統重新開機時時會啟動 DNS 服務

 #vi /etc/rc.conf                                                  //編輯rc.conf內容如下
 named_enable="YES"                                                //啟動 named 服務
 named_flags="-u bind"                                             //採用 bind 這個帳號來啟動 DNS 服務 (安全性設定)

步驟5.修改本機 DNS 查詢設定檔 (resolv.conf)

修改本機 DNS 查詢設定檔 /etc/resolv.conf 加上 Domain Name 及本機 IP Address,關於此設定檔詳細內容可參考站內文章 resolv.conf

 #vi /etc/resolv.conf                                              //修改設定檔加入如下三行
 domain weithenn.org
 nameserver 127.0.0.1
 nameserver 61.60.59.58

步驟6.啟動 DNS 服務

請鍵入如下指令啟動 DNS 服務

 #/etc/rc.d/named start                                            //啟動 DNS 服務
                  stop                                             //停止 DNS 服務
                  restart                                          //重新啟動 DNS 服務
                  rcvar                                            //顯示應該填入 rc.conf 的內容
                  reload                                           //重新讀取 DNS 設定檔
                  status                                           //顯示目前 DNS 狀態

安全性設定測試

剛才上面的安全性設定完成後,我們測試一下剛才的安全性設定是否生效

測試1.隱藏 BIND DNS 版本

透 過下列指令來測試是否無法查詢到 BIND 版本 (DNS_Server就是您要測那一台的 domain name 或是 IP 也可以),不過隱藏 BIND DNS 版本不代表就絕對安全,只是讓攻擊者無法馬上得知您的 BIND DNS 版本 (好讓他方便找該版本漏洞)。

 #dig -t txt -c chaos VERSION.BIND DNS_Server

若設定正確則可看到回應 VERSION.BIND 就是您填入的內容,若沒設定好當然版本就被順利查詢到啦。

 ;; ANSWER SECTION:
 VERSION.BIND.           0       CH      TXT     "None of your business" //隱藏版本成功
 VERSION.BIND.           0       CH      TXT     "9.3.0"                 //隱藏版本失敗

測試2.Zone Transfer 限制

檢測方式 (以 nslookup 為例 )

 #nslookup                                                               //進入 nslookup 交談模式
 >server weithenn.org                                                    //指定以 weithenn.org 為 NS 做查詢
 Default Server: weithenn.org
 Address: 61.60.59.58
 >ls -d weitenn.org                                                      //檢查是否限制無法查尋 Zone File
 [weithenn.org] ***
  Can't list domain weitenn.org: Unspecified error

參考

[FreeBSD Handbook-BIND9 and FreeBSD]

[FreeBSD 使用手册-BIND9 和 FreeBSD]

[ DNS系統的強化與保護]

[BIND - logging file not found - LinuxQuestions.org]

[サーバ設定手順・パソコントラブル解決・エラー解決・コマンド集・プログラミング/「GOBU」(ゴブ)]

[DNS/BIND Issue: “named: the working directory is not writable” | Slaptijack]

[named: the working directory is not writable - The FreeBSD Forums]

Me FAQ

Q1.logging channel ’security_log’ file ‘/var/log/named/dns-security.log’: file not found?

Error Message:

啟動 DNS 服務後,在系統訊息中看見如下錯誤訊息

 #tail /var/log/messages
 Jul 14 13:21:06 ms1 named[59648]: starting BIND 9.4.3-P2 -u bind -t /var/named -u bind
 Jul 14 13:21:06 ms1 named[59648]: command channel listening on 127.0.0.1#953
 Jul 14 13:21:06 ms1 named[59648]: the working directory is not writable
 Jul 14 13:21:06 ms1 named[59648]: logging channel 'default_log' file '/var/log/named/dns-default.log': file not found
 Jul 14 13:21:06 ms1 named[59648]: logging channel 'lamer_log' file '/var/log/named/dns-lamer.log': file not found
 Jul 14 13:21:06 ms1 named[59648]: logging channel 'query_log' file '/var/log/named/dns-query.log': file not found
 Jul 14 13:21:06 ms1 named[59648]: logging channel 'security_log' file '/var/log/named/dns-security.log': file not found
 Jul 14 13:21:06 ms1 named[59648]: isc_log_open '/var/log/named/dns-default.log' failed: file not found
 Jul 14 13:21:07 ms1 named[59648]: isc_log_open '/var/log/named/dns-query.log' failed: file not found
 Jul 14 13:21:13 ms1 named[59648]: isc_log_open '/var/log/named/dns-lamer.log' failed: file not found

Ans:

原因在於設定檔中指定的路徑並非實體路徑,而是相對於 Chroot 服務的相對路徑,可看到 DNS 執行序為 -t /var/named 配合 named.conf 中指定的相對路徑才是最後 Log 寫入路徑。

 #ps aux |grep named
 bind     59648  0.0  0.5 20724 16852  ??  Ss    1:21PM   0:00.12 /usr/sbin/named -u bind -t /var/named -u bind

而 named.conf 設定檔中內容如下

 logging {
    category lame-servers { lamer_log; };                            //在本DNS上查不到的記錄(遞迴查詢)
    category security{ security_log;};                               //安全記錄
    category queries { query_log;};                                  //查詢記錄
    category default {default_log;};                                 //BIND啟動記錄
    channel default_log {
        file "/var/log/named/dns-default.log" versions 10 size 20m;  //此 Log 寫入路徑為 /var/named/var/log/named/dns-default.log (修改前)
        file "/var/log/dns-default.log" versions 10 size 20m;        //此 Log 寫入路徑為 /var/named/var/log/dns-default.log (修改後)
        severity info;
    };

Q2.the working directory is not writable?

Error Message:

啟動 DNS 服務後,在系統訊息中看見如下錯誤訊息

 #tail /var/log/messages
 Jul 14 15:18:01 ms1 named[64145]: starting BIND 9.4.3-P2 -t /var/named -u bind
 Jul 14 15:18:01 ms1 named[64145]: command channel listening on 127.0.0.1#953
 Jul 14 15:18:01 ms1 named[64145]: the working directory is not writable

Ans:

若您確定在 /var/named 下權限設定正確 (owner bind) 後啟動 DNS 服務仍看到錯誤訊息,請依如下步驟進行修改後再重新啟動 DNS 服務即可解決。

 #vi /etc/mtree/BIND.chroot.dist
 /set type=dir uname=root gname=wheel mode=0755             //預設值
 /set type=dir uname=bind gname=wheel mode=0755             //修改後

前言

DNS,Domain Name Service 主要目地為解決 Domain Name 與 IP Address 之間相互的對應問題,在網路世界間中的溝通其實就是使用 IP Address 來溝通 (就像是人類使用的身份證),但一連串的數字這樣對人類來說太過於麻煩,因此便出現 Domain Name Service 服務來將 IP Address 轉換成人類可方便閱讀的 Domain Name,簡單來說就是例如: 您輸入的 Yahoo 網址 http://tw.yahoo.com 轉成 IP Address 以便連結到 Yahoo 的網頁伺服器,關於網域名稱服務可參考站內文章 DNS 伺服器的原理與運作流程

FreeBSD 5.3-RELEASE 起內建 Bind9 不但安全性相對提高,並也把 Chroot 功能給加了進來,比較不習慣的可能就是設定檔的路徑

/etc/namedb/ //原本設定檔實際路徑 (系統自動幫您連結至 Chroot 功能新路徑 /var 下) /var/named/etc/namedb/ //Bind9 設定檔的實際路徑

實作環境

  • FreeBSD 6.x-RELEASE
    • FreeBSD 6.1、6.2-RELEASE
  • FreeBSD 5.x-RELEASE
    • FreeBSD 5.3、5.4-RELEASE
  • BIND 9.3.x
    • BIND 9.3.0、9.3.3

安裝及設定

步驟1.本機反解範例檔案 (localhost.rev)

執行下列指令產生本機反解範例檔案 localhost.rev,產生的範例檔案 (localhost.rev 及 localhost-v6.rev) 將產生於 /var/named/etc/namedb/master 目錄下。

#cd /var/named/etc/namedb/ //切換路徑 #sh make-localhost //產生範例檔

步驟2.修改 DNS 設定檔 (named.conf)

修改 DNS 設定檔 named.conf

#vi /var/named/etc/namedb/named.conf //編輯 named.conf 內容如下

步驟2-1.安全性設定 – 隱藏 BIND DNS 版本

為何要隱藏您的 BIND DNS 版本呢? 原因在於有心人士可以透過先瞭解您 DNS 主機所運作的 BIND 版本來尋找相關漏洞攻擊程式,因此在 ISC BIND 建議下可透過設定來隱藏 BIND 系統版本。

options { directory “/etc/namedb”; pid-file “/var/run/named/pid”; dump-file “/var/dump/named_dump.db”; //將資料庫內容 Dump 出來路徑 (執行rndc dumpdb) statistics-file “/var/stats/named.stats”; //統計資訊路徑 (執行rndc stats) version “None of your business”; //當別人查詢您的 BIND 版本時顯示的文字內容

步驟2-2.安全性設定 – 存取控制清單 ACLs

我們可以利用設定存取控制清單 (ACL,Access Control List,) 功能來限制外來對 Domain 的查詢要求並且配合 Allow-Query 參數來限制所有或特定 Zone 的查詢要求。

acl “dns1.weithenn.org” { 61.60.59.58; }; acl “dns2.weithenn.org” { 61.60.59.57; };

步驟2-3.限制來源查詢要求 (allow-query)

DNS Server 僅回應列表中 IP Address 的查詢要求,這裡的 allow-query 限制為針對 DNS Server

options { allow-query { 168.95.192.1/32; 168.95.1.1/32; dns1.weithenn.org; dns2.weithenn.org; }; };

步驟2-4.限制來源查詢要求 (allow-recursion)

允許哪些來源可以使用 DNS Server 進行遞迴查詢動作。簡單說就是透過這台 DNS 來查詢任何資料,包含不是該 DNS 主機負責的 Zone 也代為查詢,您應該不想讓別人用您的 DNS Server 去探查別人的 DNS 主機資訊吧?

options { allow-recursion { 127.0.0.1/32; 61.60.59.58/32; }; };

步驟2-5.限制特定 Zone 查詢要求 (allow-query)

DNS Server 僅回應列表中 IP Address 的查詢要求,這裡的 allow-query 限制為針對區域 (Zone),當您設定限制所有或特定 Zone 的查詢要求時,其特定 Zone 設定優先權將大為限制所有查詢要求。

zone “weithenn.org” { type master; file “master/named.weithenn.for”; allow-query { dns2.weithenn.org; }; //僅回應這個 IP 的查詢要求 };

步驟2-6.安全性設定 – Zone Transfer 限制

DNS 架構下常需透過更新 Zone File 動作來更新 DNS Master 及 DNS Slave 間 Zone File 的資料,在信任網域下將 Zone File 資料列出是 OK 的,但若是能由外界進行查詢您 Zone 資料時將會演變為具有危險的行為,想想若有人知道您 Zone File 設定都一清二楚那他即可針對特定主機進行攻擊行為,因此限制您的 Zone Transfer 將更顯重要。比較常被忘記的部份為會記得設定 DNS Master 其 allow-transfer 對象為 DNS Slave,但別忘記了 DNS Slave 必須設定 allow-transfer { “none”; }; 避免您的 Zone File 從 DNS Slave 端被傳送出去這是比較容易被忘記的設定。

zone “weithenn.org” { type master; file “master/named.weithenn.for”; allow-transfer { 61.60.59.57; }; //僅此 IP 能 Zone Transfer 此 Zone File allow-transfer { dns2.weithenn.org; }; //可配合 ACLs 使用 };

步驟2-7.進階性設定 – 代詢伺服器機制

代詢伺服器 (Forwarders) 機制為當您為您的站台指派代詢伺服器後,那麼所有對外的 DNS 查詢都會先送到您所指定的代詢伺服器,讓代詢伺服器利用快取資訊幫您快速回應 DNS 查詢,在台灣我們可設定全台最大的 DNS 快取伺服器其設定內容如下:

forwarders { 168.95.192.1; 168.95.1.1; };

設定好 named.conf 後可利用 BIND 9 新增加的指令 named-checkconf 來檢查 named.conf 設定檔語法是否正確,若語法正確則執行完指令後將不會有任何訊息,若語法有錯會顯示錯誤訊息及行數。

/usr/sbin/named-checkconf //檢查 named.conf 語法是否有錯 -v //顯示 named-checkconf 版本

步驟3.建立 named.weithenn.for 檔案 (Forward)

建議您可複製剛才建立的反解範例檔案 localhost.rev 再進行修改可避免 keyin 錯誤。

  • SOA: 為標準區域中的第一筆記錄,之後括號 () 內為與次要 DNS 溝通的相關資訊,其數值單位為 (秒)
    • Serial: 區域版本編號
    • Refresh: 同步更新時間
    • Retry: 重試同步時間
    • Expire: 同步到期時間
    • Minimum: 最小快取存活時間

#vi /var/named/etc/namedb/master/named.weithenn.for //建立正解檔內容如下 $TTL 86400 @ IN SOA user.weithenn.org. hostmaster.weithenn.org. ( 2005042601 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS gateway IN A 61.60.59.58 gateway IN A 61.60.59.58 www IN A 61.60.59.58 mail IN A 61.60.59.58 @ IN MX 10 mail

設定好 named.weithenn.for 後可利用 BIND 9 新增加的指令 named-checkzone 來檢查 named.weithenn.for 設定檔語法是否正確,若語法正確則執行完指令後將不會有任何訊息,若語法有錯會顯示錯誤訊息及行數。

/usr/sbin/named-checkzone weithenn.org named.weithenn.for //檢查語法是否有錯 /usr/sbin/named-checkzone -d weithenn.org named.weithenn.org //開啟除錯功能 -v //顯示 named-checkconf 版本

步驟4.修改服務設定檔 (rc.conf)

修改 /etc/rc.conf 中加入下列的設定以便在系統重新開機時時會啟動 DNS 服務

#vi /etc/rc.conf //編輯rc.conf內容如下 named_enable=”YES” //啟動 named 服務 named_flags=”-u bind” //採用 bind 這個帳號來啟動 DNS 服務 (安全性設定)

步驟5.修改本機 DNS 查詢設定檔 (resolv.conf)

修改本機 DNS 查詢設定檔 /etc/resolv.conf 加上 Domain Name 及本機 IP Address,關於此設定檔詳細內容可參考站內文章 resolv.conf

#vi /etc/resolv.conf //修改設定檔加入如下三行 domain weithenn.org nameserver 127.0.0.1 nameserver 61.60.59.58

步驟6.啟動 DNS 服務

請鍵入如下指令啟動 DNS 服務

#/etc/rc.d/named start //啟動 DNS 服務 stop //停止 DNS 服務 restart //重新啟動 DNS 服務 rcvar //顯示應該填入 rc.conf 的內容 reload //重新讀取 DNS 設定檔 status //顯示目前 DNS 狀態

安全性設定測試

剛才上面的安全性設定完成後,我們測試一下剛才的安全性設定是否生效

測試1.隱藏 BIND DNS 版本

透 過下列指令來測試是否無法查詢到 BIND 版本 (DNS_Server就是您要測那一台的 domain name 或是 IP 也可以),不過隱藏 BIND DNS 版本不代表就絕對安全,只是讓攻擊者無法馬上得知您的 BIND DNS 版本 (好讓他方便找該版本漏洞)。

#dig -t txt -c chaos VERSION.BIND DNS_Server

若設定正確則可看到回應 VERSION.BIND 就是您填入的內容,若沒設定好當然版本就被順利查詢到啦。

;; ANSWER SECTION: VERSION.BIND. 0 CH TXT “None of your business” //隱藏版本成功 VERSION.BIND. 0 CH TXT “9.3.0″ //隱藏版本失敗

測試2.Zone Transfer 限制

檢測方式 (以 nslookup 為例 )

#nslookup //進入 nslookup 交談模式 >server weithenn.org //指定以 weithenn.org 為 NS 做查詢 Default Server: weithenn.org Address: 61.60.59.58 >ls -d weitenn.org //檢查是否限制無法查尋 Zone File [weithenn.org] *** Can’t list domain weitenn.org: Unspecified error

參考

[FreeBSD Handbook-BIND9 and FreeBSD]

[FreeBSD 使用手册-BIND9 和 FreeBSD]

[ DNS系統的強化與保護]

[BIND - logging file not found - LinuxQuestions.org]

[サーバ設定手順・パソコントラブル解決・エラー解決・コマンド集・プログラミング/「GOBU」(ゴブ)]

[DNS/BIND Issue: “named: the working directory is not writable” | Slaptijack]

[named: the working directory is not writable - The FreeBSD Forums]

Me FAQ

Q1.logging channel ’security_log’ file ‘/var/log/named/dns-security.log’: file not found?

Error Message:

啟動 DNS 服務後,在系統訊息中看見如下錯誤訊息

#tail /var/log/messages Jul 14 13:21:06 ms1 named[59648]: starting BIND 9.4.3-P2 -u bind -t /var/named -u bind Jul 14 13:21:06 ms1 named[59648]: command channel listening on 127.0.0.1#953 Jul 14 13:21:06 ms1 named[59648]: the working directory is not writable Jul 14 13:21:06 ms1 named[59648]: logging channel ‘default_log’ file ‘/var/log/named/dns-default.log’: file not found Jul 14 13:21:06 ms1 named[59648]: logging channel ‘lamer_log’ file ‘/var/log/named/dns-lamer.log’: file not found Jul 14 13:21:06 ms1 named[59648]: logging channel ‘query_log’ file ‘/var/log/named/dns-query.log’: file not found Jul 14 13:21:06 ms1 named[59648]: logging channel ’security_log’ file ‘/var/log/named/dns-security.log’: file not found Jul 14 13:21:06 ms1 named[59648]: isc_log_open ‘/var/log/named/dns-default.log’ failed: file not found Jul 14 13:21:07 ms1 named[59648]: isc_log_open ‘/var/log/named/dns-query.log’ failed: file not found Jul 14 13:21:13 ms1 named[59648]: isc_log_open ‘/var/log/named/dns-lamer.log’ failed: file not found

Ans:

原因在於設定檔中指定的路徑並非實體路徑,而是相對於 Chroot 服務的相對路徑,可看到 DNS 執行序為 -t /var/named 配合 named.conf 中指定的相對路徑才是最後 Log 寫入路徑。

#ps aux |grep named bind 59648 0.0 0.5 20724 16852 ?? Ss 1:21PM 0:00.12 /usr/sbin/named -u bind -t /var/named -u bind

而 named.conf 設定檔中內容如下

logging { category lame-servers { lamer_log; }; //在本DNS上查不到的記錄(遞迴查詢) category security{ security_log;}; //安全記錄 category queries { query_log;}; //查詢記錄 category default {default_log;}; //BIND啟動記錄 channel default_log { file “/var/log/named/dns-default.log” versions 10 size 20m; //此 Log 寫入路徑為 /var/named/var/log/named/dns-default.log (修改前) file “/var/log/dns-default.log” versions 10 size 20m; //此 Log 寫入路徑為 /var/named/var/log/dns-default.log (修改後) severity info; };

Q2.the working directory is not writable?

Error Message:

啟動 DNS 服務後,在系統訊息中看見如下錯誤訊息

#tail /var/log/messages Jul 14 15:18:01 ms1 named[64145]: starting BIND 9.4.3-P2 -t /var/named -u bind Jul 14 15:18:01 ms1 named[64145]: command channel listening on 127.0.0.1#953 Jul 14 15:18:01 ms1 named[64145]: the working directory is not writable

Ans:

若您確定在 /var/named 下權限設定正確 (owner bind) 後啟動 DNS 服務仍看到錯誤訊息,請依如下步驟進行修改後再重新啟動 DNS 服務即可解決。

#vi /etc/mtree/BIND.chroot.dist /set type=dir uname=root gname=wheel mode=0755 //預設值 /set type=dir uname=bind gname=wheel mode=0755 //修改後 #/etc/rc.d/named restart //修改完成後重新啟動 DNS 服務


 #/etc/rc.d/named restart                                   //修改完成後重新啟動 DNS 服務

Posted By: lidong
Last Edit: 04 Feb 2010 @ 10:45 AM

EmailPermalink
Tags
Categories: freebsd


 

Responses to this post » (None)

 
Post a Comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


 Last 50 Posts
 Back
 Back
Change Theme...
  • Users » 76
  • Posts/Pages » 55
  • Comments » 15
Change Theme...
  • VoidVoid « Default
  • LifeLife
  • EarthEarth
  • WindWind
  • WaterWater
  • FireFire
  • LightLight

About



    No Child Pages.

Contact Me



    No Child Pages.