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


16

在Windows Server 2008的管理中,服务器为某些域托管DNS(即名称服务器),并托管一些可公共访问的应用程序。

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

尝试禁用递归查询,但是发生了一些问题(未发送从本地应用发送的电子邮件,并且在本地运行的连接到第三方站点的应用无法解析该连接的域名等)。因此看来,源自服务器本身的DNS请求依赖于递归查询才能起作用。

有没有办法通过服务器上托管的DNS禁用递归查询,同时仍允许源自服务器的DNS查询正常工作?我想知道是否可以在本地DNS服务器上禁用递归查询,并将网络设置中的传出DNS设置为外部(例如8.8.8.8),这样传出DNS查询将首先进入该位置,而该服务器的DNS只会终止查询其实际在本地托管的域。

谢谢你的时间!

Answers:


11

不向整个Internet提供递归查找功能是个好主意,因此将DNS服务器配置为仅回答其权威的查询是Good Thing TM

它听起来像是你在最后一段所得出的结论,表面是一个很好的:配置服务器自己的TCP / IP设置,使用一台DNS服务器授权提供递归查询。DNS服务器进程不使用服务器计算机NIC上TCP / IP设置中配置的DNS服务器进行任何特别的操作。而是,它根据DNS服务器配置转发请求(或使用根提示)。

当服务器上运行的应用程序尝试查询域时,该机器上运行的DNS服务器对该请求具有权威性,最终,它将使该请求进入该机器上运行的DNS服务器进程,并且查询将得到答复。


14

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

没有Microsoft的DNS服务器,没有。

借助ISC的DNS服务器BIND,人们可以将各种事物与观点融合在一起。Microsoft的DNS服务器没有这种机制。因此,对于任何给定的Microsoft DNS服务器实例,都必须选择它是公共内容 DNS服务器还是站点本地代理 DNS服务器。它不能使事物变得僵化,并假装成为不同DNS客户端的不同类型的服务器。

安全测试服务/工具是正确的。这最好的做法是不能提供代理服务- 任何类型的代理服务:无论是HTTP代理服务,DNS代理服务,或SMTP提交服务-互联网其余outwith一个自己的网站。您非常应该拥有单独的服务器:内容DNS服务器,将有关您已注册域名的公共DNS数据发布给Internet上的每个人;还有一个本地代理DNS服务器,它代表您的LAN /组织的计算机完成查询解析的繁重工作,并且只能由您组织/ LAN上的计算机访问。使用Microsoft的DNS服务器,这并不是特别容易。

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

由于它不是域控制器,而仅仅是成员服务器,因此您无需要求计算机上的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服务。

进一步阅读


出色的写作。
Nic 2012年

我感谢你提供的这些信息,谢谢你!我在这里使用的是较小的基础结构,因此,在这种情况下,提出的解决方案是过分的。
ilasno 2012年

请注意,从Server 2016开始,这已不再适用-Windows现在支持裂脑DNS,其中包括一个根据客户端地址限制递归查找的选项。但是,为公共请求设置独立服务器仍然是更简单的选择。
鲍勃(Bob)

5

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

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


0

我最近遇到了同样的问题,我们的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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.