localhost en una zona DNS

15

Nuestro ISP también aloja nuestro DNS externo. Por defecto incluyen una entrada para localhost.

Por ejemplo: localhost.example.com. 86400 IN A 127.0.0.1

Cuando les pido que lo eliminen, me hacen pasar un mal rato y dicen que es así como funciona Bind.

Intenté investigar un poco sobre por qué podría querer incluir eso, pero no pude encontrar mucho. Encontré al menos un lugar que pensaba que era un posible vector de ataque XSS. Parece ser bastante común, así que hice búsquedas en los 20 principales dominios de sitios web de alexa y la mayoría no tiene esa entrada, pero un par sí. Algunos otros tienen una entrada, pero en lugar de apuntar a 127.0.0.1, señalan a otro una dirección IP de ruta mundial.

De todos modos, ¿por qué querría tener locahost en la zona para mi dominio? ¿Hay algún problema con no tenerlo? ¿Hay algún tipo de mejor práctica con respecto a esto? ¿Es realmente una cosa Bind predeterminada que no conozco?

Gracias

Mateo
fuente
Buena pregunta. Nunca escuché de eso antes.
TomTom
Incluso tengo un "loopback" en el archivo de zona de mi ISP. WTF?
David Tonhofer

Respuestas:

13

localhost.example.coma veces se incluye en los servidores DNS internos para evitar que las solicitudes de "localhost" se filtren a Internet (para el caso en el que John Smith escribe http://localhost/en su navegador y, por cualquier motivo, su resolutor no busca en el archivo de hosts, agrega su ruta de búsqueda ( example.com) & comienza a preguntar a los servidores de nombres a qué se resuelve eso).

No tiene que tener una entrada localhost (y si su ISP piensa que es "la forma en que funciona BIND", están equivocados o son idiotas: BIND sirve lo que está en el archivo de zona, y si eliminan la localhostlínea, dejará de servir eso grabar). Como ejemplo gratuito, localhost.google.comno se resuelve, y apuesto a que el NS para ese dominio ejecuta BIND.

El vector XSS es algo en lo que nunca había pensado, pero es algo preocupante: tener una localhostentrada en su DNS público significa que cualquier máquina pirateada podría estar "en su dominio" (ejecutando un servidor web en 127.0.0.1) y potencialmente todo tipo de cosas desagradables. Probablemente sea una buena razón para deshacerse de la entrada.

voretaq7
fuente
1
Personalmente, creo que localhost.some.testes solo otra víctima de no obtener el punto final adecuado. El razonamiento detrás de tener localhost.(¡tenga en cuenta el punto!) Es claro, pero los puntos a menudo se olvidan en las zonas DNS. Luego surgió para tener su propia vida misteriosa.
poige
Consulte tools.ietf.org/html/rfc1537 Errores comunes de configuración de archivos de datos DNS que sugieren que la entrada localhost es correcta.
BillThor
1
No, rfc1537 no especifica eso. Especifica que los recursores deben tener un host local. zona y una zona para el reverso. En ninguna parte dice que sus zonas necesitan una entrada localhost.
Habbie
@BillThor Los comentarios sobre esta otra respuesta son relevantes para RFC 1537 y su sucesor (RFC 1912) - Como Habbie mencionó que la zona localhost. es algo que se supone que debemos tener, pero la práctica de tener un localhost registro en cada zona que servimos ha fallado de favor (Esta pregunta en realidad me llevó a ese agujero de conejo RFC hace 5 años, tal vez actualice mi respuesta con el nuevo RFC y los pensamientos de ese hilo de comentarios más tarde :))
voretaq7
3

Suponiendo que su resolución de nombre interna está manejando la resolución de nombre correctamente, cualquier solicitud de DNS para localhost nunca debe ir a su proveedor de DNS externo, por lo que esto no debería ser un problema en absoluto.

Una razón por la que alguien haría esto, que se me ocurre fuera de mi cabeza, es si alguien alguna vez usó una herramienta de autoría web que se equivocó con una carga de referencias absolutas a http: // localhost , pero eso supone que su ISP también alojaba en sus cajas de DNS y es una posibilidad remota.

Sin embargo, el RFC 1537 hace especificar:

Ha habido una extensa discusión sobre si agregarle o no el dominio local. La conclusión fue que "localhost". sería la mejor solución; las razones dadas fueron:

  • "localhost" en sí mismo se usa y se espera que funcione en algunos sistemas.

  • traducir 127.0.0.1 a "localhost.my_domain" puede hacer que algunos programas se conecten a sí mismos utilizando la interfaz de bucle de retorno cuando no lo desea.

Tenga en cuenta que todos los dominios que contienen hosts deben tener un registro A "localhost".

Hablando estrictamente, parece que su ISP es correcto para incluir localhost, pero incorrecto para usar el nombre completo.

Maximus Minimus
fuente
55
Parece que RFC-1537 fue obsoleto por RFC-1912 que elimina el Note that ...lenguaje (supongo que en respuesta a los posibles problemas de XSS de los que habríamos empezado a estar conscientes en 1996 :) 1537 Explica por qué está en las plantillas BIND.
voretaq7
¿Quiere decir que debería haber una entrada como esta en la zona, por ejemplo.com: localhost. 86400 IN A 127.0.0.1; tenga en cuenta el período
Mateo
3
4.1 de 1912 es bastante explícito: ietf.org/rfc/rfc1912.txt
Maximus Minimus el
5 años después, pero vale la pena aclarar: 4.1 de RFC 1912 es explícito que la localhost zona debe existir en el servidor (por lo que si recibe una solicitud simplemente "localhost" no lo pasa por la cadena al siguiente servidor), eso es un lejos de incluir localhosten example.comla zona de say (creación localhost.example.com), lo cual es igualmente explícito al decir que no debe hacerlo debido a los posibles efectos secundarios no deseados. La expectativa es que "localhost" sea un dominio especial, mágico y completamente calificado por derecho propio.
voretaq7
0

No estoy seguro de cuál sería el punto ... De manera predeterminada, el archivo de hosts anularía la dirección externa, que casi siempre asigna localhost a 127.0.0.1.

Sin embargo, un archivo de zona BIND predeterminado incluye una zona localhost. Realmente nunca pensé en ello.

Satanicpuppy
fuente
Esta no es la zona localhost (a menos que sea una configuración incorrecta de esa zona). Tampoco es el fqdn 'localhost'. y generalmente no sería anulado por el archivo de hosts locales.
Mateo