Chinaunix首页 | 论坛 | 博客
  • 博客访问: 87783
  • 博文数量: 20
  • 博客积分: 1926
  • 博客等级: 上尉
  • 技术积分: 210
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-16 17:21
文章分类
文章存档

2011年(1)

2009年(19)

分类: LINUX

2009-10-17 15:22:34

主辅DNS服务器基于TSIG密钥的区域传输

Author: Jaylin Zhou

Date: 10/16/2009

 

DNS服务器IP192.168.1.11

辅助DNS服务器IP192.168.1.9

 

如果主辅DNS服务器之间不做安全验证措施,很容易被其他主机和黑客从中间获得DNS服务器的记录。主配置文件里提供了allow-transfer的选项,可以将它的值设置为辅助DNS服务器的IP。这样虽然能做到一定程度的安全保护,但是依旧是明文传输,假设一个黑客将自己伪装为192.168.1.9,还是可以获得主DNS服务器的记录。因此我们要用一种加密的方式来实现区域传输。这种加密方式叫做TSIG,一种对称加密方式。

 

DNS服务器配置

执行下面命令生成一个密钥:

# dnssec-keygen -a hmac-md5 -b 128 -n host server-client

-a 指定加密方式。

-b 密码长度。

-n 指定名称为server-client,类型为host

 

命令执行成功之后会在当前目录下生成两个文件:

Kserver-client.+157+39898.key

Kserver-client.+157+39898.private

 

/var/named/chroot/var/named/目录下创建一个文件,作为传输时使用的key文件。

# touch jaylin.key; chown root.named jaylin.key

# vi jaylin.key

key server-client. {

        algorithm "hmac-md5";

        secret "dahP9T2T/NJaEYq3rykCRw==";

};

其中secret的内容为密钥文件中的KEY值,后面会有两个等号。

注意server-client后面有一个“.”。

 

修改/etc/named.caching-nameserver.conf文件,在对应的view里加入如下的选项:

allow-transfer { key server-client; };

include "/var/named/jaylin.key";

 

将主DNSjaylin.key文件传输到辅DNS服务器的/var/named/chroot/var/named/目录下。

#scp /var/named/chroot/var/named/jaylin.key 192.168.1.9:/var/named/chroot/var/named

 

辅助DNS服务器的配置

修改/etc/named.caching-nameserver.conf文件,在view里加入下面的参数,

include "/var/named/jaylin.key";

 

修改/etc/named.rfc1912.zones文件,在最上面添加下面的代码:

server 192.168.1.11 {

        keys { server-client.; };

};

注意server-client后面有一个“.”。

 

在辅助DNS服务器上测试

# dig -y server-client.:dahP9T2T/NJaEYq3rykCRw== @192.168.1.11 jaylin.com axfr

;; Couldn't verify signature: clocks are unsynchronized

; <<>> DiG 9.3.4-P1 <<>> -y server-client. @192.168.1.11 jaylin.com axfr

; (1 server found)

;; global options:  printcmd

server-client.          0       ANY     TSIG    hmac-md5.sig-alg.reg.int. 1255656298 300 16 DATWIxJ7uMoFmMNkL3nGnw== 16352 BADTIME 6 AABK190q

; Transfer failed.

错误提示“Couldn't verify signature: clocks are unsynchronized”,因为主辅之间的时间相差太大了。

 

DNS服务器

# date

Fri Oct 16 10:43:55 CST 2009

辅助DNS服务器

# date

Fri Oct 16 09:28:11 CST 2009

 

将辅助DNS服务器的时间改为和主DNS服务器一致或相近:

# date -s "10:43:60" 

 

再次测试

# dig -y server-client.:dahP9T2T/NJaEYq3rykCRw== @192.168.1.11 jaylin.com axfr

; <<>> DiG 9.3.4-P1 <<>> -y server-client. @192.168.1.11 jaylin.com axfr

; (1 server found)

;; global options:  printcmd

jaylin.com.             86400   IN      SOA     server.jaylin.com. root\@jaylin.com. 42 10800 900 604800 86400

jaylin.com.             86400   IN      NS      server.jaylin.com.

client.jaylin.com.      86400   IN      A       192.168.1.9

server.jaylin.com.      86400   IN      A       192.168.1.11

jaylin.com.             86400   IN      SOA     server.jaylin.com. root\@jaylin.com. 42 10800 900 604800 86400

server-client.          0       ANY     TSIG    hmac-md5.sig-alg.reg.int. 1255664540 300 16 Jm1BVMlLnI2UjtYzHEBz8w== 46958 NOERROR 0 

;; Query time: 53 msec

;; SERVER: 192.168.1.11#53(192.168.1.11)

;; WHEN: Fri Oct 16 11:42:01 2009

;; XFR size: 5 records (messages 1)

 

阅读(2068) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~