¿La recursividad de DNS es insegura, pero necesaria para aplicaciones internas?

16

En la administración de un Windows Server 2008, el servidor aloja DNS (es el servidor de nombres) para algunos dominios, así como también aloja algunas aplicaciones que son de acceso público.

Un análisis de seguridad ha indicado que la configuración de DNS no es segura, ya que permite consultas recursivas.

Se intentó deshabilitar las consultas recursivas, pero se produjeron varios problemas (los correos electrónicos enviados desde aplicaciones locales no se entregaron y una aplicación que se ejecuta localmente que se conecta a un sitio de terceros no pudo resolver el nombre de dominio para la conexión, etc.). Por lo tanto, parece que las solicitudes DNS que se originan en el servidor dependen de consultas recursivas para funcionar.

¿Hay alguna forma de deshabilitar las consultas recursivas del DNS alojado en el servidor y al mismo tiempo permitir que funcionen las consultas DNS que se originan en el servidor? Me pregunto si podemos deshabilitar las consultas recursivas en el servidor DNS local y establecer el DNS saliente en la configuración de red en algo externo (como 8.8.8.8), de modo que las consultas DNS salientes irían allí primero, y el DNS de este servidor solo terminaría hasta ser consultado por los dominios que en realidad aloja localmente.

¡Gracias por tu tiempo!

ilasno
fuente

Respuestas:

11

Es una buena idea no proporcionar una funcionalidad de búsqueda recursiva a todo Internet, por lo que configurar su servidor DNS para que solo responda consultas para las que tiene autoridad es Good Thing TM .

En la superficie, parece que la conclusión a la que llegó en su último párrafo es buena: configure los propios ajustes TCP / IP del servidor para usar un servidor DNS que esté autorizado para proporcionar búsquedas recursivas. El proceso del Servidor DNS no utiliza los servidores DNS configurados en la configuración de TCP / IP en la NIC de la computadora del servidor para nada en particular. Más bien, reenvía solicitudes (o utiliza sugerencias de raíz) en función de la configuración del servidor DNS.

Cuando las aplicaciones que se ejecutan en el servidor intentan buscar dominios, el Servidor DNS que se ejecuta en esa máquina tiene autoridad para la solicitud, en última instancia, llegará al proceso del Servidor DNS que se ejecuta en esa máquina y la consulta será respondida.

Evan Anderson
fuente
14

¿Hay alguna forma de deshabilitar las consultas recursivas del DNS alojado en el servidor y al mismo tiempo permitir que funcionen las consultas DNS que se originan en el servidor?

No con el servidor DNS de Microsoft, no lo hay.

Con el servidor DNS de ISC, BIND, uno podría organizar cosas con vistas. El servidor DNS de Microsoft no tiene dicho mecanismo. Entonces, para cualquier instancia dada del servidor DNS de Microsoft, uno tiene que elegir si es un servidor DNS de contenido público o un servidor DNS proxy local . No puede organizar cosas y pretender ser diferentes tipos de servidores para diferentes clientes DNS.

El servicio / herramienta de prueba de seguridad es bastante correcto. Es una buena práctica no proporcionar el servicio de proxy, ningún tipo de servicio de proxy: ya sea el servicio de proxy HTTP, el servicio de proxy DNS o el servicio de envío SMTP, al resto de Internet fuera del propio sitio. Gracias debe tener servidores separados : un servidor DNS contenido de la publicación de sus datos DNS público, acerca de sus nombres de dominio que se han registrado, a todo el mundo en Internet; y un servidor DNS proxy local, que realiza el trabajo de resolución de consultas en nombre de las computadoras de su LAN / organización, al que solo pueden acceder las máquinas de su organización / LAN. Con el servidor DNS de Microsoft, esto no es particularmente fácil.

Sería especialmente difícil si su máquina fuera también un controlador de dominio. Usted declara que esta máquina es directamente accesible desde toda Internet. Si dicha máquina es un controlador de dominio, entonces debería repensar su organización de red ahora . Expondrías una gran cantidad de servicios internos al público, no solo el servicio de proxy DNS. Así que trabajemos bajo la presunción de que este no es un controlador de dominio.

Dado que no es un controlador de dominio, y es simplemente un servidor miembro , no tiene el requisito de que el cliente DNS en la máquina use el servidor DNS de la máquina (o, inicialmente, el servidor DNS de otro controlador de dominio) para proxy Servicio DNS, ese es el caso de los controladores de dominio. Si lo hubiera hecho, no podría desactivar el servicio de proxy DNS en el servidor DNS de la máquina. Afortunadamente, no es un controlador de dominio, y su cliente DNS puede usar alguna otra máquina para el servicio DNS proxy, no por sí mismo.

Sin embargo, el cliente DNS en la máquina del servidor miembro todavía tiene que usar un servidor DNS proxy interno . No puede simplemente apuntarlo a un servidor DNS externo como los proporcionados por su ISP, Google o cualquier otra parte que no conozca todos los datos DNS que Active Directory está utilizando en su LAN . Sin embargo, puede apuntar el cliente DNS de la máquina al servidor DNS en uno o más de sus controladores de dominio. Esto es bastante simple y, después de todo, es lo que está haciendo en todas sus estaciones de trabajo en su LAN. El cliente DNS en su servidor miembro simplemente debe configurarse como lo están los clientes DNS en todas sus estaciones de trabajo .

Dado que el cliente DNS de su máquina no está utilizando el servidor DNS que se ejecuta en la máquina para el servicio DNS proxy, simplemente configura el servidor DNS de Microsoft para que no proporcione el servicio DNS proxy de ninguna forma a nadie.

Otras lecturas

JdeBP
fuente
Excelente redacción.
Nic
¡Aprecio la información, gracias! Estoy trabajando con una infraestructura más pequeña aquí, por lo que la solución presentada es excesiva para este escenario.
ilasno
Solo una nota rápida de que esto ya no es cierto a partir de Server 2016: Windows ahora admite DNS de cerebro dividido , incluida una opción para restringir la búsqueda recursiva según la dirección del cliente. Sin embargo, configurar un servidor independiente para solicitudes públicas sigue siendo la opción más sencilla.
Bob
5

Como dijo Evan en su respuesta, sus aplicaciones deben usar el componente de cliente DNS en el servidor, que es totalmente independiente del componente del servidor DNS. El componente del servidor DNS se puede configurar para que no realice recursividad, lo que le permite responder consultas enviadas solo para las zonas DNS para las que tiene autoridad.

Las aplicaciones pueden usar los servidores DNS configurados en las propiedades TCP / IP de la NIC relevante, que se puede configurar para usar cualquier servidor DNS que realice recursividad (como los servidores DNS de Google). Los servidores DNS configurados en las propiedades TCP / IP de la NIC relevante no necesitan apuntar al servidor DNS que se ejecuta en ese mismo servidor.

joeqwerty
fuente
0

Recientemente tuve el mismo problema y nuestro servidor DNS estaba siendo utilizado para ataques de amplificación. Pero necesito mantener la recursividad en nuestros otros servidores internos.

Si tiene un enrutador Cisco, aquí hay una posible solución. Moví nuestro DNS externo a un enrutador Cisco 7200VXR y lo configuré para responder solo a zonas DNS específicas. Consultará los servidores DNS internos para que no tenga que ingresar todo en dos lugares.

Aquí hay un fragmento de la configuración de Cisco que utilicé:

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

Además, no olvide permitir que los paquetes DNS ingresen al enrutador con una lista de acceso, como:

permit udp any host 1.2.3.4 eq domain
Brain2000
fuente