viernes, 2 de noviembre de 2012

DNSSEC en BIND9

DNSSEC en BIND9


Configurar DNSSEC (Domain Name System Security Extensions) en BIND9.


Esta suite contiene especificaciones para proveer a los DNS de seguridad a través de protocolo IP. Autentifica los datos de un DNS y garantiza la integridad de los mismos. Está pensado para proteger a los "resolvers" contra ataques de tipo "dns cache spoofing" 

Para ello, instalamos en el servidor maestro lo siguiente:

       aptitude  install dnssec-tools libnet-dns-sec-perl libmailtools-perl libcrypt-openssl-random-perl

Editamos named.conf.options

       vim /etc/bind/named.options

 
E insertamos "dnssec-enable yes;", "dnssec-validation auto;" y "dnssec-lookaside auto;" dentro de options.


dnssec-lookaside. No todos los TLD están firmados (por ejemplo .to), es por ello que syslog puede mostrar el error "chain broken". Con esta opción, si tenemos un TLD sin firmar, podremos agregar nuestras claves (DLV) en https://div.isc.org.

En este caso, ".com." está firmado y tiene un registro DS en root.

En versiones anteriores de BIND9 9.7 y otras anteriores, hay que agregar las claves de root incluidas en "bind.keys" a "named.conf.options" o bien añadir la línea "include "/etc/bind/bind.keys" FUERA DE options. En el caso de la versión 9.8 con "dnssec-validation auto;" se incluyen automáticamente.

En caso de cambiar la ubicación de este fichero será necesaria la inclusión de esta línea.

Firmamos la zona con "zonesigner". El man de este comando contiene la información necesaria para firmar una zona. 

Una forma aceptada de firmar las zonas es:

       zonesigner -genkeys -usensec3 -zone miempresa.com db.miempresa.com

donde:

genkeys genera las claves "zsk" (zone signing key) y ksk (key signing key). zsk es usada para firmar la zona y ksk para conectar con el exterior.

nsec3 es, básicamente un método que controla que entre dos servicios dns no se encuentra otro servicio. Controlando la clave RRSIG se puede comprobar si entre dos servicios se ha "colado" algún registro falso.

Esto nos genera 3 pares de claves (pública/privada), 1 par ksk, y dos pares zsk , dos activas y dos pasivas.




También el fichero miepresa.com.krf que contiene los detalles para la administración de las claves generadas y el fichero dsset.miempresa.com que contiene los registros DS para la zona.

Podemos comprobar el estado de la zona firmada con el comando "donuts"

      donuts  --level 8 -v db.miempresa.com.signed miempresa.com


Este comando en su nivel 8 de registro de errores, nos mostrará 2: uno por solo tener una entrada NS en la zona y otro por no encontrar un registro de correo MX. Si ejecutamos donuts sin "--level" toma su valor por defecto 5 y no muestra errores.

Modificamos "named.conf.local" cambiamos el contenido de file para la zona "miempresa.com" con el fichero generado al firmar la zona:

      file "/etc/bind/db.miempresa.com.signed

reiniciamos BIND9


Modificamos el servidor secundario. Editamos named.conf.options y agregamos las mismas líneas como en el caso del servidor primario.

Editamos named.conf.local y como en el primario, agregamos a file el fichero "signed".

Eliminamos los ficheros generados en /var/cache/bind/

      rm -f /var/cache/bind/db.miempresa.com

Reiniciamos BIND9

Comprobamos que DNSSEC está operando bien.



root@server1:/etc/bind# dig +dnssec miempresa.com

; <<>> DiG 9.8.1-P1 <<>> +dnssec miempresa.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64141
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4096
;; QUESTION SECTION:
;miempresa.com.            IN    A

;; ANSWER SECTION:
miempresa.com.        604800    IN    A    192.168.1.6
miempresa.com.        604800    IN    RRSIG    A 8 2 604800 20121127065338 20121028065338 41670 miempresa.com. KmqkzrVT8lBJlvspF89FaID6f4hB9pMeOSHAo4nIg/mg8639PULdS1rW ss2oUHA4WZLr80yHIdcFX9GrK9j2SUDiQfF1UTOU2RnuWmVfvda/SdhO E36litQHVkODB4ggYkSrL9hSOzCYcgeEDKZj4uNcnfiB7C4aNQa74PlZ Neo=

;; AUTHORITY SECTION:
miempresa.com.        604800    IN    NS    server.miempresa.com.
miempresa.com.        604800    IN    RRSIG    NS 8 2 604800 20121127065338 20121028065338 41670 miempresa.com. ROgI4RDvyvOyVZqsUsAlUsWXMD2Bes4yrqt/5BGZz/BD/7BH6mkk/kg5 sWiHIWP45VoeK8sdLjjyBQhz52ZSWg5nHcmAc352oBcaS9UjqSafiu/d c3cif5xUpjGUul2ZmohIz8Eql0T7cVYoQcZRRtLdvSaE9l6w4UE9Cz0W jcM=

;; ADDITIONAL SECTION:
server.miempresa.com.    604800    IN    A    192.168.1.6
server.miempresa.com.    604800    IN    RRSIG    A 8 3 604800 20121127065338 20121028065338 41670 miempresa.com. vK6Exqikh5A2d6s/0Z/5zJY/P3GRCgQagoMLSJ2A83ztEk6blPPdktkc EtNmPxuGs7s9vJZJg4gHpa4AtlEh6RpyABVDWAECVLMLx+H2KThz2CsF hDhJeTCL2nCnbtUdOBp7VN8uSOw1+tJEbhMPsGLm+nAEPrfTgM9zhTlm mFA=

;; Query time: 5 msec
;; SERVER: 192.168.1.5#53(192.168.1.5)
;; WHEN: Fri Nov  2 18:54:36 2012
;; MSG SIZE  rcvd: 614

root@server1:/etc/bind#



 Ahora podemos subir las claves al repositorio DLV de isc.org y añadir los registros DS (dsset.miempresa.com) a la zona.
 



   








No hay comentarios:

Publicar un comentario