Bind DNS服务——带KEY的区域传送与子域授权
Linux基础服务——Bind DNS服务 Part3
带KEY的区域传送与子域授权
带KEY的区域传送
上文提到了区域传送,但实际上在区域传送的时,传送的区域文件并不会被加密。因此一般的区域传送并不安全,黑客可以捕获数据包并篡改区域传送的内容,使得dns解析异常。
我们可以使用KEY来加密区域数据进行传送,防止数据被篡改。(如下图,WireShark抓包,在主DNS响应从DNS的IXFR的数据包中得到了区域信息)


那么Bind9使用TSIG(Transaction SIGnatures)来实现对DNS事务的加密签名。Bind9提供了tsig-keygen命令行工具生成密钥。
[root@dns1 ~]# tsig-keygen test.com-key //该命令输出的内容应添加到named.conf文件中,此处仅是单纯输出到屏幕
key "test.com-key" { //key后接密钥名定义了tsig的密钥,algorithm定义算法,secret为密文
algorithm hmac-sha256;
secret "sQjKG2BJZuQrKHghrKyCZrtjkTIaJ5tEygkxDIs7a0g=";
};
将重新生成密钥并保存至文件,然后在named.conf文件中包含该文件来将密钥引入主配置文件中。
[root@dns1 ~]# cd /var/named/
[root@dns1 named]# mkdir zone-key
[root@dns1 named]# tsig-keygen test.com-key >> zone-key/test.com.key
include "/var/named/zone-key/test.com.key"; //将该行添加至named.conf文末
修改test.com区域定义为如下内容:
zone "test.com" IN {
type master;
file "test.com.zones";
allow-transfer { key test.com.key; }; //只有拥有该把密钥的服务器才能进行传送。
};
接下来修改test.com区域文件,增加Serial触发区域传输并查看日志结果。(添加条目并将Serial变大即可,略)
Jun 08 08:26:42 dns2 named[2044]: client @0x7fb83c0bf880 192.168.100.50#48500: received notify for zone 'test.com'
Jun 08 08:26:42 dns2 named[2044]: zone test.com/IN: notify from 192.168.100.50#48500: serial 4
Jun 08 08:26:42 dns2 named[2044]: zone test.com/IN: Transfer started.
Jun 08 08:26:42 dns2 named[2044]: transfer of 'test.com/IN' from 192.168.100.50#53: connected using 192.168.100.60#52515
Jun 08 08:26:42 dns2 named[2044]: transfer of 'test.com/IN' from 192.168.100.50#53: resetting
Jun 08 08:26:42 dns2 named[2044]: transfer of 'test.com/IN' from 192.168.100.50#53: connected using 192.168.100.60#57649
Jun 08 08:26:42 dns2 named[2044]: transfer of 'test.com/IN' from 192.168.100.50#53: failed while receiving responses: REFUSED //可见区域传送被拒绝了
Jun 08 08:26:42 dns2 named[2044]: transfer of 'test.com/IN' from 192.168.100.50#53: Transfer status: REFUSED
Jun 08 08:26:42 dns2 named[2044]: transfer of 'test.com/IN' from 192.168.100.50#53: Transfer completed: 0 messages, 0 records, 0 bytes, 0.001 secs (0 bytes/sec)
那么接下来我们在从DNS服务器上创建相应目录,并传输密钥到从服务器上引入再次进行尝试。
[root@dns2 ~]# cd /var/named/
[root@dns2 named]# mkdir zone-key
[root@dns2 named]# scp dns.test.com:/var/named/zone-key/* zone-key/
root@dns.test.com's password:
test.com.key 100% 104 111.3KB/s 00:00
[root@dns2 named]# vim /etc/named.conf
zone "test.com" IN { //修改区域定义配置
type slave;
file "slaves/test.com.zone";
masters { 192.168.100.50 key test.com-key; }; //使用test.com-key密钥进行传输
};
include "/var/named/zone-key/test.com.key"; //将该行添加至named.conf文末
配置完成后再次进行尝试。
Jun 08 08:40:25 dns2 named[2128]: client @0x7fc4b00bf880 192.168.100.50#43731: received notify for zone 'test.com'
Jun 08 08:40:25 dns2 named[2128]: zone test.com/IN: notify from 192.168.100.50#43731: serial 4
Jun 08 08:40:25 dns2 named[2128]: zone test.com/IN: Transfer started.
Jun 08 08:40:25 dns2 named[2128]: transfer of 'test.com/IN' from 192.168.100.50#53: connected using 192.168.100.60#53415 TSIG test.com-key
Jun 08 08:40:25 dns2 named[2128]: zone test.com/IN: transferred serial 4: TSIG 'test.com-key'
Jun 08 08:40:25 dns2 named[2128]: transfer of 'test.com/IN' from 192.168.100.50#53: Transfer status: success
Jun 08 08:40:25 dns2 named[2128]: transfer of 'test.com/IN' from 192.168.100.50#53: Transfer completed: 1 messages, 11 records, 360 bytes, 0.001 secs (360000 bytes/sec)
Jun 08 08:40:25 dns2 named[2128]: zone test.com/IN: sending notifies (serial 4)
可见成功使用TSIG密钥对区域传送进行签名。
子域授权
对于test.com 我们可以有一个子域为ms.test.com,我们可以将子域授权给另一个服务器进行解析。具体的DNS查询流程如下图。

下面开始配置,首先在test.com区域文件中指定ms.test.com域交由哪个服务器进行解析。(使用NS记录进行指定)
@ IN SOA dns.test.com. admin.test.com. (
4 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns
NS dns2
ms NS dns2 //添加这一行,ms后会自动添加$ORIGIN,那么完整记录也就是ms.test.com. NS dns2.test.com.
Linux A 192.168.200.30
tomcat A 192.168.100.90
dns2 A 192.168.100.60 //需要对子域服务器进行解析。
dns A 192.168.100.50
www A 192.168.100.20
web.test.com. A 192.168.100.10
以上内容配置完毕后重启服务,然后对DNS2服务器进行配置。添加ms.test.com的区域定义并编写区域配置文件
//添加如下内容到named.conf
zone "ms.test.com" IN {
type master;
file "ms.test.com.zones";
};
//编写区域文件
$TTL 1D
@ IN SOA dns2.test.com. admin.test.com. (
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns2.test.com.
dns2 A 192.168.100.60
www A 192.168.200.10
web A 192.168.200.20
配置完毕后重新启动服务。进行测试。
PS C:\Users\77653> nslookup - 192.168.100.50
默认服务器: dns.test.com
Address: 192.168.100.50
> www.ms.test.com
服务器: dns.test.com
Address: 192.168.100.50
非权威应答:
名称: www.ms.test.com
Address: 192.168.200.10
可以看到,主DNS服务器并不负责ms.test.com这个区域的解析,但我们还是得到了结果。
通过抓包可以看到具体的DNS的查询过程。

Bind DNS服务——带KEY的区域传送与子域授权的更多相关文章
- DNS区域传送、子域授权
前言 DNS服务器搭建参考上一篇: DNS主从复制,就是将主DNS服务器的解析库复制传送至从DNS服务器,进而从服务器就可以进行正向.反向解析了.从服务器向主服务器更新查询数据,保证数据一致性,此为区 ...
- Bind DNS服务——转发与区域记录更新
Linux基础服务--Bind DNS服务 Part4 转发与区域记录更新 一个DNS服务器不可能保存所有的区域记录,所以我们一般都会将其他的区域纪录转发到其他的服务器上进行解析. Bind9提供了全 ...
- Linux基础服务——Bind DNS服务 Part2
Linux基础服务--Bind DNS服务 Part2 DNS反向解析与区域传送 实验环境延续Part1的实验环境. 反向区域配置 正向解析是域名到IP地址的映射,反向解析则是IP地址到域名的解析,在 ...
- Bind DNS服务——基础知识
Linux基础--Bind DNS服务 Part0 DNS简介 域名系统(英语:Domain Name System,缩写:DNS)是互联网的一项服务.它作为将域名和IP地址相互映射的一个分布式数据库 ...
- Linux基础服务——Bind DNS服务 Part1
Linux基础服务--Bind DNS服务 Part1 DNS正向解析 实验环境: CentOS8.3.2011 IP地址:192.168.100.50 VMware虚拟环境 NAT网段 需要解析的区 ...
- linux服务基础之DNS正反向解析、主从同步、子域授权及视图
关键词: 正向解析 反向解析 主从复制 自域授权 视图 一.DNS基本原理 1.1 什么是DNS?BIND又是什么? DNS:Domain Name Service,它是一个基于应用层的协议,是C/S ...
- <转>DNS服务系列之二:DNS区域传送漏洞的安全案例
DNS区域传送(DNS zone transfer)指的是一台备用服务器使用来自主服务器的数据刷新自己的域(zone)数据库.这为运行中的DNS服务提供了一定的冗余度,其目的是为了防止主的域名服务器因 ...
- DNS区域传送漏洞的安全案例
DNS区域传送(DNS zone transfer)指的是一台备用服务器使用来自主服务器的数据刷新自己的域(zone)数据库.这为运行中的DNS服务提供了一定的冗余度,其目的是为了防止主的域名服务 ...
- DNS区域传送漏洞实验以及二级域名爆破
DNS区域传送漏洞实验以及二级域名爆破 目录: 1.DNS服务器的域传送漏洞(nslookup交互式.非交互式.批处理三种方式) 2.写个二级域名爆破脚本 一.DNS服务器的域传送漏洞 实验环境: 服 ...
- DNS服务初步搭建
一.准备DNS服务环境 选择 bind dns服务软件包 直接yum安装 bind 和 bind-utils 工具包,测试机器安装bind-utils测试工具包. 服务程序名为 named 二.配置D ...
随机推荐
- 当微服务遇上 Serverless | 微服务容器化最短路径,微服务 on Serverless 最佳实践
简介: 阿里云Serverless应用引擎(SAE)初衷是让客户不改任何代码,不改变应用部署方式,就可以享受到微服务+K8s+Serverless的完整体验,开箱即用免运维. 前言 微服务作为一种更 ...
- IIncrementalGenerator 增量 Source Generator 生成代码应用 将构建时间写入源代码
本文将和大家介绍一个 IIncrementalGenerator 增量 Source Generator 生成代码技术的应用例子,将当前的构建时间写入到代码里面.这个功能可以比较方便实现某些功能的开关 ...
- Unity3D OpenVR 虚拟现实 保龄球打砖块游戏开发
据说水哥买了 Valve Index 设备,既然这个设备这么贵,不开发点有(zhi)趣(zhang)游戏就感觉对不起这个设备.本文将来开始着手开发一个可玩性不大,观赏性极强的保龄球打砖块游戏.这仅仅只 ...
- vue实现左右两列竖直分别滑动,且双向关联的选项卡(二)
查了诸如vant,mint组件上并没有找到期望的这种效果(cube组件上有,但项目中实在不想再引入一个第三方的组件库了),但实际上在移动端app开发中很常见的一个效果.于是按照自己的思路将这个效果做了 ...
- 老外为了在MacBook上玩原神,让M1支持了所有iOS应用 | Github每周精彩分享第一期
大家好,这里是每周更新的Github有趣项目分享,我是每周都在吃瓜的蛮三刀酱. 我会从Github热门榜里选出 高质量.有趣,牛B 的开源项目进行分享. 废话不多说,看看最近有什么有意思的Github ...
- 通过虚拟机镜像部署zabbix
前言 由于基础镜像的缘故,zabbix部署过程中很可能出现各种缺少依赖包的情况,如果环境中又无法连接互联网,系统部署会非常麻烦.为此zabbix官方提供了虚拟机镜像,导入后可以直接在平台上拉起虚拟机, ...
- R6_ES在互联网公司应用案例汇总参考
Elasticsearch 是一个实时分布式搜索数据分析引擎,内部使用lucene做索引与搜索,能够解决常规和各种类型数据的存储及检索需求,典型的应用场景有:数据分析,站内搜索,ELK,电商等,主要特 ...
- 03.Java 基础语法
1. 注释.标识符.关键字 三种注释 单行注释:// 多行注释:/* 多行注释 */ 文档注释: /** * @Description HelloWorld * @Author xxx */ 标识符 ...
- M3U8下载器加嗅探浏览器
M3U8下载器太多了,随便一抓一大把,没什么新奇的. 下载地址: https://www.zhaimaojun.cn/P/%e8%a7%86%e9%a2%91%e7%bd%91%e7%ab%99%e5 ...
- Swift中Tuple的比较
Swift中Tuple的比较遵循如下规则: 1 被比较的Tuple中包含的元素个数必须一样,并且对应元素的类型也必须一样: 2 比较的结果由整个Tuple的比较结果来决定.比如,如果是相等比较,那么必 ...