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. ;};

BIND 管理员参考手册update-policy 对此主题进行了详细介绍。