20.7. 安全交易

安全交易可以透過採用共用秘密金鑰 (也稱為 TSIG 金鑰) 的交易簽名 (TSIG) 來完成。本節說明如何產生及使用這類金鑰。

不同伺服器之間的通訊以及動態更新區域資料而言,是需要安全交易的。讓存取控制依靠金鑰比單純依靠 IP 位址要來得安全許多。

使用以下指令產生 TSIG 金鑰 (有關詳細資訊,請參閱 man dnssec-keygen):

   dnssec-keygen -a hmac-md5 -b 128 -n HOST host1-host2
  

這樣會建立兩個檔案,名稱類似如下:

Khost1-host2.+157+34265.private Khost1-host2.+157+34265.key
  

金鑰本身 (如 ejIkuCyyGJwwuN3xAteKgg== 的字串) 在兩個檔案中都可找到。如果要用於交易,第二個檔案 (Khost1-host2.+157+34265.key) 必須傳輸到遠端主機,最好是以安全的方式傳輸 (例如,使用 scp)。在遠端伺服器上,金鑰必須包含於檔案 /etc/named.conf 內,才能開啟 host1host2 之間的安全通訊:

key host1-host2. {
 algorithm hmac-md5;
 secret ";ejIkuCyyGJwwuN3xAteKgg==;
};
[Warning]/etc/named.conf 的檔案權限

確定 /etc/named.conf 的權限受到適當的限制。此檔案的預設值是 0640,擁有者為 root 及群組 named。另一種方法是,將金鑰移到具有特殊限定權限的額外檔案,是後續從 /etc/named.conf 包含進來的。

若要讓伺服器 host1 能夠使用 host2 (在此範例中位址為 192.168.2.3) 的金鑰,伺服器的 /etc/named.conf 必須包含以下規則:

server 192.168.2.3 {
  keys { host1-host2. ;};
};

類比項目必須包含於 host2 的組態檔中。

針對 IP 位址和位址範圍定義的任何 ACL (存取控制清單,不與檔案系統 ACL 混淆) 來新增 TSIG 金鑰,以啟用異動保全性。對應項目應該看起來如下:

allow-update { key host1-host2. ;};

此主題在 update-policy 下的 BIND Administrator Reference Manual 中有詳細討論。