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