Bind : configurer son serveur de DNS pour plus de sécurité

Une simple modification des paramètres du serveur permet d'en relever le niveau de sécurité. Elle consiste à délimiter, ou chrooter, son environnement d'exécution pour le protéger des attaques extérieures.

Bind est le serveur DNS le plus utilisé sur Internet. Nous n'allons pas détailler sa configuration complète ici car elle nécessite beaucoup de développements, mais nous allons modifier son exécution pour qu'elle se fasse de façon plus sécurisée, dans une prison (en environnement chrooté).

Bind est parfois exécuté avec des droits root, afin d'utiliser le port privilégié 53 (TCP, UDP), inférieur à 1024. Dans un environnement restreint, il ne pourra pas voir ou avoir accès aux fichiers à l'extérieur de sa propre arborescence. Cela permet de limiter la quantité d'accès que n'importe quel individu malveillant pourrait gagner en exploitant une vulnérabilité de BIND.

L'utilisation éventuelle d'un panel d'administration se chargera de la configuration plus avancée avec gestion des zones des sites hébergés, sinon il sera amplement suffisant avec gestion de vos zones DNS chez un registrar externe (tel que Gandi ou OVH).

Info Chroot est une commande des systèmes d'exploitation UNIX permettant de changer pour un programme le répertoire racine de la machine hôte.

Commencez par arrêter le service :

/etc/init.d/bind9 stop

Editez le fichier /etc/default/bind9 pour ajouter l'option -t suivie du chemin dans lequel nous voulons stocker l'environnement bind en chroot.

vi /etc/default/bind9

 OPTIONS="-u bind -t /var/lib/named"

La suite des commandes permettra de mettre en place cet environnement et ses droits dans /var/lib/named/ :

mkdir -p /var/lib/named/etc

mkdir /var/lib/named/dev

mkdir -p /var/lib/named/var/cache/bind

mkdir -p /var/lib/named/var/run/bind/run

mv /etc/bind /var/lib/named/etc

ln -s /var/lib/named/etc/bind /etc/bind

mknod /var/lib/named/dev/null c 1 3

mknod /var/lib/named/dev/random c 1 8

chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random

chown -R bind:bind /var/lib/named/var/*

chown -R bind:bind /var/lib/named/etc/bind

Editez la configuration de syslogd le daemon principal de log pour indiquer le nouveau chemin employé par bind :

vi /etc/default/syslogd

 SYSLOGD="-a /var/lib/named/dev/log"

Redémarrez le tout :

/etc/init.d/sysklogd restart

/etc/init.d/bind9 start

Note : Avec le panel DTC, les fichiers de zone DNS sont stockés dans /var/lib/dtc/etc/zones/

Cet article a été réalisé par Alsacréations sous licence creative commons