Installazione
Ci sono più pacchetti da installare per avere un server DNS sicuro e funzionante:
yum install bind bind-chroot bind-devel bind-libbind-devel bind-libs bind-sdb bind-utils caching-nameserver
Configurazione
Si trovano degli esempi per la configurazione di bind sotto /usr/share/doc/bind-$version/sample/, se si vuole approfondire con le configurazioni in maniera più strong. Ricordo che la directoy di lavoro sarà sempre la /var/named/chroot.
Proviamo intanto a configurare il nostro DNS server come caching nameserver, copiando il file di esempio named.caching-nameserver.conf:
cp /var/named/chroot/etc/named.caching-nameserver.conf /var/named/chroot/etc/named.conf
e creiamo quindi il link simbolico al file sotto /etc/:
ln -s /var/named/chroot/etc/named.conf /etc/named.conf
Editiamo dunque il file /etc/named.conf e facciamo in modo che sia il più possibile simile a questo:
options {
listen-on port 53 { 127.0.0.1; 192.168.0.1; };
listen-on-v6 port 53 { ::1; };
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";
//query-source port 53;
//query-source-v6 port 53;
//allow-query { localhost; };
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
include "/etc/named.rfc1912.zones";
Le direttive più importanti da sapere sono:
* listen-on port: indica su che porta il servizio deve ascoltare e con quale IP (loopback e pubblico);
* allow-query: indica quali indirizzi o subnet possono fare query al nostro server DNS, quindi può essere impostato come server dns di una piccola rete, senza venire esposto ad Internet. Nel mio caso l’ho commentato perché questo server è esposto su Internet.
Le altre direttive non sono meno importanti ma in questo momento non serve sapere a cosa servono
Zone
Adesso bisogna impostare la zona per il nostro dominio da gestire, prenderemo il classico esempio del dominio example.com.
La zona va così scritta all’interno del named.conf, insieme al reverse:
zone "example.com" {
type master;
file "example.com.zone";
};
zone "reverse-example.com" {
type master;
file "reverse-example.com.zone";
};
Le zone saranno quindi di tipo master e il loro file di configurazione, definito dalla direttiva file, verrà cercato di defautl sotto /var/named/chroot/var/named/.
I files delle zone saranno così configurati.
; file di configurazione della zona example.com
$TTL 3D
@ IN SOA ns1.example.com. root.server.example.com. (
2009062900 ; versione del file YYYYMMDD+versione
2H
1H
1W
1D )
IN NS ns1
IN NS ns2
IN MX 10 smtp
ns1 IN A 192.168.0.1
ns2 IN A 192.168.0.1
server IN A 192.168.0.1
host1 IN A 192.168.0.2
host2 IN A 192.168.0.3
printer IN A 192.168.0.42
;
; file di configurazione di reverse-example.com
$TTL 3D
@ IN SOA ns1.example.com. root.server.example.com. (
2009062900
2H
1H
1W
1D )
; commento
IN NS ns1.example.com.
IN NS ns2.example.com.
1 IN PTR ns1.example.com.
2 IN PTR ns2.example.com.
10 IN PTR server.example.com.
20 IN PTR host1.example.com.
21 IN PTR host2.example.com.
40 IN PTR printer.example.com.
Da notare nel secondo file (reverse-example.com) che i numeri (1,2,10,20,..) indicano delle priorità, e sono utili nel caso di più name server o più mail server disponibili da più indirizzi della subnet.
Nel primo file invece vengono definiti tutti gli IP degli host appartenti al dominio example.com.
Permessi
Controllare i permessi dei file creati durante la configurazione, ricordarsi di cambiare l’owner in root:named.
SElinux
Controllare i permessi anche di SElinux per i file appena creati con:
ls -lZ /var/named/chroot/etc/
ls -lZ /var/named/chroot/var/named/
Se siete abbastanza esperti di SElinux potete cambiare i permessi anomali con chcon sennò date:
restorecon -R -v '/var/named/chroot/etc/'
restrorecon -R -v '/var/named/chroot/var/named/'
Abilitare le policy bloccanti per il servizio Named:
setsebool -P named_disable_trans on
setsebool -P named_write_master_zones on
Firewall
Aprire la porta tcp/53 del firewall:
iptables -A INPUT -p tcp -m state --state NEW --dport 53 -j ACCEPT
Start del servizio
Assicurarsi che il servizio restarti al reboot della macchina e startare il servizio:
chkconfig named on
service named start
Tenere d’occhio lo standard error e il /var/log/messages in caso di errori durante lo start del servizio.
Dig per testarne il funzionamento
Se named è partito senza problemi o se avete risolto i problemi di start del servizio, bisogna poter testarne il funzionamento e qui entra in gioco dig (DNS lookup utility).
Ad esempio:
[checco@hitchhiker ~]$ dig checco.42ers.net
;
; <<>> DiG 9.6.1rc1-RedHat-9.6.1-0.4.rc1.fc11 <<>> checco.42ers.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58987
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;
;; QUESTION SECTION:
;checco.42ers.net. IN A
;
;; ANSWER SECTION:
checco.42ers.net. 232567 IN A 92.243.0.223
;
;; Query time: 151 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Mon Jun 29 16:45:42 2009
;; MSG SIZE rcvd: 50
Link Utili
O'Reilly - DNS and Bind (4th edition): http://docstore.mik.ua/orelly/networking_2ndEd/dns/index.htm
BIND 9 Manual Pages: http://www.bind9.net/manuals