Dirección IP privada en DNS público

62

Tenemos un único servidor de correo SMTP detrás de un firewall que tendrá un registro público de correo. . La única forma de acceder a este servidor de correo es desde otro servidor detrás del mismo firewall. No ejecutamos nuestro propio servidor DNS privado.

¿Es una buena idea usar la dirección IP privada como un registro A en un servidor DNS público, o es mejor mantener estos registros del servidor en el archivo de host local de cada servidor?

Geoff Dalgas
fuente

Respuestas:

62

Algunas personas dirán que ningún registro DNS público debería revelar direcciones IP privadas ... con la idea de que estás dando a los posibles atacantes una ventaja sobre alguna información que pueda ser necesaria para explotar sistemas privados.

Personalmente, creo que la ofuscación es una forma pobre de seguridad, especialmente cuando hablamos de direcciones IP porque en general son fáciles de adivinar de todos modos, por lo que no veo esto como un compromiso de seguridad realista.

La consideración más importante aquí es asegurarse de que sus usuarios públicos no recojan este registro DNS como parte de los servicios públicos normales de su aplicación alojada. es decir: las búsquedas de DNS externo de alguna manera comienzan a resolverse en una dirección a la que no pueden acceder.

Aparte de eso, no veo una razón fundamental por la cual poner registros de la dirección privada A en el espacio público es un problema ... especialmente cuando no tienes un servidor DNS alternativo para alojarlos.

Si decide colocar este registro en el espacio DNS público, puede considerar crear una zona separada en el mismo servidor para contener todos los registros "privados". Esto hará más claro que están destinados a ser privados ... sin embargo, para un solo registro A, probablemente no me molestaría.

Jeff alto
fuente
+1, ver comentario a la respuesta de womble por la razón :)
Mihai Limbăşan 05 de
2
Este es un buen ejemplo de un problema con esta idea: merit.edu/mail.archives/nanog/2006-09/msg00364.html
sucuri
¿Sigue siendo válido este consejo si tiene servidores sensibles con direcciones IP públicas, pero detrás de un firewall que restringe el acceso? Si el DNS público para las direcciones IP públicas proporciona una hoja de ruta de la infraestructura, ¿no es útil para un atacante? Identificación del anfitrión?
Kenny
@Kenny Sí, en teoría esto tiene algún uso, pero es información que no es difícil de obtener porque el rango de direcciones IP públicas se puede descubrir fácilmente de todos modos. En cierto modo, abordé esto en la respuesta y, añadiendo a esa noción, argumentaría que si usted depende de ocultar direcciones IP o nombres de host como cualquier tipo de línea de defensa material, ya tiene problemas mucho más grandes.
Alto Jeff
1
@ Kenny A su punto, es ciertamente deseable minimizar la cantidad de información que se puede descubrir públicamente y no querría revelar algo que no necesitaba o que al menos no tenía algún tipo de buen costo / beneficio comercial fuera involucrado para considerarlo. No hay discusión allí. Aparte de eso, el núcleo de mi punto (y creo que estamos de acuerdo) fue simplemente que esa ofuscación es una forma pobre de seguridad y que no hay absolutamente buenos / malos, sino solo un continuo de compensaciones de costo / beneficio para ser considerado caso por caso dependiendo de su tolerancia al riesgo, etc.
Tall Jeff
36

Tuve una larga discusión sobre este tema en la lista NANOG hace un tiempo. Aunque siempre pensé que era una mala idea, resulta que no es tan mala en la práctica. Las dificultades provienen principalmente de las búsquedas de rDNS (que para direcciones privadas simplemente no funcionan en el mundo exterior), y cuando proporciona acceso a las direcciones a través de una VPN o similar, es importante asegurarse de que los clientes VPN estén protegidos adecuadamente de Tráfico de "fuga" cuando la VPN está inactiva.

Yo digo ve por ello. Si un atacante puede obtener algo significativo de poder resolver nombres en direcciones internas, tiene mayores problemas de seguridad.

womble
fuente
1
+1, gracias por ser una voz sensata en todas las respuestas de FUD a esta pregunta. "Riesgo de seguridad" en mis regiones dorsales inferiores, y ver problemas de enrutamiento y problemas de DNS en una sola reacción de "no lo hagas" simplemente me hace preguntarme sobre la competencia de las personas que manejan redes en todo el lugar.
Mihai Limbăşan
1
Corrección: Haga que "ver problemas de enrutamiento y problemas de DNS y problemas de autenticación / identidad coludidos".
Mihai Limbăşan
8

En general, la introducción de direcciones RFC1918 en el DNS público causará confusión, si no un problema real, en algún momento en el futuro. Use direcciones IP, registros de host o una vista de DNS privada de su zona para usar las direcciones RFC1918 detrás de su firewall, pero no las incluya en la vista pública.

Para aclarar mi respuesta basada en la otra respuesta presentada, creo que introducir las direcciones RFC1918 en el DNS público es un paso en falso, no un problema de seguridad. Si alguien me llama para solucionar un problema y me encuentro con direcciones RFC1918 en su DNS, empiezo a hablar muy lentamente y les pregunto si se han reiniciado recientemente. Tal vez eso es esnobismo de mi parte, no lo sé. Pero como dije, no es algo necesario y es probable que cause confusión y falta de comunicación (humana, no informática) en algún momento. ¿Por qué arriesgarse?

jj33
fuente
1
¿Qué problemas reales son estos? ¿De qué manera se confundirá la gente?
womble
2
Entonces es ... cortés ... ¿no poner las direcciones de 1918 en el DNS público? He encontrado muchos problemas que han causado las zonas DNS "ocultas" y de "horizonte dividido", pero no tantas causadas por IP privada en DNS público. Simplemente no veo el problema.
womble
2
@womble, las computadoras pueden confundirse si por alguna razón intentan conectarse a ese host fuera de su red y en lugar de obtener el servidor SMTP, esperaban que obtuvieran lo que estaba viviendo en esa dirección IP en la LAN a la que estaban conectados actualmente. Incluso podría ser que uno de los miembros de su personal que usa una computadora portátil en un control remoto pueda comenzar a arrojar el nombre de usuario y la contraseña en texto plano en la red de otra persona solo porque también tienen 192.168.1.1
Zoredache
16
El problema que tengo con su respuesta es que alude a problemas, pero no proporciona ningún detalle. Si hay razones para no hacerlo, quiero saber sobre ellas, para poder tomar una decisión completamente razonada sobre el tema.
womble
1
@Zoredache: ¿Por qué alguien resuelve un nombre al que no tiene acceso? DNS no es el único lugar donde podría conseguir direcciones privadas, de todos modos - HTML puede usar literales IP, por ejemplo ...
womble
5

No, no coloque sus direcciones IP privadas en el DNS público.

En primer lugar, filtra información, aunque es un problema relativamente menor.

El peor problema si sus registros MX apuntan a esa entrada de host en particular es que cualquier persona que intente enviarle correo recibirá, en el mejor de los casos, tiempos de espera de entrega de correo.

Dependiendo del software de correo del remitente, pueden obtener rebotes.

Peor aún, si está utilizando el espacio de direcciones RFC1918 (que debería, dentro de su red) y el remitente también lo está, hay muchas posibilidades de que intenten enviar el correo a su propia red.

Por ejemplo:

  • la red tiene un servidor de correo interno, pero no tiene un DNS dividido
  • admin, por lo tanto, coloca las direcciones IP públicas e internas en el DNS
  • y los registros MX apuntan a ambos:

 $ORIGIN example.com
 @        IN   MX    mail.example.com
 mail     IN   A     192.168.1.2
          IN   A     some_public_IP

  • alguien que vea esto podría intentar conectarse a 192.168.1.2
  • el mejor de los casos, rebota, porque no tienen ruta
  • pero si también tienen un servidor usando 192.168.1.2, el correo irá al lugar equivocado

Sí, es una configuración rota, pero he visto esto (y peor) suceder.

No, no es culpa de DNS, solo está haciendo lo que se le dice.

Alnitak
fuente
¿Cómo es la entrega de correo a la máquina incorrecta un problema de DNS? Debe autenticar el servidor SMTP. Ese es un problema de configuración SMTP que no tiene absolutamente nada que ver con DNS. Aquí ni siquiera estás comparando manzanas con naranjas, estás comparando una tostada con mantequilla radioactiva con cinco miligramos de derivados lagrangianos en un palo. Si le preocupa obtener el resultado incorrecto de MX o A, debe usar DNSSEC en lugar de responsabilizar a DNS de lo que no es responsable, y si entrega SMTP por error al número RFC1918 incorrecto, ha configurado o diseñado mal su red.
Mihai Limbăşan
(encomendado para aclaración)
Mihai Limbăşan
Si alguien en su red "inventó" un número de IP, entonces el protocolo de IP funciona exactamente como se diseñó, es decir, sin tener en cuenta la seguridad. Lo que está preguntando es "¿cómo puedo confiar en que realmente estoy hablando con quien sea que deba hablar?" y la respuesta a eso no puede ser entregada por IP y / o por DNS, la respuesta a eso es entregada por DNSSEC y / o SSL / TLS y / o un mecanismo de capa de aplicación.
Mihai Limbăşan
Basta con leer su comentario al post de Dave - hacer tu post tiene más sentido ahora :) sigo en desacuerdo con la premisa, pero no creo que sea irracional ya ...
Mihai Limbăşan
2
no, no se trataba de autenticación en absoluto, solo de conexiones que terminaban en el lugar equivocado. Vi mucho de eso cuando Verisign decidió comodín * .com en ~ 2001.
Alnitak
3

Aunque la posibilidad es remota, creo que puede estar preparándose para algunos ataques MITM.

Mi preocupación sería esta. Digamos que uno de sus usuarios con un cliente de correo configurado para apuntar a ese servidor de correo lleva su computadora portátil a otra red. ¿Qué sucede si esa otra red también tiene el mismo RFC1918 en uso? Esa computadora portátil puede intentar iniciar sesión en el servidor smtp y ofrecer las credenciales del usuario a un servidor que no debería tenerla. Esto sería particularmente cierto ya que dijiste SMTP y no mencionaste que estabas requiriendo SSL.

Zoredache
fuente
Si el usuario tiene una computadora portátil que usa en su oficina y en cualquier otro lugar, es probable que haya configurado su archivo de hosts para apuntar a la IP interna del MTA o que haya usado la IP directamente en su configuración MUA. Mismo resultado final. Trae IPv6 y la muerte de RFC1918, es la única manera de estar seguro ...
womble
Excelente punto Zoredache. Este es un vector de ataque interesante. Dependiendo del MUA, podría presentar el cuadro de diálogo habitual "algo molesto que sucedió, haga clic en mí para hacer lo que quería que hiciera en primer lugar", o podría fallar directamente si el certificado SSL no coincide.
Dave Cheney
¿Se elimina efectivamente este escenario de ataque si todos los servidores (es decir, web / HTTPS, IMAP y SMTP) en la red válida requieren conexiones de cliente basadas en SSL / TLS?
Johnny Utahh
@JohnnyUtahh, bueno, necesita que todos los servidores admitan TLS, con certificados válidos y que todos los clientes estén configurados para verificar los certificados, y nunca intente una conexión que no sea TLS. Cuál es un defecto más común ahora, entonces hace 10 años. Pero todavía hay software viejo / estúpido que podría intentar conexiones que no sean TLS.
Zoredache
Sí, todo tiene sentido, gracias @Zoredache.
Johnny Utahh
3

Sus dos opciones son / etc / hosts y poner una dirección IP privada en su zona pública. Yo recomendaría lo primero. Si esto representa una gran cantidad de hosts, debería considerar ejecutar su propio resolutor internamente, no es tan difícil.

Dave Cheney
fuente
1
Esa es ciertamente una opción, pero ¿por qué? ¿Qué significa ejecutar una resolución interna o (mucho más inteligente) usar algo como las vistas BIND además de la carga administrativa y la carga de mantenimiento? Eso es lo que no entiendo.
Mihai Limbăşan
1
Ejecutar su propio servidor de nombres no es ciencia espacial. Si su red es de un tamaño suficiente que considera usar / etc / hosts como un truco o consume mucho tiempo, entonces necesita configurar un par de resolvers en su red. Como beneficio adicional, reduce la cantidad de tráfico dns que sale de su red y acelera la resolución de consultas comunes.
Dave Cheney
3
Sé que no es ciencia espacial, pero es una sobrecarga de mantenimiento y un riesgo potencial de seguridad. Ciertamente, un mayor riesgo de seguridad que filtrar la existencia de una red RFC1918. El tráfico de DNS es completamente insignificante: alojo más de 80 archivos de zona moderadamente grandes y ocupados en mi DNS en el trabajo y el tráfico semanal de DNS es menos de 2 minutos de Youtube. Acelerar la resolución de la consulta es en realidad el primer argumento medio sensata contra los números RFC1918 en DNS que he visto aquí :) Votado por pensar realmente un poco más allá de la reacción habitual "oh, no, es un riesgo de seguridad" :)
Mihai Limbăşan
1
@Alnitak: entiendo de dónde vienes, pero eso todavía no es un problema de DNS, y mantengo que tratar de solucionar problemas que se originan en otro lugar a través de DNS no es una buena idea. Los problemas deben solucionarse en la fuente, no parchearse mediante ataques de DNS: los ataques hacen que las redes sean frágiles.
Mihai Limbăşan
2
Bueno, sí, estoy de acuerdo. Y poner la información de su host privado en el DNS público es una solución de hackeo para el problema de no tener un servidor DNS interno ... :) El problema es que las capas superiores no saben que se supone que esta información es "privada" .
Alnitak
2

Puede haber problemas sutiles con él. Una de ellas es que las soluciones comunes a los ataques DNS Rebind filtran las entradas DNS locales resueltas de los servidores DNS públicos. Por lo tanto, puede abrirse para volver a vincular los ataques, o las direcciones locales no funcionan o requieren una configuración más sofisticada (si su software / enrutador lo permite).

Nikola Toshev
fuente
¡El enlace DNS +1 es malo! medium.com/@brannondorsey/…
Ohad Schneider
1

Es mejor mantenerlo en el archivo de hosts. Si se supone que solo una máquina se conecta a ella de todos modos, ¿qué gana al ponerla en un DNS público?

sh-beta
fuente
Trabajando en la nube podrías tener miles de máquinas privadas. Hace unos años, Netflix dijo que tenían más de 2,000 nodos de Cassandra. No es práctico usar el /etc/hostsarchivo porque las 2,000 máquinas necesitan administrar estos pares de IP / nombre ...
Alexis Wilke
1

Si por privado te refieres a 10.0.0.0/8, 192.168.0.0/16 o 172.16.0.0/12, entonces no lo hagas . La mayoría de los enrutadores de Internet lo reconocen por lo que es: una dirección privada que nunca debe enrutarse a Internet pública de manera directa , que es lo que ayudó a la popularidad de NAT. Cualquiera que intente ponerse en contacto con su servidor DNS público recuperará la dirección IP privada del DNS, solo para enviar un paquete a ... en ninguna parte. A medida que su conexión intenta atravesar Internet hacia su dirección privada, algunos enrutadores (configurados de manera sensata) en el camino simplemente se comerán el paquete con vida.

Si desea recibir un correo electrónico del "exterior" para entrar "dentro", en algún momento, el paquete debe cruzar su firewall. Sugeriría configurar una dirección DMZ para manejar esto: una única dirección IP pública que esté estrictamente controlada por cualquier enrutador / firewall que tenga instalado. La configuración existente que describe suena como si fuera exactamente eso.

EDITAR: aclaración de intenciones ... (ver comentarios a continuación). Si esto no tiene sentido, votaré para eliminar mi propia publicación.

Avery Payne
fuente
3
Todo eso es bueno y cierto, pero no ha dado una razón real de por qué no se deben publicar direcciones RFC1918 en DNS. Acaba de describir qué son las direcciones RFC1918 y que es posible no tener una ruta a algunas de ellas. ¿Cómo es eso diferente de cualquier otro número de IP? Es posible no tener una ruta a 198.41.0.4, ¿eso significa que está mal publicar 198.41.0.4 en DNS? DNS es un sistema de resolución de nombres . No tiene nada que ver con el enrutamiento, los dos son ortogonales. Estás combinando dos categorías de problemas, que básicamente equivalen a FUD.
Mihai Limbăşan
1
El contexto de la discusión fue el uso de direcciones IP privadas en un servidor DNS público . El objetivo de la publicación era indicar que, de forma predeterminada, los enrutadores no deben enrutar direcciones IP privadas. No estaba intentando indicar que no puede usar direcciones IP privadas en un servidor DNS, solo que no debe proporcionar esas direcciones IP "al exterior". Si esto no es lo suficientemente claro, con mucho gusto retiraré la publicación. De lo contrario, no estoy de acuerdo, la publicación es 100% puntual: el efecto neto para esta persona es que / tendrán problemas / si hacen esto.
Avery Payne
asiente Tu comentario en la publicación de Alnitak lo aclaró :) Gracias.
Mihai Limbăşan
"Cualquiera que intente ponerse en contacto con su servidor DNS público recuperará la dirección IP privada del DNS, solo para enviar un paquete a ... en ninguna parte" - no, en realidad acaba de describir el enlace DNS y funciona en algunos de los enrutadores más seguros por ahí, incluido mi PepWave Surf SOHO: rebind.network/rebind
Ohad Schneider
0

Llegué aquí porque estaba buscando información similar y me sorprendió que muchos digan que está bien filtrar sus direcciones IP privadas. Supongo que en términos de hackeo, no hace una gran diferencia si estás en una red segura. Sin embargo, DigitalOcean ha tenido todo el tráfico de la red local en exactamente los mismos cables y todos realmente tienen acceso al tráfico de todos los demás (probablemente factible con un ataque Man in the Middle). Si solo tuviera una computadora en el mismo centro de datos, tener eso la información ciertamente te da un paso más cerca de piratear mi tráfico. (Ahora cada cliente tiene su propia red privada reservada, como con otros servicios en la nube, como AWS).

Dicho esto, con su propio servicio BIND9, puede definir fácilmente sus IP públicas y privadas. Esto se hace usando la viewfunción, que incluye un condicional. Esto le permite consultar un DNS y obtener una respuesta sobre las IP internas solo si está preguntando desde su propia dirección IP interna.

La configuración requiere dos zonas. La selección utiliza el match-clients. Aquí hay un ejemplo de configuración desde un servidor DNS dos en uno con BIND9 :

acl slaves {
    195.234.42.0/24;    // XName
    193.218.105.144/28; // XName
    193.24.212.232/29;  // XName
};

acl internals {
    127.0.0.0/8;
    10.0.0.0/24;
};

view "internal" {
    match-clients { internals; };
    recursion yes;
    zone "example.com" {
        type master;
        file "/etc/bind/internals/db.example.com";
    };
};
view "external" {
    match-clients { any; };
    recursion no;
    zone "example.com" {
        type master;
        file "/etc/bind/externals/db.example.com";
        allow-transfer { slaves; };
    };
};

Aquí está la zona externa y podemos ver que las IP no son privadas

; example.com
$TTL    604800
@       IN      SOA     ns1.example.com. root.example.com. (
                     2006020201 ; Serial
                         604800 ; Refresh
                          86400 ; Retry
                        2419200 ; Expire
                         604800); Negative Cache TTL
;
@       IN      NS      ns1
        IN      MX      10 mail
        IN      A       192.0.2.1
ns1     IN      A       192.0.2.1
mail    IN      A       192.0.2.128 ; We have our mail server somewhere else.
www     IN      A       192.0.2.1
client1 IN      A       192.0.2.201 ; We connect to client1 very often.

En cuanto a la zona interna, primero incluimos la zona externa, que es cómo funciona. es decir, si usted es una computadora interna, solo accede a la zona interna, por lo que aún necesita las definiciones de zona externa, de ahí el $includecomando:

$include "/etc/bind/external/db.example.com"
@       IN      A       10.0.0.1
boss    IN      A       10.0.0.100
printer IN      A       10.0.0.101
scrtry  IN      A       10.0.0.102
sip01   IN      A       10.0.0.201
lab     IN      A       10.0.0.103

Finalmente, debe asegurarse de que todas sus computadoras ahora utilicen ese DNS y sus esclavos. Suponiendo una red estática, significaría editar su /etc/network/interfacesarchivo y usar sus IP de DNS en la nameserveropción. Algo como esto:

iface eth0 inet static
    ...
    nameserver 10.0.0.1 10.0.0.103 ...

Ahora deberías estar listo.

Alexis Wilke
fuente