Configurare il DNSServer BIND per supportare DNSSec

Assicuratevi che il il TLD del dominio che avete registrato o che intendete registrare supporti DNSSec. Il dominio deve essere registrato presso un registrar che permette di gestire questa funzionalità.

Per entrambe le situazioni, in alcuni casi, potrebbe esserci un workaround usando https://dlv.isc.org.

Il dominio di test che ho usato per creare questa guida è:
lucafrosini.eu

Occorre innanzitutto installare il DNS Server bind9 su una macchina linux (a meno che non tu abbia un pannello per la sua gestione presso il registrar e/o provider).
N.B.: Se il vostro registrar (o il vostro provider) vi mette a disposizione un pannello per l’amministrazione di tutti i record DNSSec la sicurezza è teoricamente compromessa in quanto sarete obbligati a salvare la chiave privata presso lo stesso.

Installazione bind9 (guida testata su ubuntu 13.10 e ubuntu 12.04)
~$ sudo apt-get install bind9

Entrare nella directory di configurazione di bind e listarne il contenuto che dovrebbe essere simile a quanto riportato.

~$ cd /etc/bind/
/etc/bind$ ls
bind.keys  db.127  db.empty  db.root     named.conf.default-zones  named.conf.options  zones.rfc1918
db.0       db.255  db.local  named.conf  named.conf.local          rndc.key

Il file di configurazione named.conf dovrebbe essere simile a quello che mostro di seguito.
Esso include tra gli altri il file con la configurazione delle opzioni (named.conf.options), il file con la configurazione delle zone gestite localmente (named.conf.local) e il file per la gestione delle zone di default (named.conf.default-zones) come ad esempio localhost.

/etc/bind$ cat named.conf
// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the 
// structure of BIND configuration files in Debian, *BEFORE* you customize 
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";

Il contenuto del file named.conf.options che dovrebbe essere del tipo:

/etc/bind$ cat named.conf.options 
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-validation auto;

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

Andiamo quindi a cambiare le opzioni per gestire il DNSSec:
/etc/bind$ sudo nano named.conf.options

Il file dovrà diventare del tipo:

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
	//========================================================================

        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { any; };
        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;
        bindkeys-file "/etc/bind/bind.keys";
};

Abbiamo quindi sostituito la direttiva dnssec-validation auto; con dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
bindkeys-file "/etc/bind/bind.keys";

Dove:
dnssec-enable yes; abilita DNSSec.
dnssec-validation yes; abilita la validazione dei record DNSSec.
Mentre dnssec-lookaside auto; e bindkeys-file “/etc/bind/bind.keys”; configurano bind per leggere le chiavi di validazione dal file bind.key la prima volta che viene eseguito.

A cosa serve il file bind.key?
Normalmente ci dovrebbe essere un persorso di firma completo che parte dalla root zone (.) giù fino alla vostra zona. Questo significa che la vostra zona padre (es. .eu per lucafrosini.eu) deve essere anch’essa firmata.
Sfortunatamente non tutti i TLDs sono ancora firmati (aka non implementano DNSSec).
Se uno dei padri non è firmato, la catena è rotta e non potete usare la chiave della root zone come trusted anchor nella configurazione di BIND.
Per questo motivo è stato inventato DNSSEC look-aside validation (DLV). In breve, i DLV funzionano coma repository alternativi per le trusted keys. È possibile inviare ad essi le zone keys se non c’è un fully signed path per la vostra zona.
Il più famoso DLV repository è dlv.isc.org (ISC è la società che ha creato BIND). Sia la chiave della root zone che quella dei dlv.isc.org sono incluse in /etc/bind/bind.keys (altrimenti aggiornate BIND).
Tradotto da http://www.howtoforge.com/configuring-dnssec-on-bind9-9.7.3-on-debian-squeeze-ubuntu-11.10

N.B. All’inizio della guida dicevo che in alcuni casi questo potrebbe essere un workaround. Infatti se la validazione dei record dns viene fatto da resolver qualsiasi, non è detto che questi usino il DLV di isc.org pertanto la validazione potrebbe fallire. Cosa ad esempio che succede se usate il risolutore di Verisign che useremo a fine tutorial (http://dnssec-debugger.verisignlabs.com). Mentre ad esempio viene tenuto in considerazione da http://dnsviz.net/. Il risolutore di Verisign ce lo suggerisce infatti come alternativa. Ne parleremo meglio alla fine.

Adesso non rimane che creare la zona, per farlo continuate la lettura con il tutorial Creare una zona in BIND

2 thoughts on “Configurare il DNSServer BIND per supportare DNSSec

Comments are closed.