Administración de sistemas, Hardening, Protocolos

DnsSec How to

Print Friendly, PDF & Email

DNSSEC HOWTO

¿Que es dnssec?

Es un sistema de intercambio de certificados en las respuestas con los dominios de nivel superior para evitar ataques de envenenamiento de cache, dnsflood…

Básicamente lo que vamos a hacer es decirle al resto del mundo qué no tenemos en nuestra zona dns, quién puede enviarnos peticiones y de quién aceptamos actualizaciones, amén de intercambiar una serie de firmas para identificarnos como nosotros ante nuestros servidores de dominio de nivel superior.

¿Cómo lo configuro?

Primero vamos instalar harvege que es un script en c que se basa en un generador de números aleatorios impredecibles basados en la adaptación del algoritmo de harvege  http://www.irisa.fr/caps/projects/hipsor/
Se puede ver información sobre el paquete en http://www.issihosts.com/haveged/

Mejora la entropía agilizando la creación de claves y es opcional
aptitude install haveged

#Creamos el fichero donde se van a guardar las llaves
mkdir /etc/bind/keys && chgrp bind /etc/bind/keys

Configurarmos el fichero named.conf.options diciendóle a nuestro dns de qué servidores va a permitir una transferencia de zon ao cuales pueden hacerle peticiones, para ello creamos una acl(access control list) antes del bloque de options con las ips locales, externas, dns primarios y secundarios que le queremos permitir a nuestro servidor dns.

fichero /etc/bind/named.conf.options

acl “trusted” {
127.0.0.1;
26.125.26.50;
16.102.205.10;
};
options {
directory “/var/cache/bind”;

// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk.  See http://www.kb.cert.org/vuls/id/800113

// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0’s placeholder.

// forwarders {
//      0.0.0.0;
// };

//========================================================================
// If BIND logs error messages about the root key being expired,
// you will need to update your keys.  See https://www.isc.org/bind-keys
//========================================================================

#DnsSec Config
#dnssec-validation auto;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
managed-keys-directory “/etc/bind/keys”;

auth-nxdomain no;    # conform to RFC1035
listen-on-v6 { any; };

version “HackingCodeSchool Secured DNS server”;

#Recursion Config
allow-query { trusted; };
allow-recursion { trusted; };
allow-query-cache { trusted; };
server-id none;
additional-from-cache no;

};

Cumpliendo con el rfc 5155 vamos a usar nsec3 como algoritmo de firma para nuestro dns, no sólo porque lo diga el rfc si no porque es lo más seguro.
#Creamos la key singning key o llave de firmar llave
dnssec-keygen -K keys/ -f KSK -a NSEC3RSASHA1 -b 4096 hackingcodeschool.net

#Creamos la llave de firmado de la zona
dnssec-keygen  -K keys/ -a NSEC3RSASHA1 -b 2048  hackingcodeschool.net

#Le ponemos la llave a nuestra zona, en mi caso se encuentra en un directorio de zonas
cat keys/Khackingcodeschool.net.+007+*.key >> zones/pri.hackingcodeschool.net

#firmamos usando un salt randomizado
dnssec-signzone -A -3 $(head -c 1000 /dev/random | sha1sum | cut -b 1-16)  -S -o hackingcodeschool.net -K keys/ zones/pri.hackingcodeschool.net

#Ahora debemos generar el ds record que sirve para decirle al dominio de nivel superior que #realmente somos nosotros.
dnssec-dsfromkey -K keys/  -f zones/pri.hackingcodeschool.net.signed hackingcodeschool.net

Todo junto:

Vamos a comprobar que está todo ok:
http://dnsviz.net/d/hackingcodeschool.net/analyze/
http://dnssec-debugger.verisignlabs.com

Algunas pruebas con dig:
#viendo la versión del server
dig +short @localhost version.bind chaos txt

#viendo dnssec

dig +dnssec @localhost hackingcodeschool.net DNSKEY

Ahora para que sea completo nos toca pelearnos con ovh para o con nuestro registrador para admita nuestras claves públicas ds o nosotros firmar nuestra zona con las suyas, el tema es que como estas claves son accesibles es importarte rotarlas para que se mantega la integridad del sistema de seguridad.

Dejo las referencias usadas para este post y lo anterior queda para el siguiente.

Referencias:

https://grepular.com/Understanding_DNSSEC

http://info.menandmice.com/blog/bid/73645/Take-your-DNSSEC-with-a-grain-of-salt
https://grepular.com/Understanding_DNSSEC

Documentación interesante:

https://www.iana.org/assignments/dnssec-nsec3-parameters/dnssec-nsec3-parameters.xhtml

Tagged ,

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.