Appunti vari su Bind9. Ah, il misterioso mondo dei DNS... ci vorrebbe un corso di un mese solo su questo argomento.
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 e inversa), 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 vongola.kurgan.org. 43600 A 10.1.42.11) > update add <indirizzo ip al contrario>.in-addr.arpa <TTL> PTR <hostname.domain.tld.> (esempio: update add 11.42.1.10.in-addr.arpa 43600 PTR vongola.kurgan.org.) > 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