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 ...
随机推荐
- [FAQ] 前端 点击事件或链接 如何打开两个外部窗口
点击链接支持 blank,但无法打开多个,考虑使用绑定 click 事件的方式. window.open 的采用需要有主动点击的情况,否则浏览器可能拦截. 如果是外部窗口,在点击时,优先使用 wind ...
- github 解决推拉代码提示 REMOTE HOST IDENTIFICATION HAS CHANGED 失败
本文记录最近 github 推送或拉取代码时提示 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! 而失败的解决方法 报错提示如下 @@@@@@@@@@ ...
- 如何参与 .NET 的开发和设计
现在 dotnet 属于 dotnet 基金会,所有开发者都可以向 dotnet 贡献代码和参与 .NET 的设计,参与路线决策.本文来告诉大家一些基本玩法,带着小伙伴们入坑 注意哦,参与 dotne ...
- vue通过input选取图片,jq的ajax向服务器上传img
<template> <div class=""> <!-- 选择后预览 --> <img v-if="im ...
- windows 10安装python2.7
一.官网下载 1.百度搜索"python"或者点击这个网址下载https://www.python.org/downloads/release/python-2716/ pytho ...
- C 编程异常 — double free or corruption (fasttop)
问题:运行代码的时候程序崩溃. *** Error in `./parsing': double free or corruption (fasttop): 0x00000000023d2350 ** ...
- 安全高效 | AIRIOT智慧工地管理解决方案
建筑工地施工材料.机械设备.工程车.人员各个环节管理相对复杂.建筑业也是安全事故频发的高危行业,安全管控尤为重要.建筑施工单位想要保障安全生产,做好能源消耗管控降低生产成本,需要解决掉很多现状问题 ...
- 鸿蒙HarmonyOS实战-Stage模型(开发卡片页面)
一.开发卡片页面 HarmonyOS元服务卡片页面(Metaservice Card Page)是指在HarmonyOS系统中,用于展示元服务的页面界面.元服务是指一组提供特定功能或服务的组件,例如天 ...
- .NET 中 Channel 类简单使用
Channel 是干什么的 The System.Threading.Channels namespace provides a set of synchronization data structu ...
- uniapp-vue3-oadmin手机后台实例|vite5.x+uniapp多端仿ios管理系统
原创vue3+uniapp+uni-ui跨端仿ios桌面后台OA管理模板Uni-Vue3-WeOS. uniapp-vue3-os一款基于uni-app+vite5.x+pinia等技术开发的仿ios ...