Faire tourner Bind dans une prison (chroot)

La doc

La doc de base est le Chroot-BIND HOWTO (version anglaise seulement) : ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/Chroot-BIND-HOWTO

Les différentes étapes

Si vous avez installé BIND à partir des sources en prenant les options par défaut, ça va être très simple (sinon ça ne sera que simple).

Création d'un utilisateur dédié

On commence par créer le répertoire dédié, par exemple :
mkdir /chrooted-named
Puis on crée le groupe named et l'utilisateur named :
groupadd named
adduser [group named, répertoire /chrooted-named, shell /bin/false]

Les répertoires et fichiers

Pour un serveur tout simple ça va avoir cet aspect là en fonctionnement :

/chrooted-named|
               |-dev|
               |    |-log=
               |    |-null  
               |    |-random
               |
               |-etc|
               |    |-Paris  
               |    |-localtime@  
               |    |-named.conf
               |
               |-var|-named|
                           |-mondomaine.hosts
                           |-mondomaine.rev
                           |-localhost.rev
                           |-named.pid

/dev/null et /dev/random

cd /chrooted-named
mkdir dev etc var
mkdir var/named
mknod /chrooted-named/dev/null c 1 3
mknod /chrooted-named/dev/random c 1 8
chmod 666 /chrooted-named/dev/{null,random}

/etc/localtime

cp -p /usr/share/zoneinfo/Europe/Paris etc/
cd etc
ln -s Paris localtime

syslogd

Dans les scripts de démarrage (par exemple /etc/rc.d/rc.inet2 pour une Slackware), repérez la ligne du style
/usr/sbin/syslogd
et remplacez-la par :
/usr/sbin/syslogd -a /chrooted-named/dev/log
Puis relancez syslogd avec ce nouveau paramètre :
killall syslogd
/usr/sbin/syslogd -a /chrooted-named/dev/log

configuration de named

Recopiez vos anciens fichiers de configuration, par exemple
/etc/named.conf vers /chrooted-named/etc/named.conf
et par exemple également
/var/named/* vers /chrooted-named/var/named

Les droits

À affiner selon les besoins :
chown -R root.root /chrooted-named
chown -R named.named /chrooted-named/var/named

Lancement de named

Même pas besoin de recompiler BIND (enfin ça dépendra de vos options et répertoires initiaux)...
Une petite ligne dans un script de démarrage :
/usr/local/sbin/named -u named -t /chrooted-named/
On arrête (délicatement) l'ancien et on lance le nouveau :
killall named
/usr/local/sbin/named -u named -t /chrooted-named/

Retour à la page d'accueil

Dernière mise à jour : vendredi 3 janvier 2003