第十三章 安全的加密传输

  • 内容
  • 评论
  • 相关

bind服务程序为了提供安全的解析服务,已经对TSIG(RFC 2845)加密机制提供了支持。TSIG主要是利用了密码编码的方式来保护区域信息的传输(Zone Transfer),即TSIG加密机制保证了DNS服务器之间传输域名区域信息的安全性。

继续用前面的两个服务器

[root@clientA ~]# ls -al /var/named/slaves/

total 12

drwxrwx—. 2 named named 52 Apr 15 19:49 .

drwxr-x—. 6 root named 4096 Apr 15 18:22 ..

-rw-r–r–. 1 named named 351 Apr 15 19:49 192.168.38.arpa

-rw-r–r–. 1 named named 402 Apr 15 19:49 linuxabc.com.zone

[root@clientA ~]# rm -rf /var/named/slaves/*

在主服务器中生成密钥。dnssec-keygen命令用于生成安全的DNS服务密钥,其格式为”dnssec-keygen [参数]”,常用的参数以及作用如表所示。

                                 dnssec-keygen命令的常用参数

参数

作用

-a

指定加密算法,包括RSAMD5(RSA)、RSASHA1、DSA、NSEC3RSASHA1、NSEC3DSA等

-b

密钥长度(HMAC-MD5的密钥长度在1~512位之间)

-n

密钥的类型(HOST表示与主机相关)

使用下述命令生成一个主机名称为master-slave的128位HMAC-MD5算法的密钥文件。在执行该命令后默认会在当前目录中生成公钥和私钥文件,我们需要把私钥文件中Key参数后面的值记录下来,一会儿要将其写入传输配置文件中。

[root@rhel7 named]# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST master-slave

在主服务器中创建密钥验证文件。进入bind服务程序用于保存配置文件的目录,把刚刚生成的密钥名称、加密算法和私钥加密字符串按照下面格式写入到tansfer.key传输配置文件中。为了安全起见,我们需要将文件的所属组修改成named,并将文件权限设置得要小一点,然后把该文件做一个硬链接到/etc目录中。

[root@rhel7 named]# cd /var/named/chroot/etc/

[root@rhel7 etc]# vim transfer.key

key “master-slave” {

algorithm hmac-md5;

secret “1MnzLzWTSii7o6UphZxE8A==”;

};

[root@rhel7 etc]# chown root:named transfer.key

[root@rhel7 etc]# chmod 640 transfer.key

[root@rhel7 etc]# ln transfer.key /etc/transfer.key

开启并加载Bind服务的密钥验证功能。首先需要在主服务器的主配置文件中加载密钥验证文件,然后进行设置,使得只允许带有master-slave密钥认证的DNS服务器同步数据配置文件:

[root@rhel7 etc]# vim /etc/named.conf

9行     include “/etc/transfer.key”;

18行     allow-transfer { key master-slave; };

[root@rhel7 etc]# systemctl restart named

至此,DNS主服务器的TSIG密钥加密传输功能就已经配置完成。此时清空DNS从服务器同步目录中所有的数据配置文件,然后再次重启bind服务程序,这时就已经不能像刚才那样自动获取到数据配置文件了。

[root@clientA ~]# systemctl restart named

[root@clientA ~]# ls /var/named/slaves/

配置从服务器,使其支持密钥验证。配置DNS从服务器和主服务器的方法大致相同,都需要在bind服务程序的配置文件目录中创建密钥认证文件,并设置相应的权限,然后把该文件做一个硬链接到/etc目录中。

[root@clientA ~]# cd /var/named/chroot/etc

[root@clientA etc]# vim transfer.key

[root@clientA etc]# chown root:named transfer.key

[root@clientA etc]# chmod 640 transfer.key

[root@clientA etc]# ln transfer.key /etc/transfer.key

开启并加载从服务器的密钥验证功能。这一步的操作步骤也同样是在主配置文件中加载密钥认证文件,然后按照指定格式写上主服务器的IP地址和密钥名称。注意,密钥名称等参数位置不要太靠前,大约在第43行比较合适,否则bind服务程序会因为没有加载完预设参数而报错

[root@clientA etc]# vim /etc/named.conf

9行 include “/etc/transfer.key”;

43行     server 192.168.38.10

44行      {

45行      keys { master-slave; };

46行      };

DNS从服务器同步域名区域数据。现在,两台服务器的bind服务程序都已经配置妥当,并匹配到了相同的密钥认证文件。接下来在从服务器上重启bind服务程序,可以发现又能顺利地同步到数据配置文件了。