Appunti su Bind 9
Update delle zone mediante nsupdate
Configurazione
Per gestire le zone del proprio dns locale mediante nsupdate, la soluzione semplice e` consentire l'update da localhost senza protezione. Occorre configurare Bind per le zone che accettano updates da locale, mettendo dentro ad ogni zona che deve accettare updates una riga cosi`:
allow-update { localhost; };
Per gestire le zone da remoto, garantendo una sicurezza adeguata, occorre generare delle chiavi da usare con nsupdate lato client e dentro Bind lato server.
- Generare le chiavi pubblica e privata cosi`:
dnssec-keygen -a HMAC-MD5 -b 128 -n zone <nome della chiave> chmod 0600 K<nome della chiave>*
Questa operazione produce due files di nome K<nome della chiave><rusco>.*. Quello che finisce in "private" e` la chiave privata, quello che finisce in "key" e` la pubblica. E` importante che siano chmod 600 altrimenti non va.
- Leggere il contenuto della chiave pubblica, e copiarsi l'ultma parte, che e` la chiave vera e propria, e andra` inserita in named.conf sul server.
- Editare named.conf del server e inserire una sezione (fuori da tutto, non nelle zone) cosi`:
key <nome della chiave> { algorithm HMAC-MD5; secret <la stringa presa dalla chiave pubblica>; };
- Inoltre, sempre in named.conf, inserire in ogni zona che si vuole gestire con quella chiave una riga che dice
allow-update { key <nome della chiave>; };
E` possibile anche mescolare le cose, cosi`:
allow-update { key <nome della chiave>; localhost; };
Uso di nsupdate
In locale, senza usare chiavi, basta lanciare nsupdate e si entra nella shell da cui si fanno le modifiche alla zona. Alternativamente, si puo` dire a nsupdate di leggere un file di comandi con l'opzione "-v <nome file di comandi>".
In remoto, si lancia nsupdate dicendogli dove trovare la chiave privata, con l'opzione "-k <nome file chiave privata">
- Da dentro la shell di nsupdate, oppure nel file di comando, si possono dare comandi per aggiungere e togliere host. Occhio perche` la risoluzione diretta e inversa vanno gestite una per una.
Per aggiungere un host (risoluzione diretta), si puo` fare cosi`:
> server localhost (oppure il nome del server remoto a cui ci si collega) > update add hostname.domain.tld. <ttl> A <indirizzo ip> (esempio: update add asterix.kurgan.org. 36000 A 62.123.154.75) > send
Se non si ricevono errori, l'host e` aggiunto.
Per cancellare un host (risoluzione diretta):
> server localhost (oppure il nome del server remoto a cui ci si collega) > update delete hostname.domain.tld. A (esempio: update delete asterix.kurgan.org. A) > send