IT-Admin.tech

Implementar DNSSEC: firmado, gestión de claves y errores frecuentes

Architekturdiagramm der DNSSEC-Vertrauenskette mit KSK, ZSK, DS-Delegation und HSM
Visualisierung der DNSSEC-Vertrauenskette: KSK signiert ZSK, ZSK signiert Zonendaten, DS verbindet Zone mit Parent.

Implementar DNSSEC es para muchos equipos de TI un paso necesario para garantizar la integridad de la resolución de nombres. DNSSEC (Domain Name System Security Extensions) asegura que las respuestas del DNS no hayan sido manipuladas, mediante la firma criptográfica de zonas. Esta entrada explica de forma práctica qué requisitos debe verificar, cómo generar y gestionar KSK y ZSK, cómo funciona la publicación de entradas DS en el registrador y cuáles son los fallos típicos que pueden ocurrir —con estrategias de verificación y retroceso para el entorno productivo.

Por qué DNSSEC y para quién es relevante

Gráfico de la cadena de confianza DNSSEC con KSK y ZSK
Representación esquemática: dónde encajan KSK, ZSK y DS en la cadena de confianza.

DNSSEC protege frente a manipulaciones como el cache poisoning y los ataques man-in-the-middle sobre respuestas DNS. Para operadores de zonas internas y externas, especialmente en soluciones de software cercanas a los procesos, DNSSEC es relevante porque respuestas DNS incorrectas afectan directamente a la autenticación, la entrega de correo electrónico, los endpoints de API y la disponibilidad de servicios. Lo decisivo es: DNSSEC protege la integridad y la autenticidad de las respuestas DNS, no la confidencialidad (es decir, no protege los contenidos).

Fundamentos: términos, arquitectura y cadena de confianza

Dispositivo HSM para el almacenamiento seguro de claves DNS
HSM como opción práctica para la protección de KSK en entornos productivos.

Términos importantes explicados brevemente: KSK (Key Signing Key) es un par de claves que únicamente firma las claves de firma de zona (ZSK); la KSK actúa como ancla de confianza (trust anchor). ZSK (Zone Signing Key) firma los datos reales de la zona (Resource Records). DS (Delegation Signer) es el registro en la zona superior (parent) que resume la clave pública de la KSK y con ello establece la cadena de confianza hacia la zona raíz. Los validadores (resolvers con soporte DNSSEC) comprueban esta cadena para clasificar una respuesta como „secure“.

Importa el flujo de trabajo: usted firma su zona con una ZSK; la ZSK queda asegurada por la KSK; la KSK se verifica mediante un registro DS en la zona parent. Si la cadena se corta en cualquier punto (DS ausente, clave obsoleta, firmas caducadas), los validadores pueden devolver SERVFAIL y los clientes no podrán alcanzar los servicios.

Requisitos y preguntas de planificación antes de la implementación

Zeitstrahl für KSK- und ZSK-Rolloverphasen
Secuencia temporal y ventanas de solapamiento en el rollover de claves.

Antes de empezar a firmar, compruebe:

  • ¿Tiene su registrador/proveedor acceso por API o UI para entradas DS? Muchos registradores solo permiten la carga automática a través de interfaces específicas.
  • ¿Su servidor DNS autoritativo soporta DNSSEC (BIND, Knot, PowerDNS, NSD)? ¿Qué herramientas de firmado están disponibles?
  • ¿Deben almacenarse las claves en un HSM (Hardware Security Module)? El HSM aumenta la seguridad, pero implica carga operativa y costes.
  • ¿Existe un dominio de prueba o un entorno de staging donde pueda ensayar el despliegue?

Paso a paso: firmar la zona (procedimiento práctico)

El siguiente ejemplo describe el flujo de trabajo básico con las herramientas de BIND (dnssec-keygen, dnssec-signzone). No solo se explica el „cómo“, sino también el „por qué“.

1) Generar claves (KSK y ZSK)

La ZSK suele ser más pequeña (y rota con mayor frecuencia) que la KSK. Las KSK deben cambiarse con menos frecuencia y protegerse mejor (por ejemplo, fuera de línea o en un HSM). Ejemplo con dnssec-keygen:

Shell
# ZSK (RFC-konform: z.B. RSASHA256, 2048 Bit)
dnssec-keygen -a RSASHA256 -b 2048 -n ZONE example.com

# KSK (länger, z.B. 4096 Bit, als Trust-Anker gedacht)
dnssec-keygen -a RSASHA256 -b 4096 -n ZONE -f KSK example.com

¿Por qué? Las claves de firma más pequeñas (ZSK) reducen la carga de CPU al firmar; las KSK más grandes aumentan la seguridad para el ancla de confianza. La opción -f KSK marca la clave como Key Signing Key (KSK).

2) Firmar la zona

Firmar genera RRSIG (firmas) así como registros DNSKEY que se integran en el archivo de zona. Ejemplo:

Shell
# Annahme: zonefile example.com.zone
# dnssec-signzone erzeugt eine signierte Zonedatei
dnssec-signzone -A -3 randomsalt -N increment -o example.com -t example.com.zone

Las opciones: -A genera gestión automática de claves, -3 genera un salt para NSEC3, -N increment incrementa la serial de forma ordenada. Tras la ejecución obtendrá un archivo como example.com.zone.signed, que debe servir desde el servidor autoritativo.

3) Convertir DNSKEY a DS y publicar en el padre

Solo la entrada DS en la zona padre conecta su zona con la cadena de confianza superior. Se genera a partir de la KSK:

Shell
# DS aus KSK erstellen (sha256 ist üblich)
dnssec-dsfromkey Kexample.com.+008+12345.key

# Output: example.com. IN DS 12345 8 2 
# Diesen DS-Wert beim Registrar/Parent Zone eintragen

Por qué funciona: el DS es un hash del registro DNSKEY (la KSK pública). La zona padre almacena ese hash; los Resolver, al validar, comparan el hash con el DNSKEY en su zona.

Gestión de claves: almacenamiento, copia de seguridad y HSM

La gestión de claves abarca protección, rotación y recuperación. Reglas y opciones:

  • HSM: Si usa un HSM (interfaz PKCS#11), las claves privadas permanecen protegidas físicamente. Esto tiene sentido para la KSK; para la ZSK es menos imperativo, dependiendo del perfil de riesgo.
  • Offline-KSK: Mantenga las claves privadas KSK fuera de línea (p. ej. en un host apagado o en un HSM) para evitar robos.
  • Backup & Recovery: Cree copias de seguridad garantizadas y cifradas de las claves, incluidos exportes PKCS#12 protegidos con contraseña o archivos archivados cifrados. Pruebe la Recovery regularmente.
  • Logging & Audit: Cada operación sobre claves (generación, rollout, eliminación) debe registrarse, idealmente en un sistema con garantía de integridad para auditoría.

Integración con KMS y automatización

Muchos equipos integran sistemas de gestión de claves (Cloud-KMS o HashiCorp Vault) vía PKCS#11 o API. Ventajas: auditoría centralizada, rotación automatizada; desventajas: nueva superficie de ataque, dependencia de disponibilidad. Es crucial contar con un plan de recuperación probado en caso de que el KMS no esté disponible.

Key Rollover: ZSK- und KSK-Strategien

Rollover significa el intercambio de una clave por una nueva. Hay dos tipos: ZSK-Rollover y KSK-Rollover. Cada uno tiene una secuencia típica y riesgos.

ZSK-Rollover (frecuente, automatizable)

Las ZSK suelen renovarse de forma automatizada y en intervalos cortos (p. ej. 1–3 meses), porque se usan con más frecuencia para firmar. Procedimiento:

  1. Generar la nueva ZSK.
  2. Publicar: nuevos DNSKEY en la zona sin eliminar inmediatamente la ZSK antigua.
  3. Mantener el firmado hasta que expiren las firmas antiguas.
  4. Eliminar la ZSK antigua.

Riesgo: Olvidar mantener las firmas antiguas el tiempo suficiente conduce a firmas inválidas. La automatización mediante dnssec-signzone o la rotación de claves propia del servidor reduce errores.

KSK-Rollover (planificado cuidadosamente)

El KSK-Rollover es más complejo porque la entrada DS en el Parent debe ajustarse. Procedimiento (flujo seguro en dos etapas):

  1. Pre-Publish: Genere el nuevo KSK y publique la nueva DNSKEY pública en su zona, en paralelo con el KSK antiguo.
  2. Fase de discrepancia: espere para que los resolvers añadan la nueva clave como ‚known‘; firme con la ZSK como de costumbre.
  3. Update Parent: Genere el valor DS a partir del nuevo KSK y regístrelo en el registrador/Parent (o use la automatización CDS/CDNSKEY si está soportada).
  4. Roll: A continuación elimine el KSK antiguo de su zona, una vez que el Parent haya aceptado el nuevo DS y no aparezcan errores del validador.

¿Por qué tanto esfuerzo? Un cambio de KSK incorrecto o prematuro sin el DS correcto provoca la ruptura del árbol de confianza y, por tanto, interrupciones por parte de los validadores.

Opciones de automatización: CDS/CDNSKEY, APIs y CI/CD

CDS y CDNSKEY son RFC para la publicación automática de DS en el registrador: su zona publica registros CDS/DNSKEY y un registrador compatible puede trasladarlos automáticamente a la zona Parent. Ventaja: permite el rollover automático de KSK. Desventaja: muchos registradores todavía no lo soportan o lo hacen solo mediante flujos de trabajo específicos; por ello, pruebe previamente.

Alternativa: integrar las APIs del registrador con pipelines CI/CD. Ejemplo: el job de firmado genera el DS, la pipeline invoca la API del registrador para cargarlo, comprueba el éxito y notifica al equipo. Planifique medidas de seguridad y aprobación humana para cambios de KSK.

Comprobación y validación: herramientas y secuencias de prueba típicas

Comprobaciones esenciales que siempre debe realizar:

  • Verificación de firmas local: asegúrese de que existan entradas RRSIG.
  • Validación DNS desde un resolver público: compruebe la cadena de confianza (Chain-of-Trust) hasta el Parent/Root.
  • Supervise las fechas de expiración de las firmas (RRSIG Expiration) y la caducidad de las claves (Key-Expiry).

Comandos prácticos de comprobación

Shell
# Prüfen, ob Zone RRSIGs hat
dig +dnssec example.com SOA

# Prüfen der Kette: zeigt ob die Antwort als 'ad' (authentic data) markiert wird
dig +dnssec @8.8.8.8 example.com A

# Überprüfen des veröffentlichten DS beim Parent (z.B. TLD-Nameserver)
dig +short DS example.com @a.gtld-servers.net

# Tool für tiefergehende Validierung: delv (oder drill)
delv example.com @8.8.8.8

Importante: Compruebe desde varios resolvers públicos y desde su propia red; los efectos de caché pueden producir resultados distintos.

Errores frecuentes y cómo resolverlos

En el funcionamiento diario se repiten ciertos errores. Aquí los más importantes con causas y soluciones.

1) SERVFAIL para partes de la zona tras la activación

Causa: cadena interrumpida (DS ausente o incorrecto en la zona padre), firmas caducadas, o el servidor autoritativo aporta datos DNSKEY/DNSSEC inconsistentes.

Secuencia de comprobación:

  1. dig +dnssec example.com SOA y comprobar si existen RRSIG.
  2. dig +short DS example.com @parent-server y comprobar si el DS está presente y es correcto.
  3. Usar delv para ver el error de validación.

Solución: Asegúrese de que el DS corresponde al hash del KSK-DNSKEY; renueve las firmas localmente y, si es necesario, registre el DS correcto en el registrador.

2) Respuestas inconsistentes entre servidores autoritativos

Causa: archivos de zona distintos (no sincronizados), estados de claves diferentes; por ejemplo, un servidor sirve la nueva versión de DNSKEY y otro aún la antigua.

Solución: Revise los logs de transferencia de zona (AXFR/IXFR), sincronice los archivos de zona, valide los números de Serial y ejecute rndc reload o un reinicio coordinado. En clusters DNS, compruebe los mecanismos de replicación.

3) Problemas con cachés y TTL tras un rollover

Causa: valores antiguos de DNSKEY/Digest en caché impiden la validación inmediata tras el cambio. Los TTL y el caché negativo de errores de validación (NSEC/NSEC3) pueden afectar la duración.

Solución: Tenga en cuenta los TTL antes y después de los despliegues; planifique el rollover con tiempo de solapamiento suficiente. En emergencias puede reducir los TTL previamente, pero esto solo es práctico a corto plazo.

4) El registrador no admite actualización automática de DS

Causa: muchos registradores no soportan la adopción de CDS/CDNSKEY.

Solución: Automatice la carga del DS vía la API del registrador o ingréselo manualmente con pasos de aprobación documentados. Pruebe este flujo de trabajo en un dominio de prueba antes de ir a producción.

Lista de comprobación operativa antes del despliegue en vivo

  • Firmar una zona de prueba con la configuración idéntica y validar en staging.
  • Copia de seguridad de todas las claves privadas; copia offline segura del KSK.
  • Comprobar si el registrador permite actualizaciones DS y si dispone de APIs.
  • Configurar monitorización: alertas de expiración de RRSIG, validaciones fallidas y discrepancias entre NS.
  • Plan de rollback documentado: pasos para eliminar el DS en la zona padre y desactivar la firma si los validadores fallan masivamente.

Estrategia de rollback y medidas de emergencia

Si la puesta en producción causa problemas, existe una estrategia de retroceso pragmática:

  1. Rollback 1: Eliminar el registro DS en la zona padre (si necesita permitir la continuidad del servicio sin validación a corto plazo). Tenga en cuenta: eso vuelve a permitir respuestas DNS inseguras pero funcionales.
  2. Rollback 2: Si eso no es posible, restaure el archivo de zona firmado anterior y la configuración DNSKEY y publíquelas; no aumente los TTLs si procede, deje expirar las cachés.
  3. Comunicación: Informe de inmediato a los equipos afectados, a las canalizaciones CI/CD y al soporte del registrador externo.

Monitorización y mantenimiento en producción

Tareas regulares:

  • Supervisar las fechas de expiración de RRSIG; alertas cuando las firmas expiren dentro de una ventana predeterminada (p. ej., 7 días).
  • Cumplir y documentar la programación regular de rollover de claves.
  • Ejecutar de forma automatizada firmas de prueba y comprobaciones de validación desde múltiples redes (p. ej., mediante trabajos CI o comprobaciones de monitorización).

Conclusión: implementar DNSSEC como un proyecto operativo, no como una tarea única

DNSSEC aumenta la seguridad de la resolución de nombres, pero introduce complejidad operativa: gestión de claves, publicación de DS en el parent, procesos de rollover y monitorización son tareas operativas centrales. Las implementaciones exitosas siguen procesos claros, pruebas automatizadas y rutas de rollback validadas. Planifique recursos para la gestión de claves (HSM o KMS), pruebe los flujos de trabajo del registrador y automatice el monitorizado de firmas. Si considera estos puntos, reducirá el riesgo de interrupciones y convertirá DNSSEC en un componente estable de su endurecimiento de infraestructura.

Comandos de verificación y ejemplos

Selección de comandos útiles para consultas rápidas:

Shell
# Mostrar todas las DNSKEY de la zona
dig +dnssec example.com DNSKEY

# Mostrar detalles de RRSIG
dig +dnssec example.com RRSIG

# Verificar si el resolver valida la respuesta (flag ad)
dig +short +dnssec @8.8.8.8 example.com A | grep -i ad || echo "Not validated"

# Exportar el valor DS desde un archivo KSK
dnssec-dsfromkey Kexample.com.+008+12345.key

Lista de verificación para la implementación inicial (versión breve)

  • Staging: firmar y validar en el entorno de pruebas.
  • Política de claves: KSK offline/HSM, ZSK rotando de forma automatizada.
  • Registrador: comprobar API o soporte, probar el flujo de trabajo de DS.
  • Monitorización: configurar RRSIG-Expiry, DS-Drift, errores de validación.
  • Plan de rollback: eliminar DS, restaurar la zona antigua, playbook de comunicación.

Fuentes y herramientas (recomendaciones)

Herramientas habituales: BIND (dnssec-keygen, dnssec-signzone), Knot, PowerDNS, delv/drill para validación, OpenDNSSEC para integración HSM y automatización de claves. Elija la herramienta que se adapte a su estructura operativa y pruebe a fondo los puntos de integración (API del registrador, replicación de zonas).

Resumen: Implementar DNSSEC es manejable si define con claridad la gestión de claves, las pruebas, los flujos de trabajo del registrador y la monitorización con antelación. Establezca procesos claros para KSK/ZSK, rollover y recuperación y automatice las comprobaciones recurrentes. Así minimizará los riesgos operativos y garantizará una cadena de confianza robusta para sus zonas DNS.

Para este tema también son importantes la Dns-Signierung y Ksk Zsk. El artículo sitúa estos aspectos de forma comprensible y muestra en qué debe centrarse la operativa diaria.