DNSrecursion是不安全的,但对于内部应用程序是必需的?

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

安全扫描表明DNSconfiguration是不安全的,因为它允许recursion查询。

尝试禁用recursion查询,但发生了一些问题(从本地应用程序发送的电子邮件未送达,连接到第三方站点的本地运行的应用程序无法parsing连接的域名等)。 所以看起来源自服务器本身的DNS请求依赖于recursion查询来运行。

有没有办法通过服务器上的DNS来禁用recursion查询,同时仍然允许在服务器上发起的DNS查询工作? 我想知道是否可以禁用本地DNS服务器上的recursion查询,并将networking设置中的传出DNS设置为外部(如8.8.8.8),以便传出的DNS查询首先到达那里,并且此服务器的DNS只会结束查询实际托pipe在本地的域。

谢谢你的时间!

不要为整个Internet提供recursion查找function,所以configurationDNS服务器只回答权威的查询是一件好事。

表面上,听起来好像在最后一段中已经达到的结论是一个很好的结论:configuration服务器自己的TCP / IP设置,以使用有权提供recursion查找的DNS服务器。 DNS服务器进程不使用在服​​务器计算机NIC上的TCP / IP设置中configuration的DNS服务器来进行特别的操作。 而是转发基于DNS服务器configuration的请求(或使用根提示)。

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

有没有办法通过服务器上的DNS来禁用recursion查询,同时仍然允许在服务器上发起的DNS查询工作?

不是与微软的DNS服务器,没有。

有了ISC的DNS服务器BIND,人们可以看到一些事情。 微软的DNS服务器没有这样的机制。 因此,对于任何给定的Microsoft DNS服务器实例,必须select是公共内容 DNS服务器还是本地代理 DNS服务器。 它不能将事物和假装成不同种类的服务器给不同的DNS客户端。

安全testing服务/工具是非常正确的。 最好的做法是不提供代理服务 – 任何types的代理服务:HTTP代理服务,DNS代理服务或SMTP提交服务 – 向自己的站点外的其他Internet提供服务。 你非常应该独立的服务器 :内容DNS服务器发布你的公共DNS数据,关于你已经注册的域名,在互联网上的每个人; 和本地代理DNS服务器,代表您的局域网/组织计算机执行查询parsing的繁琐工作,只有您的组织/您的局域网上的计算机可以访问该服务器。 使用微软的DNS服务器,这并不是特别容易。

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

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

但是,成员服务器计算机上的DNS客户端仍然必须使用内部代理DNS服务器。 您不能将其指向某个外部DNS服务器,如您的ISP,Google或其他任何不知道Active Directory在您的LAN上使用的DNS数据的其他方。 不过,您可以将计算机的DNS客户端指向一个或多个域控制器上的DNS服务器。 这是相当简单的,毕竟你已经在你局域网上的所有工作站上工作了。 您的成员服务器上的DNS客户端只需要像所有工作站上的DNS客户端一样进行configuration即可

假设您的计算机的DNS客户端没有使用机器上运行的DNS服务器进行代理DNS服务,那么您只需configurationMicrosoft的DNS服务器即可,不向任何人提供任何forms的代理DNS服务。

进一步阅读

  • Jonathan de Boyne Pollard(2000,2004,2007)。 “内容”和“代理”DNS服务器 。 经常给的答案。
  • Jonathan de Boyne Pollard(2000,2004,2007)。 代理服务器应该configuration为侦听的IP地址 。 经常给的答案。
  • Jonathan de Boyne Pollard(2003,2010)。 从哪里获得代理DNS服务 。 经常给的答案。
  • Jonathan de Boyne Pollard(2003)。 一次性DNS服务器软件提供内容DNS服务。 。 经常给的答案。
  • Jonathan de Boyne Pollard(2003)。 您的备用代理DNS服务器必须提供与您的主DNS名称空间相同的DNS名称空间视图。 。 经常给的答案。
  • 微软公司(2007-01-31)。 Windows 2000 Server和Windows Server 2003中的DNS客户端设置的最佳做法 。 ID 825036。
  • Nirmal Sharma(2007-09-23) DNS域中域控制器的SRVlogging 。 ID 556006. Microsoft支持。

正如Evan在他的回答中所述,您的应用程序需要使用服务器上的DNS客户端组件,该服务器完全独立于DNS服务器组件。 DNS服务器组件可以configuration为不执行recursion,只允许它回答提交给它的权威DNS域的查询。

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

我刚刚有同样的问题,我们的DNS服务器被用于放大攻击。 但我需要保持对其他内部服务器的recursion。

如果你有一个思科路由器,这是一个可能的修复。 我将外部DNS移至Cisco 7200VXR路由器,并将其configuration为只回复特定的DNS区域。 它将查询内部的DNS服务器,所以你不必在两个地方input一切。

这是我使用的思科configuration的一个片段:

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