DNS BIND主辅同步之TSIG加密

2024-04-05 22:18
文章标签 加密 bind 同步 dns 主辅 tsig

本文主要是介绍DNS BIND主辅同步之TSIG加密,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Transaction signatures(TSIG)通常是一种确保DNS消息安全,并提供安全的服务器与服务器之间通讯(通常是在主从服务器之间)的机制。TSIG可以保护以下类型的DNS服务器:Zone转换、Notify、动态升级更新、递归查询邮件。TSIG适用于BIND v8.2及以上版本。TSIG使用共享秘密和单向散列函数来验证的DNS信息。 TSIG是易于使用的轻便解析器和命名机制。TSIG是一个安全的访问控制机制,保护信息在传输的过程中不会被改变。
一、工作原理
1、每个域名服务器增加了一个TSIG记录DNS服务器间的查询和信息的数据块
2、TSIG中记录了DNS消息签名,证明该邮件发件人与收件人共有一个共享密钥,并且在消息发送后不可被修改。
3、TSIG使用单向散列函数来验证身份和判断数据完整性。
要求:时间必须是准确的。

二、生成TSIG

使用bind提供的工具dnsssec-kengen生成共享密钥。

/home/slim/bind/sbin/dnssec-keygen -a HMAC-MD5 -b 128 -n HOST "test_key"

生成Ktest_key.+157+45410.key公用和Ktest_key.+157+45410.private私钥文件

# cat Ktest_key.+157+45410.private
Private-key-format: v1.3
Algorithm: 157 (HMAC_MD5)
Key: epYaIl5VMJGRSG4WMeFW5g==
Bits: AAA=
Created: 20150418165400
Publish: 20150418165400
Activate: 20150418165400
将生成的key写到secret文件中
vi test_key

key "test_key" {                                  #注意:这里写的是生成key的名字algorithm hmac-md5;secret "epYaIl5VMJGRSG4WMeFW5g==";        #将生成的key复制到此处
};

注:尽管共有密钥和私有密钥是等价的,但为了确保安全通常dnssec-keygen采用例如HMAC-MD5的称加密算法来对生成的密钥进行加密。

三、主服务器配置

在named.conf增加如下配置:

include "/etc/test_key";

并在全局options配置中添加

allow-transfer { key test_key; };
notify yes;  

定义有key的主机才能同步。

四、从服务器

将主服务器的test_key文件复制过来

在named.conf增加如下配置:

include "/etc/test_key";

server 192.168.36.54{
        keys{
                test_key;
        };
};

修改zone test.com指定主服务器:

zone "test.com" IN {
        type slave;
        file "zone/test.com.zone";
        masters{
                192.168.36.54;
        };
};

四、测试

启动主辅服务器,检查是否能正常解析,然后修改主服务器zone/test.com.zone SOA中的Serial值+1,重启加载主服务器配置,查看是否同步。

/home/slim/bind/sbin/rndc -c /home/slim/chroot/etc/rndc.conf reload

可以看到同步日志如下:

主服务器:

18-Apr-2015 17:29:30.089 client 192.168.36.189#50319/key test_key (test.com): query: test.com IN SOA -SE (192.168.36.54)
18-Apr-2015 17:29:30.098 client 192.168.36.189#39445/key test_key (test.com): query: test.com IN IXFR -ST (192.168.36.54)
18-Apr-2015 17:29:30.099 client 192.168.36.189#39445/key test_key (test.com): transfer of 'test.com/IN': AXFR-style IXFR started: TSIG test_key
18-Apr-2015 17:29:30.100 client 192.168.36.189#39445/key test_key (test.com): transfer of 'test.com/IN': AXFR-style IXFR ended
辅服务器:

18-Apr-2015 17:27:12.156 client 192.168.36.54#1246: received notify for zone 'test.com'
18-Apr-2015 17:27:12.157 zone test.com/IN: notify from 192.168.36.54#1246: zone is up to date
18-Apr-2015 17:29:27.899 client 192.168.36.54#13088: received notify for zone 'test.com'
18-Apr-2015 17:29:28.099 zone test.com/IN: Transfer started.
18-Apr-2015 17:29:28.106 transfer of 'test.com/IN' from 192.168.36.54#53: connected using 192.168.36.189#39445
18-Apr-2015 17:29:28.109 zone test.com/IN: transferred serial 60: TSIG 'test_key'
18-Apr-2015 17:29:28.109 transfer of 'test.com/IN' from 192.168.36.54#53: Transfer completed: 1 messages, 8 records, 289 bytes, 0.003 secs (96333 bytes/sec)
18-Apr-2015 17:29:28.110 zone test.com/IN: sending notifies (serial 60)
可以看见同步过程中使用TSIG 'test_key'
五、配置zone同步key

由于bind的主辅同步可以控制到具体的zone,所以TSIG可以真不同zone,配置不同的TSIG,不过要通过view配置。

如主服务器:

view"tisg"{match-clients{key"tisg";192.168.36.0/24;};server192.168.36.189{keys"tisg";};zone"."IN{typehint;file"named.root";};zone"test.com"{typemaster;also-notify{192.168.36.189;};file"tisg/test.com.zone";};
};

辅服务器:

view"tisg"{match-clients{key"tisg";192.168.36.0/24;};server192.168.36.54{keys"tisg";};zone"."IN{typehint;file"/var/named/named.root";};zone"test.com"{typeslave;file"tisg/test.com.zone"masters{192.168.36.54;};};
};

如果主dns不设置server语句的话,则主服务器主动发送给从dns的notify会被拒绝;如果从服务器不设置server语句的话,则不能实现分view同步的功能;如果主从服务器时间不同步的话,则会导致验证失败;如果从dns的ip匹配到主dns的view,则会导致只同步这个view的数据下来,即使配置了key。

参考文章:http://www.cnblogs.com/qlight/archive/2012/08/30/2663314.html

这篇关于DNS BIND主辅同步之TSIG加密的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/878287

相关文章

Java中使用Hutool进行AES加密解密的方法举例

《Java中使用Hutool进行AES加密解密的方法举例》AES是一种对称加密,所谓对称加密就是加密与解密使用的秘钥是一个,下面:本文主要介绍Java中使用Hutool进行AES加密解密的相关资料... 目录前言一、Hutool简介与引入1.1 Hutool简介1.2 引入Hutool二、AES加密解密基础

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

CentOS 7部署主域名服务器 DNS的方法

《CentOS7部署主域名服务器DNS的方法》文章详细介绍了在CentOS7上部署主域名服务器DNS的步骤,包括安装BIND服务、配置DNS服务、添加域名区域、创建区域文件、配置反向解析、检查配置... 目录1. 安装 BIND 服务和工具2.  配置 BIND 服务3 . 添加你的域名区域配置4.创建区域

Linux系统之dns域名解析全过程

《Linux系统之dns域名解析全过程》:本文主要介绍Linux系统之dns域名解析全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、dns域名解析介绍1、DNS核心概念1.1 区域 zone1.2 记录 record二、DNS服务的配置1、正向解析的配置

SpringBoot3使用Jasypt实现加密配置文件

《SpringBoot3使用Jasypt实现加密配置文件》这篇文章主要为大家详细介绍了SpringBoot3如何使用Jasypt实现加密配置文件功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编... 目录一. 使用步骤1. 添加依赖2.配置加密密码3. 加密敏感信息4. 将加密信息存储到配置文件中5

SpringBoot整合jasypt实现重要数据加密

《SpringBoot整合jasypt实现重要数据加密》Jasypt是一个专注于简化Java加密操作的开源工具,:本文主要介绍详细介绍了如何使用jasypt实现重要数据加密,感兴趣的小伙伴可... 目录jasypt简介 jasypt的优点SpringBoot使用jasypt创建mapper接口配置文件加密

Java实现MD5加密的四种方式

《Java实现MD5加密的四种方式》MD5是一种广泛使用的哈希算法,其输出结果是一个128位的二进制数,通常以32位十六进制数的形式表示,MD5的底层实现涉及多个复杂的步骤和算法,本文给大家介绍了Ja... 目录MD5介绍Java 中实现 MD5 加密方式方法一:使用 MessageDigest方法二:使用

Linux搭建Mysql主从同步的教程

《Linux搭建Mysql主从同步的教程》:本文主要介绍Linux搭建Mysql主从同步的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux搭建mysql主从同步1.启动mysql服务2.修改Mysql主库配置文件/etc/my.cnf3.重启主库my

SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)

《SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)》本文介绍了如何在SpringBoot项目中使用Jasypt对application.yml文件中的敏感信息(如数... 目录SpringBoot使用Jasypt对YML文件配置内容进行加密(例:数据库密码加密)前言一、J

Java中将异步调用转为同步的五种实现方法

《Java中将异步调用转为同步的五种实现方法》本文介绍了将异步调用转为同步阻塞模式的五种方法:wait/notify、ReentrantLock+Condition、Future、CountDownL... 目录异步与同步的核心区别方法一:使用wait/notify + synchronized代码示例关键