Protege tus peticiones DNS con DNS over TLS

Fecha de publicación 04/07/2019
Autor
Ignacio Porro Sáez (INCIBE)
Protección

A modo de recordatorio, DNS (Domain Name System) es un protocolo utilizado por ordenadores, servicios, dispositivos de IoT o cualquier recurso conectado a una red. Aunque tiene varios usos, el principal es resolver la dirección IP de una página web. Cuando se creó DNS no se desarrolló teniendo en cuenta la seguridad, por ello las consultas de DNS se envían en texto a través de protocolos UDP o TCP, sin ningún tipo de cifrado.

Por este motivo, un atacante podría ver qué sitios consulta un dispositivo y realizar un ataque de suplantación de identidad (phishing) de una página web mediante un ataque de envenenamiento de caché DNS (DNS cache poisoning), el cual consiste en aprovechar vulnerabilidades en los servidores, para enviarles información errónea sobre las direcciones IP de determinados dominios. De esta forma, todos los usuarios que utilicen este servicio estarán visitando páginas falsas, ya que la caché de estos ha sido manipulada por los atacantes.

Comparativa funcionamiento

- Ejemplo de modificación de los DNS establecidos por el usuario o el ISP -

Para solucionar este problema, se está implementando DNS over TLS (DoT). DoT es un protocolo de seguridad para cifrar y empaquetar las consultas y respuestas DNS a través del protocolo TLS (Transport Layer Security), con el fin de aumentar la privacidad y seguridad de los usuarios, evitando escuchas no deseadas o la manipulación de datos DNS, como resultado de ataques man-in-the-middle (MitM).

No debemos confundir DoT con DoH (DNS over HTTPS), el cual resuelve los nombres de dominio a través de HTTPS, e intenta aumentar la privacidad y prevenir ataques MitM, pero que en ocasiones presenta el inconveniente de que los tiempos de carga son excesivamente lentos. Problema que se agrava cuando es necesario resolver muchas direcciones al cargar una página web.

¿En qué consiste DNS over TLS (DoT)?

El estándar DNS over TLS (DoT) se especifica en el RFC 7858. Su implementación es sencilla, puesto que una vez establecido un determinado puerto (0-1023), clientes y servidores negocian y acuerdan iniciar una sesión TLS segura. Esta conexión requiere que los clientes se autentifiquen utilizando certificados PKIX (Public Key Infrastructure X.509) basados en nombres de dominio tal y como se detalla en el RFC 8310.

Por defecto, un servidor DNS que soporta DoT, escucha a través del puerto 853. Se puede utilizar otro puerto distinto (a excepción del puerto 53 para evitar problemas con ataques de tipo downgrade), aunque para esto sería necesaria una configuración de servidores y clientes. También se debe tener en cuenta que algunos cortafuegos pueden bloquear el puerto 853, lo que podría originar complicaciones y un mal funcionamiento de este protocolo. También debemos destacar que este protocolo solo utiliza TCP.

¿Cómo funciona?

Este protocolo tiene dos modos de funcionamiento, el modo estricto y el modo oportunista, en relación con el nivel de privacidad proporcionado:

  • El modo estricto, crea una conexión TLS segura, y el cliente se autentica utilizando certificados PKIX basados en nombres de dominio. En caso de que la autenticación falle, el servidor responderá con un error.
  • En el modo de privacidad oportunista, el cliente intenta autenticarse con el servidor, si esto no es posible pasará de manera automática a comunicarse a través del puerto 53 de UDP o TCP sin cifrar.

El modo estricto es mucho más seguro debido a que, si este protocolo falla, no enviará la petición, nuevamente, de una forma insegura, simplemente no resolverá la solicitud. Por el contrario, el modo oportunista garantiza una mayor disponibilidad del servicio.

Actualmente, los RFC no definen cuestiones importantes como son la implementación y revocación de certificados, integración de CA (Certification Authority) de confianza, utilización de CRL (Certificate Revocation List) para consultar los certificados revocados, etc. Estos aspectos se dejan en manos de los proveedores del servicio de DNS, quienes serán los encargados de implementarlos.

DoT

¿Qué ventajas y desventajas aporta?

Las ventajas de utilizar DoT son:

  • Al tratarse de comunicaciones TCP cifradas con TLS, mejora la seguridad y la privacidad.
  • En el modo de funcionamiento estricto, previene la manipulación mediante la interceptación y modificación de consultas o respuestas DNS.
  • Cualquier intrusión entre el usuario y el servidor DNS que resuelve las consultas, no podrá obtener información.
  • La implementación es sencilla, cualquier persona con unos conocimientos medios podría instalarlo en su red para las plataformas que no lo incorporan de forma nativa.
  • En las plataformas que lo incorporan de forma nativa, cualquier usuario puede utilizarlo.

En cuanto a las desventajas, parece que no hay muchas, pero las debemos tener en cuenta.

  • En el modo estricto, si consultamos una página y no nos devuelve resultado, tendremos un mensaje de error.
  • La latencia puede ser algo mayor utilizando DoT.
  • No se definen los requisitos de implementación, validación ni revocación de los certificados de los servidores DNS.

¿Qué DNS públicos implementan DoT y qué plataformas lo soportan?

No todos los servidores públicos soportan DNS-over-TLS. Dentro de los que sí lo aplican nos encontramos con Cloudflare, Quad9, Google y CleanBrowsing que implementan esta medida de seguridad desde 2019.

En la siguiente tabla, se muestra una comparativa de los mecanismos de seguridad que tienen implementados algunos de los servidores públicos de DNS más utilizados.

DNS Públicos Política de privacidad DNSSEC DoT DoH DNSCrypt
CleanBrowsing ? ? ? ? ?
Cloudflare ? ? ? ? ?
Google ? ? ? ? ?
Quad9 ? ? ? ? ?
UncesoredDNS ? ? ? ? ?
SafeDNS ? ? ? ? ?
OpenDNS ? ? ? ? ?

En Windows, macOS e iOS no lo implementa ningún cliente de forma nativa. Para Windows se pueden utilizar programas cliente de terceros que permitan usar DoT, como puede ser Stubby. Se espera que en un futuro todas las plataformas incorporen esta medida de seguridad de forma nativa.

Ciertas distribuciones de Linux ya incorporan DoT, por ejemplo Ubuntu 18.10, pero lo traen desactivado por defecto, y solo soportan el modo oportunista. Y para aquellas que no lo implementan, se puede usar el programa Stubby.

En cuanto a los dispositivos Android, solo es posible configurar DoT a partir de la versión 9.0 Pie, pero para versiones anteriores Cloudflare dispone de una aplicación que permite su utilización.

Conclusiones

Hay que tener en cuenta que, a día de la publicación de este artículo, el protocolo DNS over TLS sigue en fase de perfeccionamiento, y que, gradualmente, el número de plataformas con las que es compatible va aumentando. En el blog se ha indicado que, actualmente, muy pocos clientes lo implementan de forma nativa, pero este pequeño inconveniente se puede solventar con programas de terceros.

Algo tan simple como una consulta DNS, que a primera vista puede parecer poco importante, ya que únicamente aporta información sobre las páginas visitadas, puede ser el punto de partida para realizar un ataque con mayores probabilidades de éxito.