DNSSEC: ¿Qué es y por qué es importante?
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) tal como se utiliza en las redes de Protocolo de Internet (IP).
DNSSEC proporciona resolución de DNS, autenticación de origen de datos DNS, denegació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 se firman las consultas o respuestas de DNS, sino que los datos de DNS están firmados por el propietario de los datos.
Antes de sumergirnos en DNSSEC, es importante comprender qué es DNS y por qué necesitamos DNSSEC.
¿Qué es el Sistema de Nombres de Dominio (DNS)?
El Sistema de Nombres de Dominio (DNS) es un sistema de nomenclatura jerárquico y descentralizado para computadoras, servicios y otros recursos que se conectan a Internet. El DNS asocia información con nombres de dominio. El uso más común es traducir nombres de dominio legibles por humanos (como icann.org) a la dirección IP numérica utilizada para localizar e identificar servicios y dispositivos con protocolos de red subyacentes.
DNS delega la responsabilidad a los servidores de nombres autorizados de cada dominio, que pueden asignar y asignar dominios a direcciones IP. Esto crea un servicio distribuido y tolerante a errores que no está hospedado de forma centralizada.
El DNS también define el protocolo DNS, que es una especificación de las estructuras de datos y los intercambios de datos utilizados 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 los humanos a una dirección IP utilizada por servidores, enrutadores y otros dispositivos en red.
Cuando usas Internet, todo comienza con DNS. Imagina que introduces example.com en tu navegador. El navegador utilizará el stub resolver, parte de su sistema operativo, para traducir el nombre de dominio del sitio web a una dirección IP.
Un solucionador de código auxiliar es un cliente DNS simple que retransmite las 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 varios servidores de nombres autoritativos. Todos los datos DNS del dominio se almacenan en servidores de nombres en Internet. Algunas organizaciones incluso ejecutan las suyas propias, pero la mayoría subcontratará esta función a un tercero, como un registrador, un proveedor de servicios de Internet o una empresa de alojamiento web.
¿Qué es una zona DNS?
El DNS se divide 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.
Piense en una zona DNS como el espacio administrativo que permite un control detallado sobre 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 abajo en subdominios, lo que permite que una entidad controle varios subdominios.
Un ejemplo de rama en el árbol podría ser el siguiente:
- Zona DNS raíz
- Zona DNS Com
- Zona DNS Upguard
Tenga en cuenta que las zonas DNS no están necesariamente asociadas a un solo nombre de dominio o a 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 están separadas físicamente.
¿Qué información se almacena en la base de datos DNS?
Los registros más comunes almacenados en la base de datos DNS son el inicio de 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 los alias de nombres de dominio (CNAME).
¿Por qué es importante DNSSEC?
DNS es la guía telefónica de Internet, le dice a su 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 el DNS aceptará cualquier dirección que se le asigne de forma predeterminada sin hacer preguntas. Esto puede dar lugar a diversos ciberataques y supone una verdadera amenaza de ciberseguridad.
Cuando un solucionador recursivo envía una solicitud a un servidor de nombres, el resolutor no tiene forma de verificar la autenticidad de la respuesta. Solo comprueba que la respuesta parece provenir de la misma dirección IP a la que se envió la solicitud original.
Esta es una forma deficiente de autenticación porque la IP de origen puede ser falsificada o falsificada. Esto permite a los atacantes hacerse pasar por el servidor de nombres autoritativo que el solucionador solicitó originalmente mediante la suplantación de 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 visto agravado por el hecho de que los resolutores recursivos almacenan en caché los datos de DNS para acelerar la resolución. Esto significa que si el resolutor de código auxiliar de su dispositivo solicita datos DNS que el resolutor recursivo ya tiene en su caché (guardados), 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 ataque cibernético envía respuestas de DNS falsificadas que son aceptadas por un solucionador recursivo, se dice que el solucionador tiene un caché envenenado, también conocido como envenenamiento de caché de DNS. Esto significa que cualquier usuario que interactúe con este solucionador recibirá datos DNS fraudulentos hasta que expire el período 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 de DNSSEC
Antes de describir cómo funciona DNSSEC, es importante comprender los nuevos tipos de registros de recursos DNS que se crearon o adaptaron para el uso de DNSSEC:
- RRSIG (firma de registro de recursos): Contiene la firma DNSSEC de 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 de 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, que a menudo es el dominio de nivel superior (TLD) de su dominio.
- NSEC (siguiente registro seguro): contiene un vínculo al siguiente nombre de registro de 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 (siguiente registro seguro versión 3): contiene vínculos al siguiente nombre de registro en una zona (en orden de ordenación de nombres con hash) y enumera los tipos de registro que existen para el nombre cubierto por el valor hash en la primera etiqueta del propio nombre del registro NSEC3. Estos son utilizados por los resolutores 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 con hash criptográfico 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 se deben incluir en las respuestas a las solicitudes de DNSSEC para nombres/tipos no existentes.
¿Cómo funciona DNSSEC?
Cuando se utiliza DNSSEC, cada respuesta a una solicitud DNS contiene un registro 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 la DNSKEY. Los registros NSEC y NSEC3 se utilizan para proporcionar pruebas criptográficas de la inexistencia de cualquier solicitud. Esto también se conoce como negación autenticada de la 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 cumplen el propósito de proporcionar una resistencia sólida contra la suplantación de identidad.
La cadena de confianza comienza con un conjunto de claves públicas verificadas para la zona raíz de DNS, que es el tercero de confianza. Los propietarios de dominios generan su propio par de clave pública/clave privada y los cargan utilizando su panel de control de DNS en su registrador de nombres de dominio, que a su vez envía las claves a través de secDNS al operador de zona (por ejemplo, Verisign para la zona com) que las firma y publica en el DNS
Esto evita que los resolutores almacenen en caché datos DNS falsificados o manipulados y evita el envenenamiento de caché.
En resumen, DNSSEC proporciona dos características de seguridad a DNS:
- Autenticación de origen de 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 solucionador 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 características de seguridad permiten buscar datos en la zona y recuperar la clave pública de la zona, que luego se utiliza para validar la autenticidad de los datos DNS proporcionados. A continuación, los resolutores confirman que la firma digital recibida coincide con lo que esperan y la devuelven al usuario final. Si la firma no es válida, el resolutor asume un ataque cibernético, 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 resolutor puede utilizar para validar los datos de la zona. La integridad de la clave pública se puede determinar como otros datos de 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.
Por ejemplo, la clave pública de la zona UpGuard.com está firmada por su elemento primario, la zona com. Cada zona principal es responsable de garantizar la autenticidad de la clave pública de su zona secundaria. Puede seguir esta lógica desde el árbol DNS hasta la zona raíz DNS, que es responsable de todos los elementos secundarios. Por definición, no tiene un padre que firme su clave y es de confianza innata.
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 de la zona com.
Y dado que el solucionador confía en la clave pública de la zona com, confía en las claves públicas que han sido firmadas por su clave privada, como la clave pública para UpGuard.com.
Esta es la cadena de confianza a la que nos hemos referido más arriba. La primera clave pública de una cadena de confianza se denomina anclaje de confianza. Cuando se diseñó originalmente DNSSEC, solo había un anclaje de confianza (la zona raíz de DNS). Hoy en día, los anclajes de confianza suelen obtenerse del sistema operativo o de otra fuente de confianza. 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 anclaje de confianza para cada zona (com, net, org, etc.), lo que les permite crear una cadena de confianza en cualquier ubicación del 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 llaves, se necesita un esquema de sustitución de claves. Esto implica primero implementar nuevas claves en nuevos registros DNSKEY junto con las claves existentes. A continuación, cuando es seguro suponer que los valores de período de vida (TTL) han provocado el almacenamiento en caché de las claves antiguas, se usan las nuevas claves.
Una vez que ha caducado el almacenamiento en caché de las claves antiguas, 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 ofrecer un nivel similar de protección, al tiempo que reducen el tamaño de los registros.
Contrasta esto con los 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 resulta en 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 arrancar otros sistemas de seguridad cibernética que publican certificados criptográficos almacenados en DNS, como registros de certificados, huellas dactilares SSH, claves públicas IPSec y anclajes de confianza TLS.
Dicho esto, DNSSEC, a diferencia de los certificados SSL, no proporciona confidencialidad de los datos. Las respuestas de DNSSEC se autentican pero no se cifran. DNSSEC tampoco protege contra ataques cibernéticos como los ataques de denegación de servicio distribuidos (ataques DDoS).
Recuerde, la principal protección que proporciona DNSSEC es que evita que terceros puedan falsificar registros y garantiza la identidad de un dominio al impedir:
- Envenenamiento de caché de DNS: una forma de ataque de intermediario en el que los atacantes inundan un solucionador de DNS con información de DNS falsa. A veces, estos ataques pueden obtener una coincidencia por la ley de los grandes números y plantar un resultado falso en la caché del solucionador de DNS. A continuación, el solucionador de DNS proporciona esta dirección web errónea o maliciosa a cualquier persona que busque ese sitio web hasta que expire el período 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 las 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 la 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, como asumir que el nombre común de una empresa más ".com" es siempre su nombre de dominio.
DNSSEC no puede proteger contra suposiciones falsas, solo puede autenticar los datos que realmente provienen o no están disponibles del propietario del dominio.
¿Por qué no todo el mundo utiliza DNSSEC?
Es ampliamente aceptado que la seguridad del DNS es una parte de importancia crítica de la seguridad de Internet en su conjunto, pero la implementación de DNSSEC ha visto varias dificultades:
- Compatibilidad con versiones anteriores: La necesidad de diseñar un estándar compatible con versiones anteriores que pueda adaptarse 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 determinado no existe.
- Dificultades de implementación: La implementación de DNSSEC en una amplia variedad de servidores y resolutores DNS lleva tiempo.
- Desacuerdos de propiedad: Ha habido desacuerdos sobre quién debe ser el propietario de las claves raíz del dominio de nivel superior.
- Complejidad percibida: Ha sido difícil superar la complejidad percibida de las DNSSEC y su implementación.
Resumen de DNSSEC
Las DNSSEC forman una parte fundamental de la seguridad generalizada en Internet, o al menos lo serían si se adoptaran ampliamente. Ahora debe ser habilitado específicamente por los resolutores recursivos y por los 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.
UpGuard ayuda a empresas como Intercontinental Exchange, Taylor Fry, The New York Stock Exchange, IAG, First State Super, Akamai, Morningstar y la NASA a proteger la seguridad de su información y prevenir violaciones de datos.
Ya sea que su organización tenga un dominio o miles, nuestra plataforma puede monitorear los sitios web de su organización y de sus proveedores en busca de DNSSEC, typosquatting y susceptibilidad a ataques de intermediario y otras vulnerabilidades. UpGuard BreachSight también puede ayudar a prevenir violaciones de datos y fugas de datos confidenciales e información de identificación personal (PII), protegiendo la confianza de sus clientes a través de calificaciones de seguridad cibernética y detección continua de exposición.