1. Introduction

Ce document est le guide pratique de BIND en environnement restreint ; reportez-vous à la Section 1.3, « Où ? » pour trouver la version la plus récente de ce document. Nous supposerons que vous savez déjà configurer et utiliser BIND (le serveur de Noms de Domaines Internet de Berkeley). Si ce n'est pas le cas, je vous recommande de commencer par lire le guide pratique du DNS (DNS HOWTO). Nous supposerons également que vous avez une connaissance suffisante de la compilation et de l'installation d'un logiciel sur un système de type Unix.

1.1. Objet de ce document

Ce document présente quelques précautions de sécurité supplémentaires applicables lors de l'installation de BIND. Il explique comment configurer BIND de sorte qu'il réside dans un environnement restreint, ce qui signifie qu'il ne peut voir ou accéder aux fichiers à l'extérieur de sa propre arborescence. Nous le configurerons également pour s'exécuter en tant qu'utilisateur non root.

Le principe d'un environnement restreint est assez simple. Lorsque vous exécutez BIND (ou tout autre processus) dans un environnement restreint (c'est-à-dire en utilisant pour le système de fichier une racine différente — d'où le nom de la commande utilisée « chroot », c'est-à-dire, en anglais, « changer la racine »), le processus ne peut tout simplement pas voir les autres parties du système de fichiers (situées hors de son environnement). Vous avez probablement déjà rencontré un environnement restreint auparavant, si vous avez déjà utilisé un client ftp pour vous connecter à un serveur de fichier public.

Étant donné que le processus d'exécution en environnement restreint est beaucoup plus simple avec BIND 9, j'ai commencé à développer légèrement ce document, pour y inclure des astuces plus générales sur la manière de sécuriser une installation BIND. Néanmoins, ce document n'est pas (et ne souhaite pas devenir) une référence complète pour la sécurisation de BIND. Faire uniquement ce qui est décrit dans ce document ne suffit pas à sécuriser un serveur de nom !

1.2. Pourquoi ?

Le principe de l'exécution de BIND en environnement restreint est de limiter le degré d'accès dont pourrait bénéficier un individu malveillant en exploitant une des vulnérabilités de BIND. C'est pour la même raison que nous exécutons BIND en tant qu'utilisateur non root.

Ceci devrait être considéré comme un supplément aux précautions normales de sécurité (exécution de la dernière version, utilisation des listes de contrôle d'accès, et cætera), et non comme une solution de remplacement à ces dernières.

Si la sécurité du DNS vous intéresse, quelques autres produits pourraient également vous intéresser. Compiler BIND avec StackGuard peut être une bonne idée pour assurer une plus grande protection. Son utilisation est simple ; elle équivaut à utiliser un gcc standard. Il existe aussi une alternative sécurisée à BIND, DNScache, écrit par Dan Bernstein. Dan est l'auteur de qmail et DNScache semble en suivre la même philosophie.

1.3. Où ?

La dernière version française de ce document est toujours disponible sur le site du projet Traduc.org : http://www.traduc.org/docs/howto/lecture/Chroot-BIND8-HOWTO.html.

La dernière version originale de ce document est toujours disponible à partir du site Web des Utilisateurs de Linux et de logiciels libres de Regina, Sask. : http://www.losurs.org/docs/howto/Chroot-BIND.html.

Il existe maintenant une traduction japonaise de ce document, maintenue par . Elle est disponible à l'adresse http://www.linux.or.jp/JF/JFdocs/Chroot-BIND-HOWTO.html. BIND est disponible à l'adresse de l'Internet Software Consortium à l'adresse http://www.isc.org/bind.html. Au moment de la publication de ce document, la version courante de BIND 9 est la version 9.2.0. La version  9 de BIND est sortie depuis longtemps et est déjà largement employée en production. Néanmoins, nombre de traditionalistes préfèrent encore utiliser BIND 8. Si c'est votre cas, reportez-vous à mon « Guide pratique de l'utilisation de BIND 8 en environnement restreint » (disponible au même endroit) qui vous expliquera comment l'exécuter en environnement restreint. Cependant, soyez conscient que BIND 8 est plus difficilement exécutable en environnement restreint. Gardez à l'esprit qu'il existe des trous de sécurité connus sur toutes les versions de BIND. Assurez-vous que vous exécutez bien la dernière version !

1.4. Comment ?

J'ai écrit ce document en me basant sur mon expérience du paramétrage de BIND dans un environnement restreint. Dans mon cas, j'avais déjà un BIND en exploitation sous la forme d'un paquet fourni par de ma distribution Linux. Je suppose que beaucoup d'entre-vous êtes dans la même situation, que vous allez juste récupérer et modifier les fichiers de configuration provenant de votre installation actuelle de BIND, puis désinstaller l'ancien paquet avant d'installer le nouveau. Ne désinstallez pas le paquet tout de suite ; nous pourrions avoir besoin d'y récupérer quelques fichiers.

Si vous n'êtes pas dans ce cas, vous devriez néanmoins être capable de comprendre ce document. La seule différence est que, lorsque je parle de copier un fichier existant, vous devrez d'abord le créer vous-même. Le guide pratique du DNS pourra vous être utile pour cela.

1.5. Mise en garde

Cette procédure a fonctionné pour moi, sur mon système. Vous pourriez avoir à la modifier. Ce n'est qu'une façon d'aborder la question ; il y a d'autres moyens d'arriver à la même solution (cependant l'approche restera la même). Il s'est juste trouvé que ma première tentative a fonctionné, et j'ai donc tout noté.

À ce jour, mon expérience de BIND se limite à l'installation sur des serveurs Linux. Cependant, la plupart des instructions de ce document devraient être facilement applicables à d'autres saveurs d'UNIX et j'essaierai d'indiquer les éventuelles différences dont j'aurais connaissance. J'ai également reçu des suggestions de personnes utilisant d'autres distributions et d'autres plates-formes, et j'ai essayé d'incorporer leurs commentaires lorsque cela était possible.

Si vous utilisez Linux, vous devez être sûr d'utiliser un noyau 2.4 avant d'essayer ceci. Le paramètre -u (exécution par un utilisateur non root) requiert cette version du noyau.