DNSSEC
DNSSEC (DNS Security Extensions) es un conjunto de extensiones de seguridad para el sistema de nombres de dominio (DNS) que proporciona autenticación e integridad a las respuestas DNS.
¿Qué es DNSSEC?
DNSSEC es una tecnología que protege el DNS contra ataques de suplantación y manipulación mediante firmas digitales criptográficas en los registros DNS.
Problemas que Resuelve
Ataques DNS
- DNS Spoofing: Suplantación de DNS
- DNS Cache Poisoning: Envenenamiento de caché
- Man-in-the-Middle: Ataques de intermediario
- Pharming: Redirección maliciosa
Vulnerabilidades
- Lack of Authentication: Falta de autenticación
- Data Integrity: Falta de integridad
- Trust Issues: Problemas de confianza
- Security Gaps: Brechas de seguridad
Componentes DNSSEC
Registros de Recursos
- RRSIG: Firma de registro de recursos
- DNSKEY: Clave pública DNS
- DS: Delegación firmada
- NSEC/NSEC3: Prueba de no existencia
- NSEC3PARAM: Parámetros NSEC3
Algoritmos Criptográficos
- RSA: Algoritmo de clave pública
- ECDSA: Firma digital de curva elíptica
- EdDSA: Firma digital de Edwards
- DSA: Algoritmo de firma digital
Funcionamiento
Proceso de Firma
- Generar claves: Crear par de claves ZSK y KSK
- Firmar registros: Firmar registros DNS con ZSK
- Firmar ZSK: Firmar ZSK con KSK
- Publicar: Publicar registros firmados
Proceso de Verificación
- Resolver consulta: Cliente consulta DNS
- Obtener registros: Servidor devuelve registros firmados
- Verificar firma: Cliente verifica firma
- Validar: Validar autenticidad e integridad
Implementación
Configuración BIND
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| # Configuración /etc/bind/named.conf.options
options {
directory "/var/cache/bind";
# Habilitar DNSSEC
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
# Archivos de claves
key-directory "/etc/bind/keys";
# Políticas de firma
auto-dnssec maintain;
inline-signing yes;
};
# Configuración de zona
zone "example.com" {
type master;
file "/etc/bind/db.example.com";
# Habilitar DNSSEC
auto-dnssec maintain;
inline-signing yes;
# Claves de firma
key-directory "/etc/bind/keys";
};
|
Generación de Claves
1
2
3
4
5
6
7
8
9
10
11
| # Generar clave de firma de zona (ZSK)
dnssec-keygen -a RSASHA256 -b 2048 -n ZONE example.com
# Generar clave de firma de clave (KSK)
dnssec-keygen -a RSASHA256 -b 2048 -n ZONE -f KSK example.com
# Firmar zona
dnssec-signzone -S -o example.com db.example.com
# Verificar firma
dnssec-verify -o example.com db.example.com.signed
|
Configuración Unbound
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| # Configuración /etc/unbound/unbound.conf
server:
# Habilitar DNSSEC
module-config: "validator iterator"
# Validación DNSSEC
trust-anchor-file: "/etc/unbound/root.key"
# Configuración de validación
val-clean-additional: yes
val-permissive-mode: no
# Logging
log-queries: yes
log-replies: yes
log-servfail: yes
|
Algoritmos Soportados
RSA
- RSA-MD5: Obsoleto, no recomendado
- RSA-SHA1: Obsoleto, no recomendado
- RSA-SHA256: Recomendado
- RSA-SHA512: Para claves largas
ECDSA
- ECDSAP256SHA256: Curva P-256
- ECDSAP384SHA384: Curva P-384
- Seguridad: Equivalente a RSA-3072
- Rendimiento: Más eficiente que RSA
EdDSA
- Ed25519: Firma de Edwards
- Ed448: Firma de Edwards
- Seguridad: Muy alta
- Rendimiento: Muy eficiente
Herramientas de Gestión
BIND
1
2
3
4
5
6
7
8
9
| # Verificar estado DNSSEC
dnssec-verify -o example.com db.example.com.signed
# Verificar claves
dnssec-keygen -T example.com
# Rotar claves
dnssec-keygen -a RSASHA256 -b 2048 -n ZONE example.com
dnssec-signzone -S -o example.com db.example.com
|
OpenDNSSEC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| # Configuración OpenDNSSEC
# /etc/opendnssec/conf.xml
<OpenDNSSEC>
<Common>
<Datastore>sqlite3:///var/lib/opendnssec/database.sqlite</Datastore>
<LogLevel>INFO</LogLevel>
</Common>
<ZoneList>
<Zone>
<Name>example.com</Name>
<Policy>default</Policy>
<Input>file:///etc/bind/db.example.com</Input>
<Output>file:///etc/bind/db.example.com.signed</Output>
</Zone>
</ZoneList>
</OpenDNSSEC>
|
Herramientas de Verificación
1
2
3
4
5
6
7
8
9
| # Verificar DNSSEC
dig +dnssec example.com
dig +sigchase example.com
# Verificar cadena de confianza
dig +sigchase +trusted-key=/etc/bind/root.key example.com
# Verificar delegación
dig +sigchase +trusted-key=/etc/bind/root.key example.com DS
|
Aplicaciones
Seguridad Web
- HTTPS: Validación de certificados
- HSTS: HTTP Strict Transport Security
- Certificate Pinning: Fijación de certificados
- DANE: DNS-based Authentication
Email Security
- SPF: Sender Policy Framework
- DKIM: DomainKeys Identified Mail
- DMARC: Domain-based Message Authentication
- MTA-STS: SMTP MTA Strict Transport Security
Comunicaciones
- VoIP: Voz sobre IP
- SIP: Session Initiation Protocol
- XMPP: Extensible Messaging and Presence Protocol
- Matrix: Protocolo de mensajería
Ventajas y Desventajas
Ventajas
- Authentication: Autenticación de respuestas
- Integrity: Integridad de datos
- Standard: Estándar ampliamente adoptado
- Transparent: Transparente para usuarios
Desventajas
- Complexity: Complejidad de implementación
- Performance: Overhead de rendimiento
- Key Management: Gestión compleja de claves
- Adoption: Adopción limitada
Mejores Prácticas
Configuración
- Strong Algorithms: Usar algoritmos fuertes
- Key Rotation: Rotación regular de claves
- Monitoring: Monitoreo continuo
- Backup: Respaldos de claves
Seguridad
- Key Security: Proteger claves privadas
- Access Control: Control de acceso
- Audit Logging: Registro de auditoría
- Incident Response: Respuesta a incidentes
Rendimiento
- Caching: Configurar caché adecuado
- Load Balancing: Balanceo de carga
- Monitoring: Monitoreo de rendimiento
- Optimization: Optimización de consultas
Monitoreo y Troubleshooting
Herramientas de Monitoreo
1
2
3
4
5
6
7
8
9
| # Verificar estado DNSSEC
dig +dnssec example.com
dig +sigchase example.com
# Verificar claves
dnssec-keygen -T example.com
# Verificar delegación
dig +sigchase +trusted-key=/etc/bind/root.key example.com DS
|
Problemas Comunes
- Key Rollover: Problemas de rotación de claves
- Delegation: Problemas de delegación
- Validation: Problemas de validación
- Performance: Problemas de rendimiento
Logs y Debugging
1
2
3
4
5
6
7
8
9
| # Ver logs de BIND
tail -f /var/log/bind/bind.log
# Ver logs de Unbound
tail -f /var/log/unbound/unbound.log
# Debug DNSSEC
dig +dnssec +cd example.com
dig +sigchase +trusted-key=/etc/bind/root.key example.com
|
Conceptos Relacionados
Referencias