207.3 - Comandos clave: Seguridad DNS

DNSSEC - Registros y claves

RegistroDescripcionFlag/Uso
DNSKEYClave publica de la zonaFlag 256 = ZSK, Flag 257 = KSK
RRSIGFirma digital de un conjunto de registrosContiene firma, algoritmo, fechas
DSDelegation Signer (en zona padre)Hash de la KSK de la zona hija
NSECPrueba de no-existencia (permite zone walking)Lista el siguiente nombre en la zona
NSEC3Prueba de no-existencia con hash (evita zone walking)Usa hashes en lugar de nombres

DNSSEC - Tipos de claves

ClaveDescripcionCaracteristicas
KSK (Key Signing Key)Firma las claves DNSKEYMas larga (2048-4096 bits), rotacion infrecuente
ZSK (Zone Signing Key)Firma los registros de datosMas corta (1024-2048 bits), rotacion frecuente

DNSSEC - Comandos de generacion y firma

ComandoDescripcionEjemplo
dnssec-keygen -f KSKGenerar KSKdnssec-keygen -a RSASHA256 -b 2048 -n ZONE -f KSK ejemplo.com
dnssec-keygenGenerar ZSKdnssec-keygen -a RSASHA256 -b 1024 -n ZONE ejemplo.com
dnssec-signzoneFirmar una zonadnssec-signzone -o ejemplo.com db.ejemplo.com

DNSSEC - Verificacion con dig

ComandoDescripcionEjemplo
dig +dnssec DOMINIOConsulta con info DNSSECdig +dnssec ejemplo.com A
dig DOMINIO DNSKEYVer claves publicasdig ejemplo.com DNSKEY
dig DOMINIO DSVer registro DSdig ejemplo.com DS
Flag ad en respuestaIndica datos autenticados por DNSSECflags: qr rd ra ad;

DNSSEC - Configuracion en BIND

DirectivaDescripcionEjemplo
dnssec-validation autoValidacion automatica con claves raizEn bloque options {}
dnssec-validation yesValidacion con trusted-keys manualesEn bloque options {}

TSIG - Autenticacion de transacciones

ComandoDescripcionEjemplo
tsig-keygenGenerar clave TSIGtsig-keygen -a hmac-sha256 mi-clave > tsig.key
dig -k KEYFILEConsulta autenticada con TSIGdig @ns1 ejemplo.com AXFR -k tsig.key

Configuracion TSIG en named.conf

key "nombre-clave" {
    algorithm hmac-sha256;
    secret "base64Secret==";
};

server IP {
    keys { nombre-clave; };
};

zone "ejemplo.com" {
    allow-transfer { key nombre-clave; };
};

Chroot

ConfiguracionDescripcionEjemplo
Paquete RHELbind-chrootdnf install bind-chroot
Directorio chroot/var/named/chrootContiene etc/, var/, dev/
Opcion named-t DIR para especificar chrootnamed -t /var/named/chroot
Servicio systemdnamed-chroot.servicesystemctl start named-chroot
Configuracion Debian/etc/default/namedOPTIONS="-u bind -t /var/lib/named"

Restriccion de acceso

DirectivaDescripcionEjemplo
allow-queryQuien puede consultarallow-query { 192.168.0.0/16; };
allow-recursionQuien puede usar recursionallow-recursion { localnets; };
allow-transferQuien puede transferir zonasallow-transfer { 192.168.1.11; };
allow-updateQuien puede actualizar dinamicamenteallow-update { key dhcp-key; };
recursion noDeshabilitar recursion (servidor autoritativo)En bloque options {}
version "none"Ocultar version de BINDEn bloque options {}

Rate limiting

ParametroDescripcionEjemplo
responses-per-secondLimite de respuestas identicas/sresponses-per-second 10;
nxdomains-per-secondLimite de NXDOMAIN/snxdomains-per-second 5;
errors-per-secondLimite de errores/serrors-per-second 5;
windowVentana de tiempowindow 5;
slipFrecuencia de respuestas truncadas (TC)slip 2;

Split DNS (Views)

view "interna" {
    match-clients { 192.168.0.0/16; };
    recursion yes;
    zone "ejemplo.com" { type master; file "interna.db"; };
};

view "externa" {
    match-clients { any; };
    recursion no;
    zone "ejemplo.com" { type master; file "externa.db"; };
};

DNS sobre TLS/HTTPS (conceptos)

ProtocoloPuertoRFCDescripcion
DNS over TLS (DoT)853RFC 7858Cifrado TLS de consultas DNS
DNS over HTTPS (DoH)443RFC 8484Consultas DNS encapsuladas en HTTPS