绑定安全性:事务签名(TSIG)配置
问题描述:如何配置BIND9名称与TSIG(事务SIGnature)机制一起使用以保护服务器到服务器的通信?
如何对DNS(绑定名称服务器)使用秘密交易认证?
解决方法:事务签名(TSIG)是一种用于保护DNS消息并提供安全的服务器到服务器通信的机制(通常在主服务器和从服务器之间,但是也可以扩展为动态更新)。
TSIG可以保护两个DNS服务器之间的以下类型的事务:
- 区域转移
- 通知
- 动态更新
- 递归查询消息等
TSIG可用于BIND v8.2及更高版本。
TSIG使用共享机密和单向哈希函数来验证DNS消息。
对于解析程序和命名程序,TSIG既简单又轻巧。
这个怎么运作?
- 每个名称服务器都添加一个TSIG记录dns服务器到服务器查询和消息的数据部分。
- TSIG记录对DNS消息进行签名,证明消息发件人具有与接收者共享的加密密钥,并且消息在离开发件人之后未被修改。
- TSIG使用单向哈希函数来提供身份验证和数据完整性。
我们的示例设置:
- 主域名服务器:ns1.theitroad.com 192.54.1.2
- 从站名称服务器:75.55.2.100中的ns2.theitroad。
- BIND配置存储在/etc/bind /目录中。
- 区域数据存储在/etc/bind/named.conf文件中。
如何配置TSIG?
在主域名服务器(ns1.theitroad.com)上执行以下命令,以使用dnssec-keygen程序创建共享密钥,该程序将创建两个文件,两个文件均包含生成的密钥。
# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST rndc-key
输出示例:
Krndc-key.+157+64252
列出所有文件,执行:
# ls -l
输出:
total 52 -rw-r--r-- 1 root root 237 2009-01-06 12:16 db.0 -rw-r--r-- 1 root root 271 2009-01-06 12:16 db.127 -rw-r--r-- 1 root root 237 2009-01-06 12:16 db.255 -rw-r--r-- 1 root root 353 2009-01-06 12:16 db.empty -rw-r--r-- 1 root root 256 2009-01-06 12:16 db.local -rw-r--r-- 1 root root 1506 2009-01-06 12:16 db.root -rw------- 1 root root 52 2009-01-25 14:13 Krndc-key.+157+64252.key -rw------- 1 root root 81 2009-01-25 14:13 Krndc-key.+157+64252.private -rw-r--r-- 1 root bind 1302 2009-01-25 14:13 named.conf -rw-r--r-- 1 root bind 165 2009-01-06 12:16 named.conf.local -rw-r--r-- 1 root bind 358 2009-01-25 14:02 named.conf.options -rw-r----- 1 bind bind 77 2009-01-24 20:37 rndc.key -rw-r--r-- 1 root root 1317 2009-01-06 12:16 zones.rfc1918
其中:
- -a指定加密算法。
- -b指定密钥大小。
- -n指定名称类型。名称类型可以是ZONE,HOST,ENTITY或者USER。通常,您需要使用HOST或者ZONE,例如theitroad.com
上面的dnssec-keygen程序创建了两个文件,如下所示。
.key和.private文件都是为对称加密算法(例如HMAC-MD5)生成的,即使公钥和私钥是等效的:
Krndc-key。+ 157 + 64252.key
包含公钥。 .key文件包含可以插入区域文件中的DNS KEY记录。Krndc-key。+ 157 + 64252.private
包含私钥。 .private文件包含特定于算法的字段。
使用TSIG主服务器配置
运行以下命令并记下密钥:
# cat Krndc-key.+157+64252.private
输出示例:
Private-key-format: v1.2 Algorithm: 157 (HMAC_MD5) Key: 0jnu3SdsMvzzlmTDPYRceA== Bits: AAA=
打开/etc/bind/tsig.key文件,执行:
# vi /etc/bind/tsig.key
现在,您需要在"主服务器"上创建tsig.key文件,如下所示:
key "TRANSFER" { algorithm hmac-md5; secret "0jnu3SdsMvzzlmTDPYRceA=="; }; # Slave server IP # 1 server 75.55.2.100 { keys { TRANSFER; }; }; ################################ # If you have 3rd slave server with IP 64.1.2.3 #server 64.1.2.3 { # keys { # TRANSFER; # }; #}; ################################
第一块不过是钥匙。
使用密钥子语句配置TSIG密钥。
密钥子语句通知名称服务器对发送到特定远程名称服务器的查询和区域转移请求进行签名。
在我们的案例中,上述子语句通知主服务器,使用称为TRANSFER的密钥将所有请求签名到主机从服务器75.55.2.100。
服务器声明keys子句,告诉从属名称服务器对发送到其主服务器的所有区域传输请求和查询进行签名,反之亦然。
保存并关闭文件。
打开named.conf文件,执行:
# vi /etc/bind/named.conf
追加以下行:
include "/etc/bind/tsig.key";
保存并关闭文件。
重新启动名为:
# rndc reload
或者
# service named restart
使用TSIG从属服务器配置
在从属服务器上创建/etc/bind/tsig.key,执行:
# vi /etc/bind/tsig.key
追加以下配置:
key "TRANSFER" { algorithm hmac-md5; secret "0jnu3SdsMvzzlmTDPYRceA=="; }; # Master server IP server 192.54.1.2 { keys { TRANSFER; }; };
保存并关闭文件。
将以下内容添加到named.conf:
include "/etc/bind/tsig.key";
仅将区域转移限制为使用特定密钥签名的区域
在主名称服务器上,可以将区域传输仅限制为使用特定密钥(例如TRANSFER)签名的区域。
打开named.conf
# vi /etc/bind/named.conf
您必须将区域传输限制为使用TRANSFER密钥签名的区域,如下所示:
zone "theitroad.com" { type master; file "/etc/bind/zones/master.theitroad.com"; allow-transfer { key TRANSFER; }; };
保存并关闭文件。
重新启动/重新加载绑定服务器:
# rndc reload
或者
# service named restart
验证TSGI
观看您的主BIND dns服务器日志文件或者系统日志文件,执行:
# tail -f /var/log/messages
或者
# tail -f /var/log/syslog
或者
# grep 'theitroad.com/IN' /var/log/syslog
输出示例:
.... .... Jan 26 13:43:11 rose named[9170]: client 75.126.168.152#52204: transfer of 'theitroad.com/IN': AXFR-style IXFR started: TSIG transfer Jan 26 13:43:11 rose named[9170]: client 75.126.168.152#52204: transfer of 'theitroad.com/IN': AXFR-style IXFR ended .... ..
您应该能够在从属服务器上看到类似的消息:
Jan 26 19:18:33 txvip1 named[17899]: client 208.43.138.52#32806: received notify for zone 'theitroad.com': TSIG 'transfer' Jan 26 19:18:33 txvip1 named[17899]: zone theitroad.com/IN: Transfer started. Jan 26 19:18:33 txvip1 named[17899]: transfer of 'theitroad.com/IN' from 208.43.138.52#53: connected using 75.126.168.152#45942 Jan 26 19:18:34 txvip1 named[17899]: zone theitroad.com/IN: transferred serial 2008071011: TSIG 'transfer' Jan 26 19:18:34 txvip1 named[17899]: transfer of 'theitroad.com/IN' from 208.43.138.52#53: end of transfer