BIND zone tranfer 的管制設定

Zone transfer 為 slave DNS 伺服器向其 master 取得 zone 註冊備份的管道,BIND (Berkeley Internet Name Domain) 為最常用來建置 DNS 伺服器的軟體之一,為了避免管制設定不夠嚴密,讓有心人士輕易取得單位內完整的 DN 註冊清單,進而方便發動掃描式攻擊,因此,強烈建議 DNS 管理者限定伺服器僅許可其 slave 能執行 zone transfer,以降低風險。查詢指令及設定方法(可能因版本不同而異,請視情況參酌使用)詳下說明:

以下例子分別以 dig 這個指令來取得 DNS 伺服器 140.114.XX.YY 其 zone xxxx.nthu.edu.tw 下的所有註冊資料。

dig

axfr (full zone transfer)

# dig @140.114.XX.YY xxxx.nthu.edu.tw -t axfr
; (1 server found)
;; global options:  printcmd
xxxx.nthu.edu.tw.       180     IN      A       140.114.XX.1
pc2.xxxx.nthu.edu.tw.   180     IN      A       140.114.XX.2
pc3.xxxx.nthu.edu.tw.   180     IN      A       140.114.XX.3
...
xxxx.nthu.edu.tw.       180     IN      SOA     xxxx.nthu.edu.tw.
dnsmaster.xxxx.nthu.edu.tw. 2009092801 10800 3600 604800 3600
;; Query time: 6 msec
;; SERVER: 140.114.XX.YY#53(140.114.XX.YY)
;; WHEN: Wed Nov  4 09:37:05 2009
;; XFR size: 261 records (messages 1)

ixfr (incremental zone transfer)

# dig @140.114.XX.YY xxxx.nthu.edu.tw -t ixfr=2009092801
; (1 server found)
;; global options:  printcmd
xxxx.nthu.edu.tw.       180     IN      SOA     xxxx.nthu.edu.tw. 
dnsmaster.xxxx.nthu.edu.tw. 2009092801 10800 3600 604800 3600
;; Query time: 1 msec
;; SERVER: 140.114.XX.YY#53(140.114.XX.YY)
;; WHEN: Wed Nov  4 09:47:04 2009
;; XFR size: 1 records (messages 1)

以下例子為設定 DNS 伺服器 140.114.XX.YY 的 named.conf 設定檔,讓其 slave 140.114.XX.ZZ 可執行 zone transfer。

  • 設定 allow-transfer 參數,僅許可 IP 為 140.114.XX.ZZ 或 127.0.0.1 可執行 zone transfer 工作。
  • notify yes 表當 master 註冊資料更新及 named reload 後,將主動通知 slave 更新。
options {
   //(其他參數略...)
   allow-transfer { 140.114.XX.ZZ; 127.0.0.1; };

   notify yes;
};

修改完上述設定並重新啟動 named 後,再以指令測試,若為許可 IP 將可取得資料;若非許可的 IP 將看到以下結果。

# dig @140.114.XX.YY xxxx.nthu.edu.tw axfr
; (1 server found)
;; global options:  printcmd
; Transfer failed.