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:
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 correspondienteRRSIG
asociado.
- 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
- 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 registroDS
. Este registroDS
es la forma en que los resolvers saben que la zona secundaria está habilitada para DNSSEC. Como elDS
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.
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 registrosDNSSKEY
.DNSKEY
. Contiene la clave pública necesaria para validar las firmas de los registrosRRSIG
.DS
(Delegation Signer). Identifica una zona delegada. Hace referencia a un registroDNSKEY
en la zona subdelegada. El registroDS
se coloca en la zona padre junto con los registrosNS
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: