跳轉到內容

LPI Linux 認證/DNS 伺服器安全

來自 Wikibooks,開放世界中的開放書籍

詳細目標 (207.3)

[編輯 | 編輯原始碼]

(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-keygen
  • dnssec-signzone

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:全域性(在“選項”語句中),適用於所有區域每個區域在從屬伺服器上,停用區域傳輸!使用“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


華夏公益教科書