DNSSEC ¿ Que es ? Y como se configura en Bind9 en CentOS y RedHat 7.x

Segun el articulo de ADSL ZONE – Internet y sus usuarios necesitan DNSSEC, los ataques DNS no cesan

Es requerido que la mayoría de sitios empiece a usar DNSSEC como complemento al https, pero…

¿ Que es DNSSEC y como funciona ?

DNSSEC es (Domain Name System Security Extensions) es para el DNS algo similar a un parche que evita el DNS Spoofing

se añaden firmas digitales en las partes implicadas: dominio, en el registrar y en el servidor DNS. El navegador comprueba los servidores DNS, Si las firmas digitales públicas que recibe coinciden con las publicadas en el registrar, el navegador dará por válida la solicitud evitando la redirección a sitios maliciosos si las llaves no coinciden.

Pasos para configurar un dominio en BIND9 usando CentOS o RedHat 7.x

En la carpeta donde esta el archivo .host del dominio o zona a segurar, para este ejemplo se usara el dominio lastdragon.net

1 Generar llaves

dnssec-keygen -a RSASHA256 -b 4096 -n ZONE lastdragon.net
dnssec-keygen -f KSK -a RSASHA256 -b 4096 -n ZONE lastdragon.net

El resultado sera 4 archivos adicoiales ( Similares a estos )

-rw-r–r– 1 root root 956 feb 25 18:48 Klastdragon.net.+007+02169.key
-rw——- 1 root root 3319 feb 25 18:48 Klastdragon.net.+007+02169.private
-rw-r–r– 1 root root 958 feb 25 18:48 Klastdragon.net.+007+24215.key
-rw——- 1 root root 3319 feb 25 18:48 Klastdragon.net.+007+24215.private

2 el contenido de los archivos key va al final del archivo lastdragon.net.hosts

Se puede inyectar el contenido con un cat, asi:

cat Klastdragon.net.+007+*.key >> lastdragon.net.hosts

3 Firmar la zona

dnssec-signzone -A -3 $(head -c 1000 /dev/random | sha256sum | cut -b 1-16) -N INCREMENT -o lastdragon.net -t lastdragon.net.hosts

El resultado sera similar a:

Verifying the zone using the following algorithms: NSEC3RSASHA1.
Zone fully signed:
Algorithm: NSEC3RSASHA1: KSKs: 1 active, 0 stand-by, 0 revoked
ZSKs: 1 active, 0 stand-by, 0 revoked
lastdragon.net.hosts.signed
Signatures generated: 27
Signatures retained: 0
Signatures dropped: 0
Signatures successfully verified: 0
Signatures unsuccessfully verified: 0
Signing time in seconds: 0.168
Signatures per second: 159.821
Runtime in seconds: 0.179

4 named.conf

En las opciones del named.conf deben ir las siguientes 3 lineas:

dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;

ejemplo:

acl recursive-clients { 127.0.0.1; };

options {
directory “/var/named”;
dump-file “/var/named/data/cache_dump.db”;
statistics-file “/var/named/data/named_stats.txt”;
memstatistics-file “/var/named/data/named_mem_stats.txt”;

allow-recursion { recursive-clients; };
allow-query { any; };

/*
– If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
– If you are building a RECURSIVE (caching) DNS server, you need to enable
recursion.
– If your recursive DNS server has a public IP address, you MUST enable access
control to limit queries to your legitimate users. Failing to do so will
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface
*/
recursion yes;

dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;

/* Path to ISC DLV key */
bindkeys-file “/etc/named.iscdlv.key”;

managed-keys-directory “/var/named/dynamic”;

pid-file “/run/named/named.pid”;
session-keyfile “/run/named/session.key”;
};

En la zone debe usarse el archivo hosts firmado ejemplo:

zone “lastdragon.net” {
type master;
file “/var/named/lastdragon.net.hosts.signed”;
};

5 Ir al registrar para agregar registros DS, el hash puede ser encontrado el archivo

dsset-lastdragon.net.

La linea uno contendrá algo como:

lastdragon.net. IN DS 49405 8 1 696C71F1C410029346F309F45464F308A4F921AE

de esa linea:

key-tag es 49405 el algoritmo que se uso fue sha256 tipo de digest sha1

en el whois debe salir algo como:

DNSSEC: signedDelegation
DNSSEC DS Data: 49405 8 1 696C71F1C410029346F309F45464F308A4F921AE

4 Comments

Add a Comment

Comment spam protected by SpamBam