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的区域传送与子域授权的更多相关文章

  1. DNS区域传送、子域授权

    前言 DNS服务器搭建参考上一篇: DNS主从复制,就是将主DNS服务器的解析库复制传送至从DNS服务器,进而从服务器就可以进行正向.反向解析了.从服务器向主服务器更新查询数据,保证数据一致性,此为区 ...

  2. Bind DNS服务——转发与区域记录更新

    Linux基础服务--Bind DNS服务 Part4 转发与区域记录更新 一个DNS服务器不可能保存所有的区域记录,所以我们一般都会将其他的区域纪录转发到其他的服务器上进行解析. Bind9提供了全 ...

  3. Linux基础服务——Bind DNS服务 Part2

    Linux基础服务--Bind DNS服务 Part2 DNS反向解析与区域传送 实验环境延续Part1的实验环境. 反向区域配置 正向解析是域名到IP地址的映射,反向解析则是IP地址到域名的解析,在 ...

  4. Bind DNS服务——基础知识

    Linux基础--Bind DNS服务 Part0 DNS简介 域名系统(英语:Domain Name System,缩写:DNS)是互联网的一项服务.它作为将域名和IP地址相互映射的一个分布式数据库 ...

  5. Linux基础服务——Bind DNS服务 Part1

    Linux基础服务--Bind DNS服务 Part1 DNS正向解析 实验环境: CentOS8.3.2011 IP地址:192.168.100.50 VMware虚拟环境 NAT网段 需要解析的区 ...

  6. linux服务基础之DNS正反向解析、主从同步、子域授权及视图

    关键词: 正向解析 反向解析 主从复制 自域授权 视图 一.DNS基本原理 1.1 什么是DNS?BIND又是什么? DNS:Domain Name Service,它是一个基于应用层的协议,是C/S ...

  7. <转>DNS服务系列之二:DNS区域传送漏洞的安全案例

    DNS区域传送(DNS zone transfer)指的是一台备用服务器使用来自主服务器的数据刷新自己的域(zone)数据库.这为运行中的DNS服务提供了一定的冗余度,其目的是为了防止主的域名服务器因 ...

  8. DNS区域传送漏洞的安全案例

      DNS区域传送(DNS zone transfer)指的是一台备用服务器使用来自主服务器的数据刷新自己的域(zone)数据库.这为运行中的DNS服务提供了一定的冗余度,其目的是为了防止主的域名服务 ...

  9. DNS区域传送漏洞实验以及二级域名爆破

    DNS区域传送漏洞实验以及二级域名爆破 目录: 1.DNS服务器的域传送漏洞(nslookup交互式.非交互式.批处理三种方式) 2.写个二级域名爆破脚本 一.DNS服务器的域传送漏洞 实验环境: 服 ...

  10. DNS服务初步搭建

    一.准备DNS服务环境 选择 bind dns服务软件包 直接yum安装 bind 和 bind-utils 工具包,测试机器安装bind-utils测试工具包. 服务程序名为 named 二.配置D ...

随机推荐

  1. 内含干货PPT下载|一站式数据管理DMS及最新解决方案发布

    ​简介: 今天主要给大家介绍一站式数据管理平台DMS以及解决方案的发布.议题包含企业数据管理当前的一些痛,DMS一站式数据管理平台以及其核心技术,实时数仓解决方案以及相应的应用实践. "数聚 ...

  2. dotnet 6 在 System.Text.Json 使用 source generation 源代码生成提升 JSON 序列化性能

    这是一个在 dotnet 6 早就引入的功能,此功能的使用方法能简单,提升的效果也很棒.使用的时候需要将 Json 序列化工具类换成 dotnet 运行时自带的 System.Text.Json 进行 ...

  3. dotnet 5 让 WPF 调用 WindowsRuntime 方法

    本文告诉大家在 dotnet 5 里,如何使用 WinRT 加上 Microsoft.Windows.SDK 的辅助来调用 WindowsRuntime 方法.当前是 2021.10 此时的 Wind ...

  4. 012_DRC检查与处理

    Check entire design:DRC检查整个原理图: Check Selection:DRC检查选择的部分电路: Use occurrences:选择所有事件进行检查: Use instan ...

  5. gprMax电磁波正演模拟方法

    文章首发于:https://blog.zhaoxuan.site/archives/37.html: 第一时间获取最新文章请关注博客个人站:https://blog.zhaoxuan.site. 目录 ...

  6. The attempt was made from the following location: com.ruoyi.framework.config.ResourcesConfig.corsFilter(ResourcesConfig.java:57)

    报错信息: 8:42:12.529 [restartedMain] ERROR o.s.b.w.e.t.TomcatStarter - [onStartup,61] - Error starting ...

  7. Django RESTful API设计与实践指南

    title: Django RESTful API设计与实践指南 date: 2024/5/14 15:37:45 updated: 2024/5/14 15:37:45 categories: 后端 ...

  8. 用 C 语言开发一门编程语言 — 跨平台的可移植性

    目录 文章目录 目录 前文列表 实现跨平台的可移植性 使用预处理器指令 前文列表 <用 C 语言开发一门编程语言 - 交互式解析器l> 实现跨平台的可移植性 理想情况下,我希望我的代码可以 ...

  9. avue-crud字段之间的动态交互效果以及接口数据的获取赋值

    一.form表单下拉表单类型字段数据获取 1.通过配置系统字典接口获取数据并渲染 { label: "经纪人", prop: "broker", type: & ...

  10. NumPy 正态分布与 Seaborn 可视化指南

    正态分布(高斯分布) 简介 正态分布(也称为高斯分布)是一种非常重要的概率分布,它描述了许多自然和人为现象的数据分布情况.正态分布的形状呈钟形,其峰值位于平均值处,两侧对称下降. 特征 正态分布可以用 ...