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

相关文章

详谈redis跟数据库的数据同步问题

《详谈redis跟数据库的数据同步问题》文章讨论了在Redis和数据库数据一致性问题上的解决方案,主要比较了先更新Redis缓存再更新数据库和先更新数据库再更新Redis缓存两种方案,文章指出,删除R... 目录一、Redis 数据库数据一致性的解决方案1.1、更新Redis缓存、删除Redis缓存的区别二

Java中的密码加密方式

《Java中的密码加密方式》文章介绍了Java中使用MD5算法对密码进行加密的方法,以及如何通过加盐和多重加密来提高密码的安全性,MD5是一种不可逆的哈希算法,适合用于存储密码,因为其输出的摘要长度固... 目录Java的密码加密方式密码加密一般的应用方式是总结Java的密码加密方式密码加密【这里采用的

使用Python制作一个PDF批量加密工具

《使用Python制作一个PDF批量加密工具》PDF批量加密‌是一种保护PDF文件安全性的方法,通过为多个PDF文件设置相同的密码,防止未经授权的用户访问这些文件,下面我们来看看如何使用Python制... 目录1.简介2.运行效果3.相关源码1.简介一个python写的PDF批量加密工具。PDF批量加密

Nacos集群数据同步方式

《Nacos集群数据同步方式》文章主要介绍了Nacos集群中服务注册信息的同步机制,涉及到负责节点和非负责节点之间的数据同步过程,以及DistroProtocol协议在同步中的应用... 目录引言负责节点(发起同步)DistroProtocolDistroSyncChangeTask获取同步数据getDis

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

MySQL主从同步延迟原理及解决方案

概述 MySQL的主从同步是一个很成熟的架构,优点为: ①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力; ②在从主服务器进行备份,避免备份期间影响主服务器服务; ③当主服务器出现问题时,可以切换到从服务器。 相信大家对于这些好处已经非常了解了,在项目的部署中也采用这种方案。但是MySQL的主从同步一直有从库延迟的问题,那么为什么会有这种问题。这种问题如何解决呢? MyS

3.比 HTTP 更安全的 HTTPS(工作原理理解、非对称加密理解、证书理解)

所谓的协议 协议只是一种规则,你不按规则来就无法和目标方进行你的工作 协议说白了只是人定的规则,任何人都可以定协议 我们不需要太了解细节,这些制定和完善协议的人去做的,我们只需要知道协议的一个大概 HTTPS 协议 1、概述 HTTPS(Hypertext Transfer Protocol Secure)是一种安全的超文本传输协议,主要用于在客户端和服务器之间安全地传输数据

ja-netfilter的前世今生和非对称加密的欺骗原理

文章目录 ja-netfilter起源官网插件插件配置文件插件的综合应用更多用法 非对称加密欺骗原理非对称加密和数字证书激活过程和欺骗手段分析代码示例第一步:生成自签名证书脚本第二步:使用自签名证书对产品激活信息进行签名 样例数据样例激活码(注:用于代码演示,直接粘贴到JetBrains 家 IDE 中无法完成激活!不用试,肯定提示无效,无法激活!!)样例power.conf(配合ja-ne

使用条件变量实现线程同步:C++实战指南

使用条件变量实现线程同步:C++实战指南 在多线程编程中,线程同步是确保程序正确性和稳定性的关键。条件变量(condition variable)是一种强大的同步原语,用于在线程之间进行协调,避免数据竞争和死锁。本文将详细介绍如何在C++中使用条件变量实现线程同步,并提供完整的代码示例和详细的解释。 什么是条件变量? 条件变量是一种同步机制,允许线程在某个条件满足之前进入等待状态,并在条件满