您的位置:首页 > 其它

基于密钥的主从DNS服务器的配置

2012-10-21 19:59 513 查看
DNS面临的安全问题:

Host Enumberation :主机枚举
Cache poisoning:缓存毒化
Attacking the parent zone: 父域受到攻击
避免主机枚举的方式:
TSIG:事物签名
避免缓存毒化、父域受到攻击方式:
DNSSEC

带有密钥认证的从服务器配置:
配置环境:

需要主机2台(以下操作均在虚拟机上进行)
主DNS服务器:172.16.16.3
从DNS服务器:172.16.16.1
从DNS服务器名称:wd 【wd.magedu.com】
提供dns功能:bind97
确保yum源已经配置完善

首先通过命令生成密钥,这个密钥在主服务器上和从服务器上生成都是可以的。只要让双方的主配置文件有这个密钥即可。
[root@www named]# dnssec-keygen -a hmac-md5 -b 128 -n HOST ns1-wd.magedu.com.
[root@www named]# scp -p Kns1-wd.magedu.com.+157+10014.* 172.16.16.1:/etc/named.conf 【密钥要放到不能让他人读取的配置文件当中】
[root@www named]# cat Kns1-wd.magedu.com.+157+10014.private
Private-key-format: v1.3
Algorithm: 157 (HMAC_MD5)
Key: ZCwgERCCIFOdJPWB5yzymg== 【我们真正要用到的是这一行,主服务器,从服务器均要定义这一行】
Bits: AAA=
Created: 20121020120259
Publish: 20121020120259
Activate: 20121020120259
[root@www named]#

修改主服务器(172.16.16.3)的主配置文件:
vim /etc/named.conf
options{
directory "/var/named";
};
key"ns1-wd.magedu.com."{
algorithm hmac-md5;
secret "ZCwgERCCIFOdJPWB5yzymg==";
};
server 172.16.16.1{
keys { ns1-wd.magedu.com.; };
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN{
type master;
file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "127.0.0.zone";
};
zone "magedu.com" IN {
type master;
file "magedu.com.zone";
allow-transfer { key "ns1-wd.magedu.com."; };
};
zone "16.172.in-addr.arpa" IN {
type master;
file "172.16.16.zone";
allow-transfer { key "ns1-wd.magedu.com."; };
};

【然后在命令行输入 rndc reconfig 重读下配置文件】

修改从服务器(172.16.16.1)的主配置文件:
vim /etc/named.conf
options{
directory "/var/named";
};
key"ns1-wd.magedu.com."{
algorithm hmac-md5;
secret "ZCwgERCCIFOdJPWB5yzymg==";
};
server 172.16.16.3{
keys { ns1-wd.magedu.com.; };
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN{
type master;
file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "127.0.0.zone";
};
zone "magedu.com" IN {
type slave;
file "slaves/magedu.com.zone";
masters { 172.16.16.3; };
allow-transfer { key "ns1-wd.magedu.com."; };
};
zone "16.16.172.in-addr.arpa" IN {
type slave;
file "slaves/172.16.16.zone";
masters { 172.16.16.3 };
allow-transfer { key "ns1-wd.magedu.com."; }; 【表示的是只有通过这个密钥认证的主机允许区域传送】
};

【然后在命令行输入 rndc reconfig 重读下配置文件】

TSIG: Transaction Signatures详解

基于对称密钥加密技术的的DNS报文认证机制。密钥生成后存放至通信双方的配置文件中,报文传送前使用此密钥进行“签名”。事实上,由于使用的是对称加密技术,这里并不是实现了真正意义上的数字签名,而没有使用公钥加密技术的主要原因是基于速度的考虑。于是,出于安全的角度考虑,任何两台主机之间通信都应该使用特定的密钥。

使用dnssec-keygen命令可以生成密钥:
dnssec-keygen -a HMAC-MD5 -b 128 -n HOST ns-ns2.magedu.com.

ns.magedu.com: 172.16.100.1
ns2.magedu.com: 172.16.100.2

-a algorithm
如果不指定算法,默认使用RSASHA1;事实上,对于DNSSEC来说只能使用RSASHA1算法,对TSIG来说, HMAC-MD5是强制使用的算法.
-b keysize
使用不同的算法,其支持的密钥长度不同。RSA: 512-2048, DH:128-4096, HMAC:1-512
-n nametype
密钥的拥有者,即其使用级别;共有ZONE (DNSSEC zone key (KEY/DNSKEY)), HOST or ENTITY (host (KEY)), USER (a user(KEY)) or OTHER (DNSKEY),默认是ZONE。
{name}
The name of the key is specified on the command line. 对DNSSEC来说,名字必须是密钥所服务的ZONE的名称;对于TSIG来说,这通常是通信双方的名字;

命令会生成两个文件:Kns-ns2.magedu.com.+157+57026.key和Kns-ns2.magedu.com.+157+57026.private。其中的private文件的内容如下:
Private-key-format: v1.3
Algorithm: 157 (HMAC_MD5)
Key: C6Kai60IwnD9oeIwyyYYhQ==
Bits: AAA=
Created: 20121011111554
Publish: 20121011111554
Activate: 20121011111554

此文件中的Key需要保存至named.conf中使用,但必须保证named.conf文件不能被所有人读取。或者,也可以将密钥定义单独保存至某文件,使其不能被所有人读取,而后在named.conf文件中使用include指令将其包含进来。

在通信双方的named.conf中定义密钥的格式如下:
key "ns-ns2.magedu.com." {
algorithm hmac-md5;
secret "C6Kai60IwnD9oeIwyyYYhQ==";
};

而后在每个主机上定义分别定义通信的对方,比如这里在ns.magedu.com上定义:
server 172.16.100.2 {
keys { ns-ns2.magedu.com.; };
};

如果主服务器仅允许通过认证的从服务器进行区域传送,则可以使用类似如下格式定义传送限制:
allow-transfer { key "ns-ns2.magedu.com."; };

TSIG在DNS服务器实现安全通信具有重要的意义,但也有着诸多缺陷。一是其使用基于对称密钥的认证机制使得密钥的管理和分发变得困难,因此其也不适用于互联网级别的应用,而仅能服务器企业;二是其仅提供至“下一跳”的安全性,因此较适用的场景仅是迭代查询的场景和主从之间的区域传送;三是DNS本身就是公共资源,它需要将结果公开给互联网,因此无法实现结果的机密性。四是目前为止,Linux的客户端尚不支持查询时对服务器进行认证。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: