02.07.2013 Views

BIND 9

BIND 9

BIND 9

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

CHAPTER 4. 高级DNS特征 4.5. TSIG<br />

4.5.1.2 手工生成<br />

共享密钥只是一个简单的以base-64编码的随机二进制位序列。大多数ASCII 字符串都是有效的base-64字<br />

符串(假设其长度是4的倍数,并且只含有有效字符),所以共享密钥可以手工生成。<br />

同样,一个字符串也可以通过使用mmencode或类似的程序来生成base-64编码的数据。<br />

4.5.2 拷贝共享密钥到两台主机<br />

这已经超出了DNS的范围。应该使用一个安全的传输机制。可以通过安全的FTP,ssh,电话等等。<br />

4.5.3 告知服务器密钥的存在<br />

设想host1和host 2为两台服务器。将下列语句添加到各自的named.conf文件中:<br />

key host1-host2. {<br />

algorithm hmac-sha256;<br />

secret "La/E5CjG9O+os1jq0a2jdA==";<br />

};<br />

密钥是由以上方式所生成的。因为这是一个秘密,推荐将named.conf设置成并非所有人可读的,或<br />

者使用key指令将一个并非所有人可读的文件包含进named.conf中。<br />

在这一点,密钥是可识别的。这意味着如果服务器收到一个由这个密钥所签名的消息,它可以验证这<br />

个签名。如果成功验证签名,响应就会使用同样的密钥签名。<br />

4.5.4 指示服务器使用密钥<br />

由于密钥仅仅在两台主机之间共享,服务器必须被告知去使用它。下列指令被添加到host1的named.<br />

conf文件中,假定host2的IP地址是10.1.2.3:<br />

server 10.1.2.3 {<br />

keys { host1-host2. ;};<br />

};<br />

可以提供多个密钥,但只能使用第一个。这条指令不包含任何秘密,所以它可以放在一个所有人可读<br />

的文件中。<br />

如果host1发出的消息是一个到那个地址的请求,这个消息将被指定的密钥签名。host1将会期望对这<br />

个被签名的消息的回应都被同一个密钥签名。<br />

一个类似的语句必须出现在host2的配置文件(使用host1的IP地址)中,供host2 将发向host1的消息进<br />

行签名。<br />

4.5.5 基于TSIG密钥的访问控制<br />

<strong>BIND</strong>允许在ACL定义和allow-{ query | transfer | update }指令中指定IP地址和网络范围。这个也被扩<br />

展到允许TSIG密钥。上述密钥被表示成key host1-host2.。<br />

一个allow-update指令的例子是:<br />

allow-update { key host1-host2. ;};<br />

26

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!