在典型的隐藏主 DNS 网络布局中,基本上有两个组件:
- 隐藏的主 DNS 服务器,可能位于 NAT 或防火墙后面,或者完全暴露
- 从属权威非递归 DNS 服务器
从属 DNS 服务器上的区域文件通常不包含(也不应该包含)有关此隐藏主 DNS 服务器的信息。但这些从属 DNS 服务器确实需要使用某些 DNS 选项,例如server
、allow-update
、allow-transfer
和一些 ACL。
虽然最初需要server
和allow-update
似乎需要 IP 地址匹配列表。这使得成为named.conf
此类隐身信息的主要来源(即隐藏主控的 IP 地址)。
是否可以通过使用密钥而不是使用文件中的任何 IP 地址来进一步限制将 IP 地址暴露给隐藏主 DNS 服务器named.conf
?
我正在寻找的关键答案是我们是否可以在配置文件级别以及区域数据库级别最大限度地减少隐藏主服务器的暴露。
答案1
从属 DNS 服务器上的区域文件通常没有(也不应该)此隐藏的主 DNS 服务器的信息。
他们可以在区域文件中设置 A 记录,以指向这个隐藏的 DNS 主服务器。该服务器之所以被称为“隐藏”,并不是因为没有人知道它,而是因为它没有使用 NS 记录在任何地方列出,因此客户端无法查询它们。
编辑:尝试从配置文件中避免对此隐藏主服务器的所有引用是没有意义的。一旦有人访问了此文件,系统就会假定他们无论如何都可以访问您的服务器,这听起来比他们知道您的隐藏主服务器的 IP 地址更成问题。
但是这些相同的从属 DNS 服务器确实需要使用某些 DNS 选项,如服务器、允许更新、允许传输和一些 ACL。
从属 DNS 服务器确实需要知道隐藏 DNS 服务器的存在。可以masters
仅使用密钥进行定义,然后masters
在allow-notify
etc 语句中引用这些密钥。这样,您就无需指定隐藏主服务器的 IP 地址。
该server
语句如下所示:
server <netprefix> {
...
};
因此它需要隐藏主机的 IP 地址。
然而,似乎诸如等语句allow-update
需要allow-transfer
一个address_match_list
which (BIND 9.11.4-P1 文档,第 51 页):
ip_addr
(...) 是一个或多个、ip_prefix
、key_id
或acl_name
元素的列表,请参见第 6.1 节。
因此,您只能在这些命令中输入密钥,而从配置的这些部分中排除隐藏主机的 IP 地址。