DNS 递归不安全,但对于内部应用程序来说是必要的?

DNS 递归不安全,但对于内部应用程序来说是必要的?

在 Windows Server 2008 的管理中,该服务器托管一些域的 DNS(名称服务器),以及托管一些可公开访问的应用程序。

安全扫描表明 DNS 配置不安全,因为它允许递归查询。

尝试禁用递归查询,但出现了几个问题(本地应用程序发送的电子邮件未送达,本地运行的连接到第三方站点的应用程序无法解析连接的域名等)。因此,似乎源自服务器本身的 DNS 请求依赖递归查询来运行。

有没有办法禁用服务器上托管的 DNS 的递归查询,同时仍允许源自该服务器的 DNS 查询工作?我想知道我们是否可以禁用本地 DNS 服务器上的递归查询,并将网络设置中的传出 DNS 设置为外部地址(例如 8.8.8.8),以便传出 DNS 查询首先到达那里,并且该服务器的 DNS 最终只会查询它实际在本地托管的域。

谢谢你的时间!

答案1

最好不要向整个互联网提供递归查找功能,因此将您的 DNS 服务器配置为仅回答其有权处理的查询是一件好事

从表面上看,你在最后一段中得出的结论似乎很好:配置服务器自己的 TCP/IP 设置以使用 DNS 服务器授权提供递归查找。DNS 服务器进程不会将服务器计算机 NIC 上的 TCP/IP 设置中配置的 DNS 服务器用于任何特定用途。相反,它会根据 DNS 服务器配置转发请求(或使用根提示)。

当服务器上运行的应用程序尝试查询域时,该计算机上运行的 DNS 服务器对该请求具有权威性,最终将把该请求发送到该计算机上运行的 DNS 服务器进程并答复该查询。

答案2

有没有办法禁用服务器上托管的 DNS 的递归查询,同时仍允许服务器上发起的 DNS 查询正常工作?

微软的 DNS 服务器不存在。

使用 ISC 的 DNS 服务器 BIND,人们可以用视图来解决问题。Microsoft 的 DNS 服务器没有这样的机制。因此,对于任何给定的 Microsoft DNS 服务器实例,人们必须选择它是否是公共的内容DNS 服务器或站点本地代理人DNS 服务器。它不能弄虚作假,也不能对不同的 DNS 客户端假装是不同类型的服务器。

安全测试服务/工具非常正确。它不提供代理服务的最佳实践——任何代理服务类型:HTTP 代理服务、DNS 代理服务或 SMTP 提交服务 — 访问自己网站以外的互联网。应该单独的服务器:内容 DNS 服务器向 Internet 上的所有人发布有关您已注册域名的公共 DNS 数据;本地代理 DNS 服务器代表您的 LAN/组织的计算机执行查询解析的繁重工作,只有您组织/LAN 上的计算机才能访问。使用 Microsoft 的 DNS 服务器,这并不容易。

这将是尤其如果您的机器也是域控制器,那么这将非常困难。您声明这台机器可从整个 Internet 直接访问。如果这样的机器是域控制器,那么您应该重新考虑您的网络组织现在。您将向公众公开大量内部服务,而不仅仅是代理 DNS 服务。因此,让我们假设这不是域控制器。

由于它不是域控制器,而仅仅是成员服务器,你不需要 DNS客户在机器上应该使用机器自己的 DNS服务器(或者,最初是另一个域控制器的 DNS 服务器)用于代理 DNS 服务,域控制器的情况就是如此。如果这样做,您将无法关闭计算机 DNS 服务器上的代理 DNS 服务。幸运的是,它不是域控制器,并且其 DNS 客户端可以使用其他计算机(而不是其自身)来提供代理 DNS 服务。

成员服务器上的 DNS 客户端仍然必须使用内部的但是,您不能直接将其指向某个外部 DNS 服务器,例如您的 ISP、Google 或任何其他方提供的服务器,不知道 Active Directory 在您的 LAN 上使用的所有 DNS 数据。不过,您可以将计算机的 DNS 客户端指向一个或多个域控制器上的 DNS 服务器。这相当简单,而且毕竟您已经在所有域控制器上执行此操作工作站在您的 LAN 上。成员服务器上的 DNS 客户端只需配置就像你所有工作站上的 DNS 客户端一样

假设您机器的 DNS 客户端没有使用机器上运行的 DNS 服务器作为代理 DNS 服务,那么您只需将 Microsoft 的 DNS 服务器配置为不向任何人提供任何形式的代理 DNS 服务。

进一步阅读

答案3

正如 Evan 在他的回答中所述,您的应用程序需要使用服务器上的 DNS 客户端组件,该组件完全独立于 DNS 服务器组件。DNS 服务器组件可以配置为不执行递归,从而允许它仅针对其具有权威性的 DNS 区域回答提交给它的查询。

应用程序可以使用在相关 NIC 的 TCP/IP 属性中配置的 DNS 服务器,这些 DNS 服务器可以配置为使用任何将执行递归的 DNS 服务器(例如 Google 的 DNS 服务器)。在相关 NIC 的 TCP/IP 属性中配置的 DNS 服务器不需要指向在同一台服务器上运行的 DNS 服务器。

答案4

我最近也遇到了同样的问题,我们的 DNS 服务器被用于放大攻击。但我需要为我们的其他内部服务器保持递归。

如果您有 Cisco 路由器,这里有一个可能的解决方法。我将我们的外部 DNS 移至 Cisco 7200VXR 路由器,并将其配置为仅响应特定 DNS 区域。它将查询内部 DNS 服务器,这样您就不必在两个地方输入所有内容。

以下是我使用的 Cisco 配置片段:

ip dns view default
 dns forwarder 192.168.0.xx (internal DNS server)
 domain round-robin

ip dns view-list default
 view default 1
  restrict name-group 1

ip dns name-list 1 permit abc.com
ip dns name-list 1 permit def.com
ip dns name-list 1 permit anyotherdomainthatyouhost.com
ip dns name-list 1 permit 3.2.1.in-addr.arpa (needed for reverse PTR lookups)

interface fastethernet0/0 (the interface where the IP address is that will host DNS)
 ip dns view-group default
 ip address 1.2.3.4 secondary (use the public facing IP you will use to host DNS)

ip dns server

另外,不要忘记使用访问列表允许 DNS 数据包进入路由器,例如:

permit udp any host 1.2.3.4 eq domain

相关内容