分类: LINUX
2009-11-19 13:08:53
基于TSIG加密的区域传输
在应用DNS服务器时,一个域常常需要不止一台服务器,自然会存在不同DNS服务之间数据的同步问题。DNS的master/slave架构很好的解决了数据同步问题,但是新的问题又来了。通常情况下,DNS之间的区域传输(zone transfer)是通过明文传送,这样以来会很不安全。Bind-9中通过TSIG(Transaction SIGnature)机制来保证数据的安全传输。下面是我做的基于TSIG加密的区域传输。
一、主DNS配置:
环境:
OS : Red Hat Enterprise Linux 5 update 4
Network: 192.168.1.1/24
domain: example.com
nameserver: 192.168.1.1
1。安装DNS服务的rpm包,
[root@server1 ~]# yum install bind [root@server1 ~]# yum install bind-chroot [root@server1 ~]# yum install caching-nameserver |
2。生成TSIG密钥文件
[root@server1 ~]# dnssec-keygen -a hmac-md5 -b 128 -n host server1-server2 |
*参数说明:-a hmac-md5 选择加密算法;
-b 128 指定密码的长度(bits),最长为128;
-n host 指定key的所有者类型;
server1-server2 为key的名字
[root@server1 etc]# ll [root@server1 etc]# cat Kserver1-server2.+157+08339.key |
3。将Kserver1-server2.+157+08339.private中的密码拷贝到一个文件中,命名为ts.key,格式按照/usr/share/doc/bind-9.3.6/arm/Bv9ARM.ch04.html中的规定写。
[root@server1 named]# cat ts.key |
4。编辑named.caching-nameserver.conf文件,
[root@server1 ~]# vi /var/named/chroot/etc/named.caching-nameserver.conf |
****
辅助DNS配置:
环境:
OS : Red Hat Enterprise Linux 5 update 4
Network: 192.168.1.2/24
domain: example.com
nameserver: 192.168.1.2
1。将主DNS服务器上生成的ts.key文件拷贝到本机的相应位置,
[root@server2 ~]# scp 192.168.1.1:/var/named/chroot/var/named/ts.key /var/named/chroot/var/named/ts.key |
错误情况(不做符号链接):
[root@server2 ~]# named-checkconf /var/named/chroot/etc/named.caching-nameserver.conf /var/named/chroot/etc/named.caching-nameserver.conf:44: open: /var/named/ts.key: file not found |
正确情况;
[root@server2 ~]# ln -s /var/named/chroot/var/named/ts.key /var/named/ts.key nameserver.conf //检查无错 |
2。编辑named.caching-nameserver.conf文件,在view中加入include "/var/named/ts.key"
[root@server1 ~]# vi /var/named/chroot/etc/named.caching-nameserver.conf |
3。编辑named.rfc1912.zone文件,
[root@server2 ~]# vi /var/named/chroot/etc/named.rfc1912.zones server 192.168.1.1 { |
****
测试
1。首先通过dig命令来查询词域,
[root@server2 slaves]# dig -y server1-server2.:LUt09StcLpGZfQ9kEPxk6g== @192.168.1.1 example.com axfr ; <<>> DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5 <<>> -y server1-server2. @192.168.1.1 example.com axfr root.example.com. 44 10800 900 604800 86400 root.example.com. 44 10800 900 604800 86400 1255690833 300 16 7f8n9zLbu/musJIMK1d43g== 36958 NOERROR 0 |
2。为了立即看到传输过来的zone file,重启named服务,同时监控主DNS服务器的日志文件。
server1(主DNS)
1) 为了便于观察,情况日志文件;
[root@server2 ~]# > /var/log/messages |
2) 监控日志文件,同时在server2(辅助DNS)做如下操作
[root@server1 ~]# tailf /var/log/messages |
---server2(辅助DNS)----
[root@server2 slaves]# pwd |
---server1----
[root@server1 ~]# tailf /var/log/messages localhost_resolver: transfer of 'example.com/IN': AXFR started: TSIG server1-server2 localhost_resolver: transfer of 'example.com/IN': AXFR ended |
四、后记
实验成功。实验中还应注意的是/var/named/chroot/下的子目录etc/与var/的文件信息,即文件的所有者和所属组。文件的所属信息为root.named,目录的所属信息为named.named。若目录的所属信息不正确,会导致区域传输的文件不能在本地建立。实验不周全的地方还请读者帮忙指正,谢谢。