Di Jamie Norrish
Impostare le opzioni di configurazione in modo da ridurre i possibili problemi.
Ci sono pochi semplici passaggi che vi permetteranno di ridurre contemporaneamente problemi e carico sul vostro server. Il materiale qui presente non è molto più che un punto di partenza; se siete particolarmente interessati agli aspetti relativi alla sicurezza (e dovreste esserlo), consultate altre risorse in Internet (vedi l'ultimo capitolo).
Le seguenti direttive di configurazione appaiono in named.conf
.
Se una direttiva appare nella sezione options
del file, si applica
a tutte le zone elencate nel file. Se invece appare all'interno di
una voce di zone
, si applica solo a quella zona. Una voce di
zone
esclude automaticamente quella nella sezione options
.
Per fare in modo che un vostro server secondario possa
rispondere alle richieste sul vostro dominio, esso dovrà essere
in grado di trasferire le informazioni di zona dal vostro server
primario. Pochissimi altri devono poterlo fare. Quindi
è necessario usare l'opzione allow-transfer
per restringere
solo agli autorizzati i trasferimenti di zona, assumiamo ad esempio
che 192.168.1.4 sia l'indirizzo IP di ns.friend.bogus e aggiungete
voi stessi questa opzione a solo scopo di debug:
zone "linux.bogus" { allow-transfer { 192.168.1.4; localhost; }; };
Restringendo così i trasferimenti di zona vi assicurerete che agli esterni saranno disponibili solo le informazioni necessarie a identificare il vostro dominio e nulla di più; nessuno potrà avere ulteriori informazioni sulla vostra configurazione.
Prima di tutto, disabilitate le interrogazioni dai domini che non sono vostri, lasciando questa possibilità solo alle macchine della vostra rete locale. Questo non solo previene un uso malizioso del DNS server, ma riduce anche l'uso non necessario del vostro server.
options { allow-query { 192.168.196.0/24; localhost; }; }; zone "linux.bogus" { allow-query { any; }; }; zone "196.168.192.in-addr.arpa" { allow-query { any; }; };
Inoltre, disabilitate le interrogazioni ricorsive, eccetto che dalle macchine locali. Questo riduce la possibilità di attacchi di "cache poisoning", con cui vengono inviati dati falsi al vostro server.
options { allow-recursion { 192.168.196.0/24; localhost; }; };
Sarebbe una buona idea far partire named con un utente diverso da root, così un eventuale attacco riuscito potrebbe fare danni molto limitati. Prima dovrete creare un utente sotto cui far girare named, poi modificare tutti gli script che usate per farlo partire di conseguenza. Passate i nuovi nomi di utente e gruppo a named usando i flag -u e -g .
Ad esempio, nella Debian GNU/Linux 2.2 modificherete lo script
/etc/init.d/bind
in modo da avere la seguente riga (quando
l'utente named
è stato creato):
start-stop-daemon --start --quiet --exec /usr/sbin/named -- -u named
La stessa cosa può essere fatta con Red Hat e altre distribuzioni.
Dave Lugo ha descritto una configurazione sicura "dual chroot" http://www.etherboy.com/dns/chrootdns.html che potreste trovare interessante, rende il vostro named ancora più sicuro.