Server DNS in chroot —
Il DNS è indispensabile per la risoluzione dei nomi, vale a dire convertire in nomi dominio “human friendly” gli indirizzi IP dei siti o degli hosts di una LAN.
Il più noto server DNS in circolazione è BIND (Berkeley Internet Name Domain) vediamo in dettaglio come preparare un server DNS che sia utile tanto alla nostra LAN quanto per risolvere i nomi su internet.
#apt-get install bind9
che si tira dietro le necessarie dipendenze
Bind ha delle pecche intrinseche di sicurezza, quindi è decisamente meglio installarlo in chroot, a tale scopo seguiremo Bind Chroot di Debian.
# /etc/init.d/bind9 stop
# vim /etc/default/bind9
e modificare la voce OPTIONS nel modo seguente
OPTIONS="-u bind -t /var/bind9/chroot"
che è poi in definitiva il posto dove si creerà il chroot.
Ora si deve creare l’intero albero di directory necessario per il chroot:
# mkdir -p /var/bind9/chroot/{etc,dev,var/cache/bind,var/run/named}
Creiamo i device necessari e settiamo i permessi corretti per essi
# mknod /var/bind9/chroot/dev/null c 1 3
# mknod /var/bind9/chroot/dev/random c 1 8
# mknod /var/bind9/chroot/dev/urandom c 1 9
# chmod 660 /var/bind9/chroot/dev/{null,random}
Spostiamo i files di configurazione nella nuova posizione e creiamo un symlink
# mv /etc/bind /var/bind9/chroot/etc
# ln -s /var/bind9/chroot/etc/bind /etc/bind
chown -R bind:bind /etc/bind/* chmod 775 /var/bind9/chroot/var/{cache/bind,run/named} chgrp bind /var/bind9/chroot/var/{cache/bind,run/named}
Modifichiamo il path del pidfile in /etc/init.d/bind9
PIDFILE=/var/bind9/chroot/var/run/named/named.pid
Istruiamo rsyslogd ad ascoltare i messaggi di bind in chroot
echo "\$AddUnixListenSocket /var/bind9/chroot/dev/log" > /etc/rsyslog.d/bind-chroot.conf
Istruiamo adesso resolv.conf ad ascoltare sulla loopback
# vim /etc/resolv.conf
commentare la/le voce/i nameserver presente e aggiungere
nameserver 127.0.0.1
Quindi riavviamo rsyslog e facciam partire bind
# /etc/init.d/rsyslog restart; /etc/init.d/bind9 start
A questo punto abbiamo un server DNS che è in grado di risolvere i nomi INTERNET perfettamente funzionante e relativamente sicuro, dandolo come DNS alla LAN le macchine interne possono navigare tranquillamente. Creiamo adesso 2 files che descrivono la nostra LAN, in modo tale che tramite un unico DNS sia possibile risolvere interno ed esterno, userò come esempio crazyhouse.lan la LAN di casa i due files sono anche detti files di zona.
# vim /etc/bind/crazyhouse.lan
;# database per la risoluzione diretta della rete crazyhouse.lan
;# indirizzi 192.168.20.0/24
;# ricordarsi di aumentare il seriale ad ogni modifica
$TTL 64800
crazyhouse.lan. IN SOA dns.crazyhouse.lan. hostmaster.dns.crazyhouse.lan. (
140520110 ; Serial
10800 ; Refresh
3600 ; Retry
604800 ; Expire 30 days
3600) ; Minimum
;#server dns
crazyhouse.lan. IN NS dns.crazyhouse.lan.
;## aggiunto il 10/04/07 per prova postfix interno
IN MX 5 aliseo.crazyhouse.lan.
;# forward mapping
noi IN A 192.168.20.1
libeccio.crazyhouse.lan. IN A 192.168.20.2
ale.crazyhouse.lan. IN A 192.168.20.9
aliseo.crazyhouse.lan. IN A 192.168.20.241
dns.crazyhouse.lan. IN A 192.168.20.10
maestrale.crazyhouse.lan. IN A 192.168.20.100 ;wifi router
$GENERATE 25-50 dhcp$ A 192.168.20.$ sangiusto2 IN A 172.27.1.1 ;sanmarco2 IN A 10.0.10.4 pc0 IN A 192.168.100.3 sibilla IN A 192.168.150.10 sangiorgio IN A xxx.xxx.xxx.xxx crm IN A xxx.xxx.xxx.xxx crm IN A 192.168.150.6 angelo IN A 192.168.100.6 perseo IN A 77.93.230.62 cluster IN A 172.27.1.1 horde IN A 172.27.1.1 ; alias gateway IN CNAME aliseo.crazyhouse.lan. mail IN CNAME aliseo.crazyhouse.lan. proxy IN CNAME aliseo.crazyhouse.lan.
e il file per la risoluzione inversa
#vim /etc/bind/crazyhouse.rev
; database per la risoluzione inversa della rete crazyhouse.lan
; indirizzi 192.168.20.0/24
; filename db.192.168.20.
; ricordarsi di aumentare il seriale ad ogni modifica
$TTL 64800
20.168.192.in-addr.arpa. IN SOA dns.crazyhouse.lan hostmaster.crazyhouse.lan. (
140520111 ; Serial
10800 ; Refresh
3600 ; Retry
604800 ; Expire
7200) ; Minimum ; server dns
IN NS dns.crazyhouse.lan.
; reverse mapping
10.20.168.192.in-addr.arpa. IN PTR dns.crazyhouse.lan.
100.20.168.192.in-addr.arpa. IN PTR maestrale.crazyhouse.lan. 1.20.168.192.in-addr.arpa. IN PTR noi.crazyhouse.lan. 2.20.168.192.in-addr.arpa. IN PTR libeccio.crazyhouse.lan. 9.20.168.192.in-addr.arpa. IN PTR ale.crazyhouse.lan.241.20.168.192.in-addr.arpa. 241.20.168.192.in-addr.arpa. IN PTR aliseo.crazyhouse.lan. $GENERATE 25-50 IN PTR dhcp$.crazyhouse.
e con questi 2 files abbiamo definito la nostra LAN e nello specifico gli indirizzi di VPN
che usiamo per connetterci dall’esterno o che dobbiamo raggiungere dall’interno.
L’ultimo passo è modificare il file /etc/bind/named.conf.local inserendo le zone che abbiamo appena creato
#vim /etc/bind/named.conf.local
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization//include "/etc/bind/zones.rfc1918";
zone "crazyhouse.lan" {
type master;
file "/etc/bind/crazyhouse.lan";
}
;zone "20.168.192.in-addr.arpa" {
type master;
file "/etc/bind/crazyhouse.rev";
};
e con questo rilanciando bind9 abbiamo concluso
Categorised as: Linux | Networking | Work
Comments are disabled on this post