使用Linux下的bind9替代WindowsAD中的WinDNS的方法

1 服务介绍

1.1 AD域简介

AD全称“Active Directory”,是微软开发的一套域服务。AD中管理了企业相关公共资源,通过统一的AD域账户就可以访问这些企业的相关公共资源。AD服务的基础是DNS服务和LDAP服务。

1.2 bind9介绍

bind9是有ISC开发的一套开源的DNS服务软件。是使用最为广泛的DNS服务软件,是DNS的事实标准。

2 替换方法

2.1 网络拓扑

在这里插入图片描述

2.2 bind9服务配置

2.2.1 源码编译安装bind9

2.2.1.1 下载源码

创建目录“/root/dns/”,并通过git命令从ISC代码仓库中下载bind9源码到该目录中。命令如下:

mkdir -p /root/dns/
cd /root/dns/
git clone https://gitlab.isc.org/isc-projects/bind9.git
2.2.1.2 编译源码

进入bind9的源码目录,并切换到“bind-9.14”分支。命令如下:

cd /root/dns/bind9/
git checkout bind-9.14

编译和安装。命令如下:

./configure --with-gssapi -without-python
make -j4
make install

2.2.2 配置bind9

2.2.2.1 配置文件

在目录“/etc/bind9/conf”中创建名称为“named.conf”的配置文件。配置文件内容根据区记录的更新操作(update)是否需要使用GSS-TSIG而有所不同。具体如下:

2.2.2.1.1 区数据update不使用GSS-TSIG

配置文件内容如下:

key "RNDC-KEY" {
	algorithm hmac-md5;
	secret "AqW9Iq1OERsgoQiQIzMulw==";
};
controls {
        inet 127.0.0.1 port 8832
        allow { 127.0.0.1; } keys {"RNDC-KEY";};
};
key "default" {
    algorithm hmac-md5;
    secret "80+CrjGHJZwQhSGGsGNB2g==";
};
view "default" {
    match-clients {key "default";  "any"; };
    zone "test.com." {
        check-names ignore;
        check-integrity no;
        type master;
        file "/etc/bind9/data/default/test.com.txt";
        allow-update {
            10.2.2.32;
        };
    };
    recursion yes;
};
2.2.2.1.2 区数据update使用GSS-TSIG

配置文件内容如下:

options {
    tkey-gssapi-keytab "/etc/bind9/conf/krb5.keytab";
};
key "RNDC-KEY" {
	algorithm hmac-md5;
	secret "AqW9Iq1OERsgoQiQIzMulw==";
};
controls {
        inet 127.0.0.1 port 2953
        allow { 127.0.0.1; } keys {"RNDC-KEY";};
};
key "default" {
    algorithm hmac-md5;
    secret "80+CrjGHJZwQhSGGsGNB2g==";
};
view "default" {
    match-clients {key "default";  "any"; };
    zone "test.com." {
        check-names ignore;
        check-integrity no;
        type master;
        file "/etc/bind9/data/default/test.com.txt";
        update-policy {
            grant TEST.COM ms-self AD-DC.test.com. ANY;
            grant TEST.COM ms-subdomain test.com. SRV CNAME A AAAA;
        };
    };
    recursion yes;
};
2.2.2.2 区文件

在目录“/etc/bind9/data/default/”中为区“test.com.”创建名称为“test.com.txt”的区文件。区文件内容如下:

$ORIGIN .
$TTL 3600	; 1 hour
test.com		IN SOA	ns.test.com. mail.test.com. (
				37         ; serial
				28800      ; refresh (8 hours)
				3600       ; retry (1 hour)
				604800     ; expire (1 week)
				1800       ; minimum (30 minutes)
				)
			NS	ns.test.com.
$ORIGIN test.com.
ns			A	10.2.2.35

2.2.3 启动bind9

执行命令“named -c /etc/bind9/conf/named.conf -g”启动bind9的DNS服务。运行结果如下截图所示
在这里插入图片描述

2.3 Window DC服务配置

2.3.1 安装AD域控制器

步骤如下

  • 点击“开始”按钮;
  • 点击“控制面板”;
  • 点击“程序和功能”;
  • 点击左侧栏位处的“启用或关闭Windows功能”;
  • 然后一直点击“下一步”,直到服务器“服务器角色”选择页面中,勾选“Active
    Directory域服务
    ”,并点击“添加功能”。详见下图:
    在这里插入图片描述
  • 接下来一直点击“下一步”,最后点击“安装”按钮进行“Active Directory域服务“安装AD域服务。详见下图:
    在这里插入图片描述
  • 最后等待“Active Directory域服务”安装完成即可(这需要耗费一定的时间,需要耐心等待,且这期间WindowsServer可能会自动重启)。安装成功后,点击“关闭”按钮完成“Active Directory域服务”的安装。详见下图:
    在这里插入图片描述

2.3.2 配置AD域控制器

步骤如下:

  • 点击“开始”按钮;
  • 点击“服务器管理器”;
  • 点击左侧栏位的“AD DC”,然后点击“更多”配置“Active Directory域服务”的相关服务。详见下图:
    在这里插入图片描述
  • 在弹出的界面中点击“将此服务器提升为域控制器”。详见下图:
    在这里插入图片描述
  • 选择“添加新林(F)”,并创建名称为“TEST.COM”根域名,然后点击“下一步”按钮(根域名创建需要花费一定时间,需要耐心等待)。详见下图:
    在这里插入图片描述
  • 输入“目录服务还原模式(DSRM)”的密码2次(密码格式为,包含:大写字母、小写字母、特殊字符、数字4种类型中至少包含3种类型,且长度不少于8个字符),然后点击“下一步”按钮。详见下图:
    在这里插入图片描述
  • 接下来使用默认选项一直点击“下一步”,直到“先决条件检查”中点击“安装”按钮进行安装。详见下图:
    在这里插入图片描述
  • 现在你只需静静等待安装完成即可,此期间可能会自动重启系统(因为安装了新服务,重启时需要配置相应的系统配置,所以系统重启的时间会稍微长些)。

2.3.3 替代WinDNS

通过上面的配置完成后,AD-DC服务器上已经成功创建了名称为“TEST.COM”的AD域。
由于AD域是通过DNS域名作为服务发现和管理的,所以AD-DC默认启用了WindowsServer自带的WinDNS服务,并在该DNS上创建了2个DNS正向区“TEST.COM”和“_msdcs.TEST.COM”(详见下图)。这2个正向区将会被AD域控制器用于向整个AD域发布AD域中存在的相关服务的域名和记录信息。
在这里插入图片描述
我们想要使用bind9替代AD域控制器使用的WinDNS,主要包含2个步骤:

  • 停用WindowsServer上的DNS服务;
  • 设置AD域服务器设备上的DNS为bind9所在服务器。

如果想要配置DNS的区记录更新使用GSS-TSIG,则还需在AD域服务器上为bind9生成Kerberos相关密钥对,并导出密钥对到keytab,最后将keytab导入bind9所在服务器的指定目录中。

2.3.3.1 停用WinDNS服务

停用WinDNS服务步骤如下:

  1. 点击“开始”按钮;
  2. 选择“Windows管理工具“;
  3. 选择“服务”;
  4. 在“服务”中找到“DNS Server”服务,将DNS Server的“启动类型(E)”设置为“禁用”,并“停止”正在运行的DNS Server服务,最后“应用”和“确定”即可。详见下图:
    在这里插入图片描述
2.3.3.2 替换DNS服务为bind9

接下来需要将AD域控制器使用的DNS服务的IP地址替换为bind9所在服务器的IP地址。步骤如下:

  1. 点击“开始”按钮;
  2. 选择“控制面板”;
  3. 选择“网络和共享中心”;
  4. 选择“更改适配器配置”;
  5. 选择相应网卡,并右键选择“属性”选项,进入网卡的属性配置;
  6. 在网卡属性中,将网卡的“Internet协议版本4(TCP/IPv4)”中的“首选DNS服务器§”配置为bind9所在服务器的IPv4地址“10.2.2.35”。
    在这里插入图片描述

通过上面的配置后,已经成功将AD域控制器使用的DNS服务替换成了bind9了。

2.3.3.3 启用GSS-TSIG

虽然通过上面2个主要步骤后,已经将AD域控制器使用的DNS服务替换成了bind9。但是,此时AD域控制器更新bind9中的“TEST.COM”和“_msdcs.TEST.COM”区的区记录仍然使用的是普通模式。
想要区记录更新使用GSS-TSIG,则还需要为bind9所在的DNS服务器创建一个AD账户,并关联一个Kerberos的PRINCIPAL(凭证)。最后将该PRINCIPAL的密钥对内容导出到一个keytab中,将keytab传输到bind9所在服务器的对应目录中。

2.3.3.3.1 创建AD账户

在AD DC中创建为DNS服务器创建一个AD账户dns1。步骤如下:

  • 点击“开始”按钮;
  • 点击“服务器管理器”;
  • 点击右上侧栏位的“工具(T)”,然后点击“Active Directory用户和计算机”。详见下图:
    在这里插入图片描述
  • 在“TEST.COM”域中,依次:右键点击“Users”、左键点击“新建(N)”、左键点击“用户”,进入用户创建流程。
    在这里插入图片描述
  • 输入AD账户的名称为dns1,然后点击“下一页(N)”。详见下图
    在这里插入图片描述
  • 配置AD账户的密码和密码选项(这里将账户的密码设置为“Test@AwRt148”了),并点击“下一页(N)”。详见下图
    在这里插入图片描述
  • 最后点击“完成”按钮,完成AD账户dns1的创建。详见下图
    在这里插入图片描述
2.3.3.3.2 AD账户关联SPN
  • 依次点击“开始” => 右键点击“命令提示符” => “更多” => “以管理员身份运行”,以管理员权限打开命令行终端。如下图所示
    在这里插入图片描述
  • 通过setspn命令将一个Kerberos的PRINCIPAL账户DNS/ns.test.com@TEST.COM同AD账户dns1关联起来。如下图所示
    在这里插入图片描述
2.3.3.3.3 创建 Kerberos PRINCIPAL,导出密钥到 keytab

使用ktpass命令创建一个Kerberos的PRINCIPAL账户,并为其设置密码为“Test@AwRt148”,同时将该账户的密钥内容导出到名为ns.test.com.keytab的密钥文件中。如下图所示
在这里插入图片描述
最后将导出的keytab文件传输到bind9服务器(10.2.2.35)的目录“/etc/bind9/conf/“中,并重命名为“/etc/bind9/conf/krb5.keytab”。

2.3.4 效果验证

2.3.4.1 重启DC的netLogon服务

在AD DC服务器上,通过管理员权限运行“命令行终端”。通过“net stop netLogon”+“net start netLogon”命令重启netLogon服务。如下图所示
在这里插入图片描述
netLogon服务重启时,DC服务会将AD域中的相关服务的DNS域名信息通过DNS的update协议更新到DNS服务器(这里是10.2.2.35的bind9服务器)。具体的bind9的相关日志,如下图所示:
在这里插入图片描述
通过抓包发现AD DC服务器会先尝试使用不带TSIG的DNS update协议更新DNS服务器的区记录。这时bind9侧由于配置了启用GSS-TSIG来更新区记录,则会返回“Refused”错误码。AD DC服务器收到“Refused”的错误码后,会通过DNS的TKEY协议和DNS服务器协商一个TSIG的key出来。最后AD DC会使用新协商的key来签名update的DNS报文(携带TSIG),从而update成功(返回NOERROR)。抓包详见如下截图
在这里插入图片描述

3 遇到的一些坑儿

3.1 问题1——权限不够

3.1.1 问题现象

我们在配置完AD域控制器后,想要修改“网络和Internet设置”中网卡的相关配置参数时,发现系统的管理员账户居然没有操作权限。报告了如下图所示的错误:
在这里插入图片描述

3.1.2 解决方案

本问题的解决方案是,启用“内置管理员的批准模式”。具体步骤如下:

  1. 点击“开始”按钮;
  2. 选择“服务器管理器”;
  3. 在“服务器管理器”中依次选择“工具”=>“本地安全策略”(详见下图);
    在这里插入图片描述
  4. 在“本地安全策略”中依次选择“本地策略”=>“安全选项”=>“用户账户控制:用户内置管理员账户的管理员批准模式”(双击进入)。最后依次选择“已启用”=>“应用”=>“确定”即可。详见下图:
    在这里插入图片描述
  5. 最后重启系统,本问题解决。

3.2 问题2——旧的凭证数据有残留

3.2.1 问题现象

3.2.2 解决方案

3.3 问题3——时钟差异导致TKEY协商失败

3.3.1 问题现象

3.3.2 解决方案

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值