BIND 版本的查詢與設定

BIND (Berkeley Internet Name Domain) 為最常用來建置 DNS 伺服器的軟體之一,通常其預設安裝許可任何人查詢其版本資訊,為了避免有心人士以版本資訊而找到軟體漏洞,進而方便發動攻擊,因此,強烈建議使用 BIND 的 DNS 伺服器管理者能適當隱藏版本資訊,以降低風險。查詢指令及設定方法(可能因版本不同而異,請視情況參酌使用)詳下說明:

以下例子分別以 nslookup 與 dig 這個兩個指令來查詢 DNS 伺服器 140.114.XX.YY 其所使用的BIND版本,本例中所查到的 BIND 版本為 9.3.2。

nslookup

# nslookup -debug -class=chaos -query=txt version.bind 140.114.XX.YY
Server:         140.114.XX.YY
Address:        140.114.XX.YY#53

------------
    QUESTIONS:
        version.bind, type = TXT, class = CH
    ANSWERS:
    ->  version.bind
        text = "9.3.2"
    AUTHORITY RECORDS:
    ->  version.bind
        nameserver = version.bind.
    ADDITIONAL RECORDS:
------------
version.bind    text = "9.3.2"

dig

# dig @140.114.XX.YY version.bind chaos txt

; <<>> DiG 9.2.4 <<>> @140.114.XX.YY version.bind chaos txt
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 862
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;version.bind.                  CH      TXT

;; ANSWER SECTION:
version.bind.           0       CH      TXT     "9.3.2"

;; AUTHORITY SECTION:
version.bind.           0       CH      NS      version.bind.

;; Query time: 1 msec
;; SERVER: 140.114.XX.YY#53(140.114.XX.YY)
;; WHEN: Wed Sep 23 09:49:52 2009
;; MSG SIZE  rcvd: 62

以下例子為更換 BIND 版本顯示文字改以 “ZZZ” 字串替代之(管理者可自行指定所要的文字),其設定方法為修改 DNS 伺服器 140.114.XX.YY 的 named.conf 設定檔之 version 參數為 “ZZZ” (注意,此處有雙引號“”),如下。

options {
        //(其他參數略...)
        version "ZZZ";
};

修改完上述設定並重新啟動 named 後,再以指令查詢結果,將看到版本資訊已被隱藏,如下結果。

# dig @140.114.XX.YY version.bind chaos txt

; <<>> DiG 9.2.4 <<>> @140.114.XX.YY version.bind chaos txt
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 81
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;version.bind.                  CH      TXT

;; ANSWER SECTION:
version.bind.           0       CH      TXT     "ZZZ"

;; AUTHORITY SECTION:
version.bind.           0       CH      NS      version.bind.

;; Query time: 1 msec
;; SERVER: 140.114.XX.YY#53(140.114.XX.YY)
;; WHEN: Wed Sep 23 10:21:27 2009
;; MSG SIZE  rcvd: 64

以下例子為不回覆 BIND 版本回答,其設定方法為修改 DNS 伺服器 140.114.XX.YY 的 named.conf 設定檔之 version 參數為 none,(注意,此處沒有雙引號“”),如下。

options {
        //(其他參數略...)
        version none;
};

修改完上述設定並重新啟動 named 後,再以指令查詢結果,將看到不回覆版本資訊,如下結果。

# dig @140.114.XX.YY version.bind chaos txt

; <<>> DiG 9.3.4-P1 <<>> @140.114.XX.YY version.bind chaos txt
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 343
;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;version.bind.                  CH      TXT

;; AUTHORITY SECTION:
version.bind.           86400   CH      SOA     version.bind. 
hostmaster.version.bind. 0 28800 7200 604800 86400

;; Query time: 0 msec
;; SERVER: 140.114.XX.YY#53(140.114.XX.YY)
;; WHEN: Wed Sep 23 10:57:27 2009
;; MSG SIZE  rcvd: 77