借助于基于共享密钥(也称为 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 中以实现 host1 和 host2 之间的安全通讯:
key host1-host2. {
algorithm hmac-md5;
secret ";ejIkuCyyGJwwuN3xAteKgg==;
};![]() | /etc/named.conf 的文件权限 |
|---|---|
确保正确限制了 include "filename" 用带有密钥的文件的绝对路径替换 | |
要使服务器 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 对此主题进行了详细介绍。