Misterios en DNS

Internet, la red que nos permite acceder a cualquier computadora en cualquier parte del mundo casi instantáneamente, es una maravilla tecnológica que ha permitido demostrar que la causa de la estupidez colectiva no era la falta de información. Uno de los caballos de batalla de la Internet es el servicio de nombres de dominio (DNS, por sus siglas en inglés), que nos permite acceder a la información que buscamos utilizando nombres fáciles de utilizar por humanos, por ejemplo, algoritmo.cubava.cu, en vez de una serie de números como 190.92.127.64, más apropiados para las máquinas, y es que las personas también tenemos derechos.

Algunos de los protocolos de aplicación de Internet más importantes
Algunos de los protocolos de aplicación de Internet más importantes

Al inicio de Internet, los nombres eran asociados a sus direcciones IP mediante un fichero local existente en cada estación de trabajo, este fichero debía ser actualizado manualmente, siendo cada vez más difícil de mantener a medida que crecían las computadoras conectadas a la red. Aún hoy en día este fichero puede encontrarse en los sistemas operativos y cumple su función original. En los sistemas operativos Linux puede encontrarse en la ruta /etc/hosts, mientras que en los sistemas Windows está ubicado en C:\\Windows\System32\drivers\etc\hosts.

El crecimiento explosivo de la red causó que el sistema de nombres centralizado en el archivo hosts no resultara práctico y en noviembre de 1983 Jon Postel publica el planeamiento en el RFC 881 y luego junto a Paul Mockapetris publican los RFC 882 y RFC 883 ese mismo año. En octubre de 1984 y tras largas discusiones emiten el RFC 920, definiendo lo que hoy en día ha evolucionado hacia el DNS moderno (estos RFC 882 y 883 fueron reemplazados en 1987 con los RFC 1034 y RFC 1035).

El sistema de nombres de dominio como lo conocemos actualmente funciona como una base de datos jerárquica y descentralizada, donde los servidores responden por una parte específica del espacio de nombres y reenvían las peticiones a las que no conocen la respuesta a otros de mayor jerarquía. Un nombre de dominio usualmente consiste en dos o más partes, separadas por puntos cuando se las escribe en forma de texto. Por ejemplo, algoritmo.cubava.cu. A la etiqueta ubicada más a la derecha se le llama dominio de nivel superior, cada etiqueta a la izquierda especifica una subdivisión o subdominio. La parte más a la izquierda del dominio suele expresar el nombre de la máquina (en inglés hostname). El resto del nombre de dominio simplemente especifica la manera de crear una ruta lógica a la información requerida.

El funcionamiento de DNS ha sido bastante estable en el tiempo, utilizando el puerto 53 y protocolo UDP. Al solicitar, por ejemplo, la página ‘algoritmo.cubava.cu‘, el equipo primero revisa su fichero ‘hosts’, de no encontrar respuesta hace la solicitud a su servidor DNS configurado en los parámetros de red, este a su vez, chequea si ya tiene el nombre en su caché, de no tenerlo, comienza a realizar peticiones a servidores de nivel superior que tenga configurados, hasta que obtiene una respuesta que devuelve a la estación original y lo almacena en su caché para futuras referencias.

Existen dos formas para realizar las consultas, recursiva, donde los servidores superiores buscan responder la consulta por si mismos e iterativa, donde el propio servidor va conformando la respuesta a partir de la información obtenida de los dominios superiores (ver imagen).

Funcionamiento DNS recursivo
Funcionamiento DNS recursivo

Funcionamiento DNS iterativo
Funcionamiento DNS iterativo

En sus inicios la seguridad no era un gran problema, al igual que en otros protocolos, ya que Internet no estaba abierta para el público en general, pero la expansión al sector comercial en los años 90 expuso a toda la infraestructura a nuevas amenazas. Uno de los ataques más comunes es el envenenamiento de caché DNS, donde los atacantes logran cambiar los valores de la caché de los servidores de bajo nivel, apuntando los nombres a direcciones IP maliciosas, muchas veces con una réplica del sitio original con el objetivo de robar información.

Por años DNS ha funcionado de la misma manera, con algunas modificaciones y extensiones para incluir seguridad y mejorar su funcionalidad, pero las cosas están empezando a cambiar.

Cierto día, revisando ciertas trazas de un servicio ‘X’, veo múltiples peticiones DNS a varios servidores desconocidos, 8.8.8.8 y 8.8.4.4, estas direcciones me eran extrañas ya que no formaban parte de la red ‘Y’ donde estaba trabajando. Más extraño aún, encuentro mensajes de cierta herramienta de seguridad diciendo que había detectado peticiones DNS sobre HTTPS. Es difícil explicar la subida de adrenalina y el sentimiento de pánico que puede desatar encontrar estas manifestaciones antinaturales en una red, baste con decir que ya tenía el hacha para desconexiones de emergencia en las manos. Afortunadamente no ocurrió ningún daño irreparable y existe una explicación sencilla para todo esto.

Resulta que Google llegó a la conclusión de que en el resto del mundo no saben configurar sus servidores DNS correctamente, que son lentos, inseguros y tienen la tendencia de bloquear dominios que ellos consideran no deben ser bloqueados, además, para qué permitir que los ISP (proveedores de Internet) se queden con esos datos de usuario? Mejor quedárselos ellos.

En 2009 Google publicó su servicio de DNS Público, que es accedido a través de las direcciones 8.8.8.8 y 8.8.4.4, las que se redireccionan a los servidores más cercanos de su área geográfica. Como complemento y de conjunto con la fundación Mozilla en 2018 comenzaron a probar la resolución de nombres a través del protocolo HTTPS.

Todas las explicaciones alrededor de estos servicios son pletóricas de referencias a la protección de la privacidad, seguridad y velocidad. Garantizan que la información personal del usuario no es utilizada, se anonimizada y que solo guardan algunas trazas para mejorar el servicio y garantizar su seguridad (ver). Todo esto suena muy bien, digamos que hasta altruista, pero lo que no me deja dormir en las noches es que los equipos donde se originaron las peticiones que crearon la alarma tenían configurados los DNS corporativos.

 

Comentarios