Penso che chiunque stia leggendo questo post sappia gia' cos'e' Bind (server dns), ma pochi forse sanno cos'e' apparmor. Quest'ultimo e' un sistema di sicurezza, sviluppato come alternativa a SELinux, (di difficile configurazione), che sfrutta i percorsi per individuare i permessi assegnati ad un eseguibile specifico.
Per problemi lavorativi avevo bisogno di spostare la cartella in cui Bind salva le zone. Purtroppo apparmor me lo impediva restituendo quest'errore:
Per problemi lavorativi avevo bisogno di spostare la cartella in cui Bind salva le zone. Purtroppo apparmor me lo impediva restituendo quest'errore:
Jan 27 13:24:48 ns named[28834]: starting BIND 9.4.2-P2.1 -u bind
Jan 27 13:24:48 ns named[28834]: found 1 CPU, using 1 worker thread
Jan 27 13:24:48 ns named[28834]: loading configuration from '/var/named/named.conf'
Jan 27 13:24:48 ns named[28834]: none:0: open: /var/named/named.conf: permission denied
Jan 27 13:24:48 ns named[28834]: loading configuration: permission denied
Jan 27 13:24:48 ns named[28834]: exiting (due to fatal error)
Ho controllato mille volte i permessi quando poi ho capito che non erano quest'ultimi a dare problemi. Allora ho capito che era colpa di apparmor.
Nella cartella /etc/apparmor.d/ si trovano tutte le policy di accesso per ogni eseguibile che abbiamo settato. In particolare aprendo il file usr.sbin.named possiamo trovare quanto segue:
# vim:syntax=apparmor
# Last Modified: Fri Jun 1 16:43:22 2007
#include
/usr/sbin/named {
#include
#include
capability net_bind_service,
capability setgid,
capability setuid,
capability sys_chroot,
# /etc/bind should be read-only for bind
# /var/lib/bind is for dynamically updated zone (and journal) files.
# /var/cache/bind is for slave/stub data, since we're not the origin of it.
# See /usr/share/doc/bind9/README.Debian.gz
/etc/bind/** r,
/var/lib/bind/** rw,
/var/cache/bind/** rw,
/var/named/** rw,
/proc/net/if_inet6 r,
/usr/sbin/named mr,
/var/run/bind/run/named.pid w,
# /var/run/named/* rw,
# support for resolvconf
/var/run/bind/named.options r,
}
Ogni riga indica la cartella/files a cui ha accesso l'eseguibile /usr/sbin/named. Ora basta modificare questo file per dare accesso a tutto quello che vogliamo in maniera sicura.
NB: Per far si che le modifiche abbiano effetto dobbiamo riavviare apparmor e il servizio che stiamo settando, in questo caso bind:
/etc/init.d/apparmor restart
/etc/init.d/bind9 restart

0 commenti:
Posta un commento