LPI Linux 認證/DNS 伺服器安全
(LPIC-2 版本 4.5)
權重 3
描述: 候選人應該能夠配置 DNS 伺服器以非 root 使用者身份執行並在 chroot 監獄中執行。此目標包括 DNS 伺服器之間的資料安全交換。
關鍵知識領域
- BIND 9 配置檔案
- 配置 BIND 在 chroot 監獄中執行
- 使用 forwarders 語句分割 BIND 配置
- 配置和使用事務簽名 (TSIG)
- 瞭解 DNSSEC 和基本工具
- 瞭解 DANE 和相關記錄
術語和實用程式
/etc/named.conf/etc/passwd- DNSSEC
dnssec-keygendnssec-signzone
首先,檢查安全郵件列表和網站以獲取 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:全域性(在“選項”語句中),適用於所有區域每個區域在從屬伺服器上,停用區域傳輸!使用“allow-transfer { none; };”
不要以 root 身份執行 BIND!從 8.1.2 開始,可以選擇更改 BIND 執行的使用者 (-u) 和組 (-g)。使用非特權使用者(例如,建立一個沒有 shell 訪問許可權的新使用者)。確保您的區域檔案具有正確的許可權(named.conf 在 BIND 仍在 root 許可權下時讀取,因此不要更改此檔案的許可權)
此外,在 chroot 監獄中執行 bind。從 8.1.2 開始,有一個選項 -t 用於指定名稱伺服器 chroot()到的目錄。確保 BIND 需要的所有檔案(例如日誌檔案等)都在 root-jail 下如果您計劃將 ndc 與 chroot 的 BIND 一起使用,請不要忘記將新的 UNIX 套接字路徑名傳遞給 ndc!
以下是如何在 Debian 中設定 chrooted bind9 環境的一點說明。由於 bind9 中的配置非常相似,因此相同的過程適用於 bind8 以建立 chrooted 環境。
- 停止當前執行的 bind。
/etc/init.d/bind9 stop
- 為了將 bind chroot 到監獄中,我們需要在 /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
- 更改 chrooted 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 中有錯誤訊息,請記住這些訊息是從 chrooted 域內部建立的,因此關於 /var/run/bind/run/named.pid 的許可權問題意味著它實際上是關於 /var/lib/named/var/run/bind/run/named.pid 的問題
關鍵術語、檔案和實用程式:SysV 初始化檔案 /etc/named.conf /etc/passwd