如何防止同一DNS服务器上的子域名“劫持”?

如何防止同一DNS服务器上的子域名“劫持”?

我试图了解 DNS 服务器如何(或是否)区分作为区域的子域设置和作为同一服务器上域区域内的记录的设置。

假设我要在 DNS 服务器上为某个域(例如 example.com)创建一个 DNS 区域。

如何阻止某人在同一服务器上创建另一个区域 test.example.com 并“劫持”该域的子域?

当向 test.example.com 的名称服务器发出 DNS 请求时,DNS 服务器是否会返回:

  • test.example.com 区域的主要 A 记录或
  • example.com 区域中的 test.example.com A 记录

(如果 test.example.com 的 A 记录在 example.com 中不存在,它将不会返回这样的记录或继续进入 test.example.com 的区域)

有没有办法在不将域移动到其自己的唯一名称服务器的情况下阻止子域区域响应?ZoneEdit 和 Amazon 的 Route53 等如何处理这个问题?

(如果子域名托管在单独的服务器上,则 example.com 的主区域必须将子域名委托给该单独的服务器,对吗?(根据这篇 Technet 文章)。

答案1

不确定绑定,但 Windows DNS 向上向下(首先评估 example.com)并且区域不会重新委托 test.example.com - 这就是结束(即 test.example.com 从未被询问)。

答案2

“如何阻止某人在同一台服务器上创建另一个区域 test.example.com 并‘劫持’该域的子域?”

好吧,如果他们可以这样做,他们也可以修改原始区域文件;一般来说,如果有人可以访问您的 DNS 服务器,他们就可以将 DNS 更改为他们想要的任何内容。

“当向 test.example.com 的名称服务器发出 DNS 请求时,DNS 服务器是否会返回:

The main A record of the test.example.com zone or
The test.example.com A record in the example.com zone"

与往常一样,答案是“这取决于您如何设置它”。如果服务器对 example.com 具有权威性,并且没有委托 test.example.com,它将按照配置的方式响应;从协议的角度来看,区域 test.example.com 具有 A 记录@和区域 example.com 具有 Atest记录没有区别。如果您问如果发生冲突会发生什么(例如,您在 example.com 区域文件中定义了 test.example.com,而您的恶意闯入者定义了 test.example.com 区域文件,那么,同样,他必须能够编写 named.conf 才能让 BIND 读取它,此时他可以做任何他想做的事情)。如果我没记错的话,Windows DNS 将拒绝加载冲突,BIND 将使用最后加载的内容运行(不过,我可能弄反了)。但无论哪种情况,对于想要将区域定义放入正在运行的名称服务器的人来说,他必须具有足够的访问权限,以便无论如何他都可以对您的 DNS 做任何他想做的事情。

答案3

这种控制需要在 BIND 之外进行,因为 BIND 本身没有这样的访问控制。

我正在寻找官方文档,但我相信 bind 与 named.conf 中定义的最具体的区域相匹配。

因此,区域将按照从最具体到最不具体的顺序进行处理。如果您为每个区域设置了唯一的区域:

host.sub.domain.com
sub.domain.com
domain.com

然后,将优先查找 a.host.sub.domain.com,而不是其他区域。

因此,要回答您的问题,您需要在区域编辑器中构建这种安全性或限制访问,以便用户只能编辑自己的区域文件。

我使用 cPanel/WHM 系统,它们对每个子域使用区域文件。WHM 面板强制执行必要的安全性,以防止用户劫持其他用户的区域。

相关内容