我在 Linux 网络中拥有多个 Windows 系统,并配有 BIND9 DNS 和 Active Directory 域。我们不使用 Windows 域控制器进行 DNS。为了确保所有系统都在 DNS 中注册,我已向每个系统部署了一个脚本,该脚本使用 Windows nsupdate 二进制文件在 BIND 中注册 Windows 系统。这适用于台式机和笔记本电脑,并在网络状态发生变化时触发。
这里的担忧是,如果这些工作站上的 TSIG 密钥被泄露,任何内部记录都可能被更新或删除。我通过将脚本和密钥文件设置为仅由 SYSTEM 帐户读取来缓解此问题,并且所有系统都是带有启动引脚的 FDE。
组织中的主机名遵循可重复的约定,并且工作站始终以 W 开头。有没有办法限制 BIND9 中的主机密钥仅更新或添加具有此前缀的主机?
我想避免创建另一个区域来将工作站 tsig 密钥与其余帐户服务隔离,但这将是我的下一个选择。
答案1
您可以设置细粒度的 ACL 控制哪个键可以更新哪些记录。
这是通过update-policy
语句而不是来实现的allow-update
,参见BIND 手册。
update-policy { grant KEYNAME name RECORDNAME; ... };
密钥 KEYNAME 应安装在更新 RECORDNAME 的机器上。这是您请求的更细粒度的行为。您还可以使用通配符,即W*
代替 RECORDNAME,这应该完全按照您指定的工作方式进行。您还可以进一步限制更新,以仅允许更新某些 DNS RR 类型。
传统allow-update
行为是通过zonesub
规则类型实现的。
所有这些通常都使用 TSIG/GSS 而不是 PSK 进行配置,但这需要 Kerberos 部署。BIND 甚至可以使用 Windows 内置 DNS 更新程序提供的身份验证,该身份验证使用其机器域帐户(使用相同的机制,因为 AD 无论如何都是基于 Kerberos 的)。