Qué es y para qué sirve DNSSEC

Vaya por delante que mi relación con las DNS es, digamos que distante, así que al añadirle apellidos la cosa se me complica.

Para qué vale DNSSEC

Quizá lo más interesante de DNSSEC es saber para qué te puede valer. En este vídeo ochentero (es de 2013, pero parece más antiguo, ¿verdad?) lo explican de forma sencilla:

About DNSSEC (Animated Introduction – With Text Narration)

DNSSEC sirve para impedir que alguien suplante a nuestros servidores DNS y nos proporcione información falsa, evitando la suplantación de servicios de terceros.

Aunque DNSSEC está bastante extendido, no todos los registradores ni todos los registros lo permiten.

¿Cómo funciona DNSSEC?

Autenticando la información mediante un cifrado asimétrico. Aquí empieza la parte más complicada ya que todo el contenido debe ir firmado para asegurar su autenticidad y todos los miembros de la cadena deben ser capaces de validar esa firma, hasta llegar a los servidores DNS raíz. Toda la cadena debe estar configurada para permitir DNSSEC.

De forma resumida, para un dominio:

  • Los servidores DNS deben estar configurados para permitir DNSSEC
  • Se firma la zona del dominio usando 2 pares de claves de seguridad: Zone Signing Key (ZSK) y Key Signing Key (KSK)
    • ZSK se utiliza para firmar la zona del dominio; es quien dice «Estos son mis registros DNS, provienen de mi servidor y deben ser así». Para ello utiliza registros DNS de tipo RRSIG para cada uno de los record sets (conjunto de registros del mismo tipo y nombre)
    • KSK se utiliza para firmar los registros DNSKEY que contendrán las claves públicas de las firmas, tanto ZSK como KSK, y que también tendrán su correspondiente RRSIG asociado.
Diagrama de claves de firma de claves
Diagrama de claves de firma de clave (imagen de CloudFlare)
  • Para transmitir esta información, hay que trasladar la clave pública de KSK a la zona padre. Esto se hace con el registro Delegation Signer (DS), que contiene la clave pública hasheada.
    Cada vez que un resolver se dirige a una zona secundaria, la zona principal también proporciona un registro DS. Este registro DS es la forma en que los resolvers saben que la zona secundaria está habilitada para DNSSEC. Como el DS es un registro «normal», también irá firmado y se irá subiendo en la cadena de confianza hasta la zona DNS raíz. Como curiosidad, como no hay nadie que valide este último registro, se realiza una Ceremonia pública en la que una serie de autoridades realizan la firma de las claves de la zona raíz.
Validación de la cadena de confianza para www.eurid.eu

A todo esto hay que añadir que conviene cambiar las claves ZSK y KSK cada cierto tiempo… con lo que ellos supone de transmisión hacia arriba de los cambios.

Como las KSK se usan para firmar las claves, suelen ser más robustas y hay que modificarlas menos a menudo. Para las ZSK se usan claves más débiles y estas sí se suelen rotar por ejemplo cada 2-3 meses.

Los registros DNS implicados

Ya hemos visto que se están creando bastantes registros nuevos para poder firmar y autenticar estas firmas:

  • RRSIG. Contiene la firma digital de cada resource record set. Esta firma se verifica con la clave pública almacenada en los registros DNSSKEY.
  • DNSKEY. Contiene la clave pública necesaria para validar las firmas de los registros RRSIG.
  • DS (Delegation Signer). Identifica una zona delegada. Hace referencia a un registro DNSKEY en la zona subdelegada. El registro DS se coloca en la zona padre junto con los registros NS delegados.

Adicionalmente aparecerán registros NSEC o NSEC3 (para denegar de forma explícita la existencia de un registro DNS) y también pueden aparecer registros CDNSKEY y CDS para zonas secundarias que soliciten actualizaciones de registros DS en la zona principal.

Referencias

  • Echad un ojo a la explicación de CloudFlare sobre cómo funciona DNSSEC (How DNSSEC works). De lo que he visto es la que mejor aclara qué es y cómo funciona DNSSEC.
  • Si queréis ver cómo es la Root Signing Ceremony, ICANN publica los vídeos en YouTube ;) No esperéis un fiestón con alcohol y stripers.
    Ólafur Guðmundsson (CloudFlare) estuvo invitado y explica el proceso en el artículo The DNSSEC Root Signing Ceremony.
  • No viene mal recordar el cifrado asimétrico, que es lo que nos permite autenticar a las partes en todo este jaleo:
  • Y puedes analizar el estado DNSSEC con el DNSSEC Debugger de Verisign Labs:

DNS: Qué son los Glue Records

Cuando registras un dominio, tienes que proporcionar al registro (registry) que gestiona la extensión una serie de datos:

  • Datos del titular del dominio
  • Datos del contacto administrativo
  • Datos del contacto técnico
  • Servidores DNS

A la hora de indicar los servidores DNS que van a resolver el dominio en el hosting, puede que quieras utilizar un subdominio de ese dominio… y en ese caso tendríamos un problema

…me llaman el hombre bucle

Si yo quiero registrar el dominio chupicalabaza.info y los servidores DNS que quiero utilizar son:

  • ns1.chupicalabaza.info
  • ns2.chupicalabaza.info

Lo normal es que me dé error, puesto que el dominio principal, chupicalabaza.info, no está todavía registrado y para resolver un subdominio tengo que resolver antes el dominio principal.

DNS arbol.svg
Árbol DNS para resolver es.wikipedia.org
CC BY-SA 2.5, Wikimedia Commons

Para resolver este caso, es para lo que están los glue records. Estos registros permiten indicar al registry, la IP asociada a esos servidores DNS que están bajo un dominio pendiente de registrar. Así de (más o menos) sencillo.

Obviamente esto no nos exime de crear las entradas necesarias para la configuración del registro; es un paso necesario para poder asignar los hosts en estas situaciones particulares.

Referencias

  • DonDominio lo explica muy bien en su ayuda… hasta he puesto vocecitas en el diálogo ;)
  • En la Wikipedia [EN] tenéis también una breve explicación