跳轉到內容

LPI Linux 認證/LPIC2 考試 202/DNS

來自華夏公益教科書
 
LPI logo

章節概述

[編輯 | 編輯原始碼]
  • BIND 8 基本配置
  • 建立和維護 DNS 區域
  • 保護 DNS 伺服器

BIND 8 基本配置

[編輯 | 編輯原始碼]

設定僅快取名稱伺服器

[編輯 | 編輯原始碼]

為了加速 DNS 查詢的繁瑣過程,DNS 伺服器通常會快取來自其他 DNS 伺服器的答案 - 甚至包括負面查詢(即權威伺服器的答案「名稱不存在」也會被您的本地 DNS 快取)

將 BIND 配置為僅快取名稱伺服器只涉及設定一個「.」區域,即只告訴它根名稱伺服器,而不指定任何區域,如下所示:

zone « . » in {
type hint;
file « named.cache »;
};

名為 named.cache 的檔案可以透過使用 dig @a.root-servers.net 生成

BIND 中的日誌記錄由兩個主要概念控制:通道和類別。通道指定記錄的資料去向:傳送到 syslog、傳送到檔案等等。類別指定記錄的資料型別。

通道允許您按優先順序過濾訊息,例如 syslog 的優先順序。它們本質上是一樣的,但 BIND 可用兩個更多通道:debug 和 dynamic,它們會影響除錯級別日誌記錄。Debug 會設定一個除錯級別,該級別會在第一次透過 ndc 發出 trace 命令後生效;dynamic 會在每次透過 ndc 發出 trace 命令後遞增或遞減除錯級別。

日誌記錄配置示例

logging {
channel my_syslog {
syslog daemon;
severity info;
};
channel my_file {
file « log.msgs »;
severity dynamic;
};
category statistics { my_syslog; my_file; };
category queries { my_file; };
};

要啟用日誌記錄,在啟動 bind 後,執行以下命令:

ndc trace

關鍵詞、檔案和工具:/etc/named.conf /usr/sbin/ndc /usr/sbin/named-bootconf Kill

=== 練習 ===.

建立和維護 DNS 區域

[編輯 | 編輯原始碼]

DNS 區域檔案主要由資源記錄 (RR) 組成。資源記錄必須從一行的第一列開始。它們出現的順序並不重要,但大多數人傾向於遵循 DNS RFC 中的順序。SOA(授權起始):「指示此區域的授權方」 NS(名稱伺服器):「列出此區域的名稱伺服器」其他記錄:

A:「名稱到地址的對映」 PTR:「地址到名稱的對映」 CNAME(規範名稱):「別名」不要忘記為 127.0.0 建立區域!建立和維護 DNS 區域 通常的區域檔案格式:

$TTL <ttl value>
<domain name>. IN SOA <nameserver name>. <user.email>. (
<serial>;  serial number
<refresh>; refresh value
<retry>;  retry value
<expire>;  expire value
<n-ttl>;  negative caching TTL of 1 day
<domain name>.  IN  NS  <authoritative NS name>.
<domain name>.  IN  NS  <authoritative NS name>.
...
<hostname>.  IN  A  <IP address>
<hostname>.  IN  A  <IP address>
...

建立和維護 DNS 區域 對於反向對映:「$TTL <ttl value> <reverse net addr>.in-addr.arpa. IN SOA <NS name>. <user.email>. ( <serial>; 序列號 <refresh>; 重新整理值 <retry>; 重試值 <expire>; 過期值 <n-ttl>; 負快取 TTL 為 1 天 <rev net addr>.in-addr.arpa. IN NS <authoritative NS name>. <rev net addr>.in-addr.arpa. IN NS <authoritative NS name>. ... <rev IP addr>.in-addr.arpa. IN PTR <fqdn>. <rev IP addr>.in-addr.arpa. IN PTR <fqdn>. ...

關鍵詞、檔案和工具:/var/named 內容 區域檔案語法 資源記錄格式 Dig Nslookup Host

=== 練習 ===.

保護 DNS 伺服器

[編輯 | 編輯原始碼]

首先,檢視安全郵件列表和網站以獲取 BIND 的新版本。特別是,8.2.3 之前的版本容易受到已知攻擊的攻擊。

隱藏您的版本號,使其不會被外部查詢識別 - 這可能被用來針對您進行特殊攻擊。從 BIND 8.2 開始,您可以在 named.conf 中使用

options {
version « None of your business »;
};

您還可以限制查詢:全域性地

options {
allow-query { address-match-list; };
};

或按區域(優先於全域性 ACL):

zone « test.com » {
type slave;
file « db.test »;
allow-query { 192.168.0.0/24; };
};

更重要的是,確保只有真正的從屬 DNS 才能從您的主伺服器傳輸您的區域。使用關鍵詞 allow-transfer:全域性(在「options」語句中),適用於所有區域 按區域 在從屬伺服器上,停用區域傳輸!使用「allow-transfer { none; };」

不要以 root 使用者身份執行 BIND!從 8.1.2 開始,有選項可以更改 BIND 執行的使用者 (-u) 和組 (-g)。使用非特權使用者(例如建立一個沒有 shell 訪問許可權的新使用者)。確保您的區域檔案具有正確的許可權(named.conf 在 BIND 仍然處於 root 許可權下時被讀取,因此不要更改此檔案的許可權)。

此外,在 chroot 監獄中執行 bind。從 8.1.2 開始,有選項 -t 用於指定名稱伺服器 chroot() 到哪個目錄。確保 BIND 需要的所有檔案(例如日誌檔案等)都在根監獄中。如果您計劃將 chroot 的 BIND 與 ndc 一起使用,不要忘記將新路徑名傳遞給 ndc 的 UNIX 套接字!

以下是關於如何在 Debian 中設定 chroot 的 bind9 環境的一些內容。由於 bind9 的配置非常類似,因此相同的步驟適用於 bind8 以建立 chroot 環境。

  • 停止當前執行的 bind。
/etc/init.d/bind9 stop
  • 為了在監獄中 chroot bind,我們需要在 /etc/default/bind9 中指定什麼環境
OPTIONS="-u bind -t /var/lib/named"
  • 我們仍然希望在 /var/log/syslog 中進行日誌記錄,因此我們需要更改 /etc/default/syslogd,使其開啟一個額外的套接字,讓 chroot 的 bind 可以透過該套接字記錄到 /var/log/syslog 中。
SYSLOGD="-a /var/lib/named/dev/log"
  • 為環境執行幾個 mkdir 命令
mkdir /var/lib/named
mkdir -p /var/lib/named/var/run/bind/run
mkdir /var/lib/named/etc
mkdir /var/lib/named/dev
mkdir /var/lib/named/var/cache 
  • 移動我們現有的配置
mv /etc/bind /var/lib/named/etc/bind
  • 連結它
ln -s /var/lib/named/etc/bind /etc/bind
  • 更改 chroot 的 var 和 etc 的所有權
chown -R bind:bind /var/lib/named/var/* 
chown -R bind:bind /var/lib/named/etc/bind
  • 建立一些裝置並設定許可權
mknod /var/lib/named/dev/null c 1 3
mknod /var/lib/named/dev/random c 1 8
chown 666 /var/lib/named/dev/random /var/lib/named/dev/null
  • 重啟 syslogd 並啟動 bind
/etc/init.d/sysklogd restart
/etc/init.d/bind9 start

如果 bind 沒有啟動,並且 syslog 中存在錯誤訊息,請記住這些訊息是在chroot 域中建立的,因此有關 /var/run/bind/run/named.pid 的許可權問題實際上意味著它是關於 /var/lib/named/var/run/bind/run/named.pid 的問題。


關鍵詞、檔案和工具:SysV 初始化檔案 /etc/named.conf /etc/passwd

華夏公益教科書