IPv6 Certification Badge for kiokoman

Preparazione struttura directory

Si presume che bind9 sia già installato e configurato nel sistema, ora non facciamo altro che creare un ambiete chiuso in cui eseguire il servizio. Nel caso qualche malintenzionato scoprisse e sfruttasse una falla in bind per accedere al sistema si ritroverebbe comunque rinchiuso in questa "prigione" senza avere accesso ai dati presenti in tutto il sistema, limitando così i danni.

Ho iniziato innanzitutto pianificando la struttura delle directory cercando di non deviare dalla struttura già impostata da ubuntu. La struttura risulta la seguente

 

/chroot/bind

                     |-dev

                     |-etc

                           |-bind

                     |-run

                           |-named

                     |-usr

                           |-lib

                     |-var

                           |-cache

                                    |-bind

 

Potete creare la suddetta struttura con i seguenti comandi:

mkdir -p /chroot/bind
cd /chroot/bind
mkdir -p dev etc/bind run/named usr/lib var/cache/bind

2 - Copiamo i file

copiamo ora i file di configurazione e i database nella nuova posizione

cp -R /etc/bind /chroot/bind/etc/

cp -R /var/cache/bind /chroot/bind/var/cache/

aggiustiamo i permessi

chown bind:bind /chroot/bind/etc/bind/named*
chown bind:bind /chroot/bind/etc/bind/pri*
chown bind:bind /chroot/bind/etc/bind/rndc.key

 

Bind ha necessita di scrivere anche nella cartella /chroot/bind/run/named  dove piazza il pid e in /chroot/bind/var/cache/bind quindi aggiustiamo di conseguenza

chown bind:bind /chroot/bind/run/named

chown bind:bind /chroot/bind/var/cache/bind

3 - File di sistema

Una volta che bind saà avviato all'interno di questo spazio non avrà accesso a nulla al di fuori di esso, sarà quindi necessario creare i file speciali di cui ha bisogno

mknod /chroot/bind/dev/null c 1 3
mknod /chroot/bind/dev/random c 1 8
chmod 666 /chroot/bind/dev/{null,random}

un altro file da copiare e' localtime in modo che named possa creare i log con il giusto orario

cp /etc/localtime /chroot/bind/etc/

Alcune librerie sono necessarie per il corretto funzionamento e la soluzione che ho trovato è quella di montare /usr/lib nella nuova zona protetta con il seguente comando

mount --bind /usr/lib /chroot/bind/usr/lib

tuttavia per fare in modo che al riavvio del sistema questa impostazione venga mantenuta è necessario aggiungerla a /etc/fstab

echo /usr/lib /chroot/bind/usr/lib none bind,ro 0 0 >> /etc/fstab

4 - Configurazione servizi

Con l'introduzione di Systemd i parametri in /etc/default/bind vengono completamente ignorati in quanto gestiti interamente dagli script di systemd quindi per modificare i parametri di avvio dobbiamo utilizzare il comando systemctl che ci permetterà di creare un avvio personalizzato del servizio

systemctl edit bind9

Questo comando ci apre un editor all'interno del quale imposteremo i nostri parametri, copiamo dunque all'interno quanto segue

[Service]
ExecStart=
ExecStart=/usr/sbin/named -f -t /chroot/bind -u bind -c /etc/bind/named.conf

con questo indichiamo che stiamo modificando un servizio, col primo execstart svuotiamo quanto ha in memoria systemd e con il secondo impostiamo i parametri che vogliamo noi, più precisamente in questo caso ci interessava aggiungere il parametro -t con cui indichiamo che vogliamo lanciare named in chroot

Non ci resta che avviare il servizio e vedere se tutto funziona esaminando /var/log/syslog

service bind9 restart