LPI Linux 認證/LPIC2 考試 202/DNS
|
|
- BIND 8 基本配置
- 建立和維護 DNS 區域
- 保護 DNS 伺服器
為了加速 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 區域檔案主要由資源記錄 (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
=== 練習 ===.
首先,檢視安全郵件列表和網站以獲取 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