DNSSEC: qué es y por qué es importante

Cuando se creó el sistema DNS a principios de la década de 1980, no estaba diseñado como un protocolo seguro. No había ningún conocimiento crítico para aplicar con respecto a la criptografía de clave pública, o cualquier otro mecanismo de seguridad como los conocemos hoy. Internet había nacido recientemente, las redes tenían un número limitado de usuarios y el protocolo DNS funcionaba exactamente como se esperaba.

Con el paso de las décadas, Internet creció enormemente. Con más usuarios y más servidores, el cifrado evolucionó significativamente y el sistema DNS comenzó a reflejar una realidad cruel: ya no era un simple protocolo utilizado por una red pequeña. Fue utilizado por millones de servidores y, desafortunadamente, no fue tan seguro como debería ser.

En publicaciones anteriores, hemos hablado sobre cómo prevenir ataques DNS, mencionando DNSSEC como una forma de mejorar la seguridad del DNS. Hoy profundizaremos en esta tecnología específica, para aprender más sobre ella, su implementación, beneficios y adopción actual.

¿Qué es DNSSEC?

Las Extensiones de seguridad del sistema de nombres de dominio (DNSSEC o Extensiones de seguridad DNS) son un conjunto de especificaciones del Grupo de trabajo de ingeniería de Internet (IETF) para proteger ciertos tipos de información proporcionada por el Sistema de nombres de dominio (DNS) como se usa en las redes de Protocolo de Internet (IP).

DNSSEC proporciona a los solucionadores de DNS autenticación de origen de datos de DNS, negación autenticada de existencia e integridad de datos, pero no disponibilidad ni confidencialidad.

DNSSEC autentica el DNS mediante firmas digitales basadas en criptografía de clave pública. Con DNSSEC, no son las consultas o respuestas de DNS las que están firmadas, sino que los datos de DNS están firmados por el propietario de los datos.

Las vulnerabilidades de DNS han estado presentes en todos los sistemas de DNS durante décadas, y uno de los problemas más comunes que enfrentan los usuarios de Internet es estar expuestos a posibles ataques de DNS que permiten a los crackers redirigir el tráfico a sus propios servidores en lugar de mostrar el contenido original de un sitio web.

Con DNSSEC podemos defendernos de las técnicas que utilizan los piratas informáticos para dirigir las computadoras a sitios web y servidores fraudulentos.

¿Qué es el sistema de nombres de dominio (DNS)?

El sistema de nombres de dominio (DNS) es un sistema de nombres jerárquico y descentralizado para computadoras, servicios y otros recursos que se conectan a Internet. DNS asocia información con nombres de dominio. El uso más común es traducir nombres de dominio legibles por humanos a la dirección IP numérica utilizada para localizar e identificar servicios y dispositivos con protocolos de red subyacentes.

El DNS delega la responsabilidad a los servidores de nombres autorizados de cada dominio, quienes pueden asignar dominios a direcciones IP. Esto crea un servicio distribuido y tolerante a fallos que no está alojado de forma centralizada.

DNS también define el protocolo DNS, que es una especificación de las estructuras de datos y los intercambios de datos que se utilizan en el DNS.

¿Cómo funciona el DNS?

Internet depende del correcto funcionamiento del DNS. Cada página web, correo electrónico enviado e imagen recibida se basa en DNS para traducir un nombre de dominio amigable para humanos a una dirección IP utilizada por servidores, enrutadores y otros dispositivos en red.

Cuando usas Internet, todo comienza con DNS. Imagina que ingresas example.com en tu navegador. El navegador utilizará el solucionador de códigos auxiliares, parte de su sistema operativo, para traducir el nombre de dominio del sitio web a una dirección IP.

Un solucionador de stub es un cliente DNS simple que transmite solicitudes de datos DNS al solucionador recursivo más complicado. Muchos operadores de red ejecutan resolutores recursivos para sus clientes o el público en general, incluidos Google, OpenDNS y Quad9.

Una vez que el solucionador recursivo recibe su solicitud, envía sus propias solicitudes de DNS a múltiples servidores de nombres autorizados. Todos los datos DNS del dominio se almacenan en servidores de nombres en Internet. Algunas organizaciones incluso gestionan las suyas propias, pero la mayoría subcontrata esta función a un tercero, como un registrador, un proveedor de servicios de Internet o una empresa de alojamiento web.

Los registros más comunes almacenados en la base de datos DNS son el inicio de la autoridad (SOA), las direcciones IP (A y AAAA), los intercambiadores de correo SMTP (MX), los servidores de nombres (NS), los punteros para la búsqueda inversa de DNS (PTR) y el nombre de dominio. alias (CNAME).

¿Qué es una zona DNS?

El DNS está dividido en muchas zonas diferentes. Cada zona administra un área distinta en el espacio de nombres DNS y es administrada por una organización o administrador específico.

Piensa en una zona DNS como el espacio administrativo que permite un control detallado de los componentes DNS, como sus servidores de nombres. El espacio de nombres de dominio es un árbol jerárquico con el dominio raíz DNS en la parte superior, que controla todas las demás zonas DNS. Cada zona DNS comienza en un dominio dentro del árbol y puede extenderse hacia los subdominios, lo que permite que una entidad controle varios subdominios.

Una rama de ejemplo en el árbol podría ser la siguiente:

  • Zona DNS raíz
  • Com zona DNS
  • Zona DNS de protección

Ten en cuenta que las zonas DNS no están necesariamente asociadas con un solo nombre de dominio o un solo servidor DNS. Hay situaciones en las que pueden existir varios subdominios o varias zonas en el mismo servidor. Las zonas son estrictamente para delegar el control y no necesariamente separadas físicamente.

¿Por qué es importante DNSSEC?

DNS es la guía telefónica de Internet, le dice a tu computadora dónde enviar y recuperar información. Desafortunadamente, el DNS se creó en la década de 1980 cuando Internet era pequeño y la seguridad no era una preocupación principal. Esto significa que DNS aceptará cualquier dirección que se le proporcione de forma predeterminada sin hacer preguntas. Esto puede dar lugar a varios ciberataques y supone una verdadera amenaza para la ciberseguridad.

Cuando un resolutor recursivo envía una solicitud a un servidor de nombres, el resolutor no tiene forma de verificar la autenticidad de la respuesta. Solo verifica que la respuesta parezca provenir de la misma dirección IP a la que se envió la solicitud original.

Esta es una forma de autenticación deficiente porque la IP de origen se puede falsificar o suplantar. Esto permite a los atacantes hacerse pasar por el servidor de nombres autorizado que el solucionador solicitó originalmente al falsificar una respuesta que parece provenir de ellos.

En términos simples, un atacante puede redirigir a un usuario lejos de donde pretendía ir sin que el usuario final se dé cuenta.

Este problema se ha agravado por el hecho de que los resolutores recursivos almacenan en caché los datos DNS para acelerar la resolución. Esto significa que si el solucionador de stub en tu dispositivo solicita datos DNS que el solucionador recursivo ya tiene en su caché (guardado), puede responder inmediatamente sin solicitar una respuesta del servidor de nombres.

Si bien esto proporciona beneficios de velocidad y eficiencia, tiene una gran desventaja. Si un ciberataque envía respuestas de DNS falsificadas que son aceptadas por un solucionador recursivo, se dice que el solucionador tiene una caché envenenada, también conocida como envenenamiento de caché de DNS. Esto significa que cualquier usuario que interactúe con este solucionador recibirá datos de DNS fraudulentos hasta que expire el tiempo de vida (TTL).

DNSSEC es un intento de agregar seguridad adicional al DNS sin dejar de ser compatible con versiones anteriores.

Glosario de registros de recursos DNSSEC

Antes de describir cómo funciona DNSSEC, es importante comprender que se crearon o adaptaron los nuevos tipos de registros de recursos DNS para el uso de DNSSEC:

  • RRSIG (firma de registro de recursos): contiene la firma DNSSEC para un conjunto de registros. Los solucionadores de DNS verifican la firma con una clave pública, almacenada en un registro DNSKEY.
  • DNSKEY: contiene la clave pública que utiliza un solucionador de DNS para verificar las firmas DNSSEC en los registros RRSIG.
  • DS (firmante de delegación): contiene el nombre de una zona delegada y hace referencia a un registro DNSKEY en la zona subdelegada. Esto se coloca en la zona principal junto con los registros NS delegados, a menudo es el dominio de nivel superior (TLD) de su dominio.
  • NSEC (siguiente registro seguro): contiene un enlace al siguiente nombre de registro en la zona y enumera los tipos de registro que existen para el nombre del registro. Los solucionadores de DNS utilizan registros NSEC para verificar la inexistencia de un nombre y tipo de registro como parte de la validación de DNSSEC.
  • NSEC3 (próxima versión de registro seguro 3): contiene enlaces al siguiente nombre de registro en una zona (en orden de clasificación de nombres hash) y enumera los tipos de registro que existen para el nombre cubierto por el valor hash en la primera etiqueta del registro NSEC3 nombre. Los resolutores los utilizan para verificar la inexistencia de un nombre y tipo de registro como parte de la validación de DNSSEC. Son similares a los registros NSEC, pero utilizan nombres de registro cifrados con hash para evitar la enumeración de los nombres de registro en una zona.
  • NSEC3PARAM (parámetros de la versión 3 del siguiente registro seguro): los servidores DNS autorizados utilizan este registro para calcular y determinar qué registros NSEC3 incluir en las respuestas a las solicitudes de DNSSEC de nombres/tipos no existentes.

¿Cómo funciona DNSSEC?

Cuando se utiliza DNSSEC, cada respuesta a una solicitud de DNS contiene un registro de DNS RRSIG, además del tipo de registro que se solicitó. El registro RRSIG es una firma digital de los datos DNS solicitados. La firma digital se verifica localizando la clave pública correcta que se encuentra en DNSKEY. Los registros NSEC y NSEC3 se utilizan para proporcionar evidencia criptográfica de la inexistencia de una solicitud. Esto también se conoce como negación autenticada de existencia.

El firmante de delegación (DS) se utiliza en la autenticación de DNSKEY mediante lo que se denomina una cadena de confianza. NSEC y NSEC3 también sirven para proporcionar una resistencia sólida contra la falsificación.

La cadena de confianza comienza con un conjunto de claves públicas verificadas para la zona raíz del DNS, que es el tercero de confianza. Los propietarios de dominios generan su propio par de clave pública / clave privada y los cargan usando su panel de control de DNS en su registrador de nombres de dominio, que en término envía las claves a través de secDNS al operador de zona que firma y los publica en el DNS

Esto evita que los resolutores almacenen en caché datos DNS falsificados o manipulados y evita el envenenamiento de la caché.

En resumen, DNSSEC proporciona dos funciones de seguridad para DNS:

  • Autenticación del origen de los datos: permite a un resolutor verificar criptográficamente que los datos provienen de la zona solicitada.
  • Protección de la integridad de los datos: permite a un resolutor saber que los datos no se han modificado en tránsito y que originalmente estaban firmados por la clave privada del propietario de la zona.

Estas dos funciones de seguridad permiten que cualquier solucionador recursivo busque datos en la zona y recupere la clave pública de la zona, que luego se utiliza para validar la autenticidad de los datos DNS proporcionados. Los resolutores luego confirman que la firma digital recibida coincide con lo que esperan y se la devuelven al usuario final. Si la firma no es válida, el resolutor asume un ciberataque, descarta los datos y devuelve un error.

¿Cómo saben los resolutores cuándo confiar en las claves DNSSEC?

Cada zona publica su clave pública que un solucionador puede usar para validar los datos en la zona. La integridad de la clave pública se puede determinar como otros datos en la zona porque también está firmada. La diferencia es que su clave pública está firmada por la clave privada de su zona principal.

La zona raíz de DNS es el punto de partida para validar todos los datos de DNS, por lo que si un solucionador confía en la clave pública de la zona raíz de DNS, confía en todas las zonas de nivel superior firmadas por su clave privada, como la clave pública para la zona de comunicaciones.

Esta es la cadena de confianza que mencionamos anteriormente. La primera clave pública de una cadena de confianza se denomina ancla de confianza. Cuando se diseñó originalmente DNSSEC, solo había un ancla de confianza (la zona raíz de DNS). En estos días, los anclajes de confianza generalmente se obtienen del sistema operativo o de otra fuente confiable. Los resolutores confían implícitamente en las claves públicas de los anclajes de confianza y no comprueban más arriba en el árbol.

La mayoría de los resolutores solo tienen un ancla de confianza para cada zona (com, net, org, etc.), lo que les permite construir una cadena de confianza para cualquier ubicación en el espacio de nombres DNS siempre que cada zona de la ruta esté firmada.

¿Cómo se reemplazan las claves DNSSEC?

Para permitir el reemplazo de claves, se necesita un esquema de transferencia de claves. Esto implica primero implementar nuevas claves en nuevos registros DNSKEY junto con las claves existentes. Luego, cuando sea seguro asumir que los valores de tiempo de vida (TTL) han provocado el paso del almacenamiento en caché de claves antiguas, se utilizan las claves nuevas.

Una vez que el almacenamiento en caché de las claves antiguas ha expirado, se eliminan los registros DNSKEY antiguos. Este proceso se vuelve más complicado para las claves que se utilizan como anclajes de confianza, pero esto afecta a muy pocas personas.

Hay dos usos diferentes para los registros DNSKEY:

  • Claves de firma de claves (KSK): se utilizan para firmar otros registros DNSKEY.
  • Claves de firma de zona (ZSK): se utilizan para firmar otros registros.

Las ZSK están bajo el control completo y el uso de una zona DNS en particular se puede cambiar con mayor facilidad y frecuencia. Como resultado, las ZSK pueden ser más cortas que las KSK y ofrecen un nivel de protección similar al tiempo que reducen el tamaño de los registros.

Compare esto con las KSK, que requieren que el registro del firmante de delegación (DS) se transfiera a la zona principal y se publique allí. Los registros DS utilizan un resumen de mensajes de la KSK en lugar de la clave completa para mantener el tamaño de los registros pequeño. Esto no es un problema para muchas zonas, pero es útil para zonas como el dominio com, que es muy grande.

¿Contra qué protege DNSSEC?

Si bien la principal preocupación de DNSSEC es prevenir la amenaza cibernética de la suplantación de DNS, que hace que los usuarios sean dirigidos al lugar equivocado, DNSSEC brinda el beneficio adicional de proteger los registros de texto (TXT) y los registros de correo (MX).

DNSSEC también se ha utilizado para iniciar otros sistemas de seguridad cibernética que publican certificados criptográficos almacenados en DNS, como registros de certificados, huellas digitales SSH, claves públicas IPSec y anclajes de confianza TLS.

Dicho esto, DNSSEC, a diferencia de los certificados SSL, no ofrece confidencialidad de los datos. Las respuestas DNSSEC se autentican pero no se cifran. DNSSEC tampoco protege contra ataques cibernéticos como los ataques distribuidos de denegación de servicio (ataques DDoS).

Recuerda, la principal protección que brinda DNSSEC es que evita que terceros puedan falsificar registros y garantiza la identidad de un dominio al evitar:

  • Envenenamiento de caché de DNS: una forma de ataque man-in-the-middle en el que los atacantes inundan un sistema de resolución de DNS con información falsa de DNS. A veces, estos ataques pueden coincidir con la ley de los grandes números y colocar un resultado falso en la caché del sistema de resolución de DNS. El solucionador de DNS luego proporciona esta dirección web errónea o maliciosa a cualquiera que busque ese sitio web hasta que expire el tiempo de vida (TTL).
  • Zonas falsas: DNSSEC también protege contra ataques de DNS maliciosos que explotan el sistema DNS y proporcionan resultados falsos para zonas que ni siquiera existen, esencialmente explotando brechas entre zonas. DNSSEC protege toda la zona y proporciona mecanismos para evitar la explotación de brechas en zonas sin firmar. Esto también se conoce como la negación autenticada de existencia.

Se utilizan otros estándares para proteger los datos masivos enviados entre servidores DNS, como una transferencia de zona DNS. Incluso con DNSSEC, algunos usuarios seguirán haciendo suposiciones falsas sobre los nombres DNS.

DNSSEC no puede proteger contra suposiciones falsas, solo puede autenticar los datos que realmente provienen del propietario del dominio o no están disponibles.

¿Por qué no todo el mundo usa DNSSEC?

Está ampliamente aceptado que proteger el DNS es una parte de vital importancia para proteger Internet en su conjunto, pero la implementación de DNSSEC ha enfrentado varias dificultades:

  • Compatibilidad con versiones anteriores: la necesidad de diseñar un estándar compatible con versiones anteriores que pueda escalar al tamaño de Internet es extremadamente difícil
  • Prevención de enumeración de zonas: una parte importante de DNSSEC es la capacidad de afirmar con autoridad que un nombre de pila no existe.
  • Dificultades de implementación: la implementación de DNSSEC en una amplia variedad de servidores DNS y solucionadores lleva tiempo.
  • Desacuerdos de propiedad: ha habido desacuerdos sobre quién debería poseer las claves raíz del dominio de nivel superior.
  • Complejidad percibida: ha sido difícil superar la complejidad percibida de la implementación de DNSSEC y DNSSEC.

DNSSEC forma una parte fundamental de la seguridad generalizada de Internet, o al menos lo sería si fuera ampliamente adoptada. Ahora debe habilitarse específicamente mediante resolutores recursivos y propietarios de nombres de dominio.

Los usuarios deben tener la seguridad de que cuando escriben un dominio terminan en el destino deseado y eso es exactamente lo que garantiza DNSSEC.