<html><head><META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>2. Préparation de l'environnement restreint </title><link href="style.css" rel="stylesheet" type="text/css"><meta content="DocBook XSL Stylesheets V1.68.1" name="generator"><link rel="start" href="index.html" title=" Guide pratique d'utilisation de BIND 8 en environnement restreint "><link rel="up" href="index.html" title=" Guide pratique d'utilisation de BIND 8 en environnement restreint "><link rel="prev" href="ar01s01.html" title="1. Introduction"><link rel="next" href="ar01s03.html" title="3. Compilation de BIND"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">2. Préparation de l'environnement restreint </th></tr><tr><td align="left" width="20%"><a accesskey="p" href="ar01s01.html">Précédent</a> </td><th align="center" width="60%"> </th><td align="right" width="20%"> <a accesskey="n" href="ar01s03.html">Suivant</a></td></tr></table><hr></div><div class="section" lang="fr"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="N100CC"></a>2. Préparation de l'environnement restreint </h2></div></div></div><div class="section" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="N100CF"></a>2.1. Création d'un utilisateur</h3></div></div></div><p> Comme cela est mentionné dans l'introduction, il n'est pas conseillé de faire fonctionner BIND en root. Ainsi, avant de commencer, créons un utilisateur spécifique pour BIND. Notez que vous ne devez jamais employer un utilisateur générique comme <code class="literal">nobody</code> pour cela. Ainsi, quelques distributions, comme SuSE et Mandrake Linux ont commencé à fournir un utilisateur spécifique (généralement appelé <code class="literal">named</code>) ; vous pouvez simplement adapter cet utilisateur à nos desseins, si vous le souhaitez. </p><p> Ceci exige l'ajout d'une ligne comme celle qui suit dans <code class="filename">/etc/passwd</code> : </p><pre class="screen"> named:x:200:200:Serveur de noms:/chroot/named:/bin/false </pre><p> Et une comme ceci dans <code class="filename">/etc/group</code> : </p><pre class="screen"> named:x:200: </pre><p> Ceci crée un utilisateur et un groupe appelés <code class="literal">named</code> pour BIND. Assurez-vous que les UID et les GID (les deux à 200 dans cet exemple) sont uniques sur votre système. L'interpréteur de commande est mis à <code class="filename">/bin/false</code> parce que cet utilisateur n'aura jamais besoin de se connecter. </p></div><div class="section" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="N100F8"></a>2.2. Arborescence de répertoire</h3></div></div></div><p> Nous devons maintenant mettre en place l'arborescence de répertoire que nous allons utiliser pour l'environnement restreint dans lequel BIND s'exécutera. Cela peut être n'importe ou dans votre système de fichiers ; celui qui est vraiment paranoïaque pourra même la mettre dans un volume séparé. Je supposerai que vous emploierez <code class="filename">/chroot/named</code>. Commençons en créant l'arborescence de répertoire suivante : </p><pre class="screen"> /chroot +-- named +-- bin +-- dev +-- etc | +-- namedb +-- lib +-- var +-- run </pre></div><div class="section" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="N10104"></a>2.3. Mise en place des données de BIND</h3></div></div></div><p> Si vous avez déjà fait une installation conventionnelle de BIND et si vous l'utilisez, votre fichier <code class="filename">named.conf</code> et vos fichiers de zone existent déjà. Ces fichiers doivent être déplacés (ou copiés pour plus de sûreté) dans l'environnement restreint, de sorte que BIND puisse les atteindre. <code class="filename">named.conf</code> ira dans <code class="filename">/chroot/named/etc</code>, et les fichiers de zone pourront aller dans <code class="filename">/chroot/named/etc/namedb</code>. Par exemple : </p><pre class="screen"> # cp -p /etc/named.conf /chroot/named/etc/ # cp -a /var/named/* /chroot/named/etc/namedb/ </pre><p> BIND devra sûrement écrire dans le répertoire <code class="filename">namedb</code>, et probablement dans certains des fichiers contenus dans ce répertoire. Par exemple, si votre serveur DNS est esclave pour une zone, il devra y mettre à jour les fichiers de cette zone. De plus, BIND peut générer des statistiques, ce qu'il fait dans ce répertoire. Pour cette raison, vous devrez probablement faire de l'utilisateur <code class="literal">named</code> le propriétaire de ce répertoire et de son contenu : </p><pre class="screen"> # chown -R named:named /chroot/named/etc/namedb </pre><p> BIND aura aussi besoin d'écrire dans le répertoire <code class="filename">/var/run</code>, pour y mettre ses fichiers pid et son socket ndc, donc permettons-lui de le faire : </p><pre class="screen"> # chown named:named /chroot/named/var/run </pre></div><div class="section" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="N10136"></a>2.4. Fichiers pour le support du système</h3></div></div></div><p> Une fois que BIND s'exécute dans l'environnement restreint, il n'est pas capable <span class="emphasis"><em>du tout</em></span> d'avoir accès aux fichiers en dehors de celui-ci. Cependant, il doit avoir accès à quelques fichiers clefs, comme la bibliothèque C du système. Les bibliothèques exigées dépendront de votre saveur d'Unix. Pour la plupart des systèmes Linux modernes, les commandes suivantes seront suffisantes pour mettre en place les bibliothèques nécessaires : </p><p> <pre class="screen"> # cd /chroot/named/lib # cp -p /lib/libc-2.*.so . # ln -s libc-2.*.so libc.so.6 # cp -p /lib/ld-2.*.so . # ln -s ld-2.*.so ld-linux.so.2 </pre> </p><p> Vous pouvez aussi simplement compiler des versions statiquement liées des binaires de BIND pour les placer dans votre environnement restreint. Vous devez aussi copier <span><strong class="command">ldconfig</strong></span> dans l'environnement restreint et l'exécuter pour créer un <code class="filename">etc/ld.so.cache</code> pour l'environnement restreint. Les commandes suivantes devraient le permettre : </p><pre class="screen"> # cp /sbin/ldconfig /chroot/named/bin/ # chroot /chroot/named /bin/ldconfig -v </pre><p> BIND a encore besoin d'un fichier système dans son environnement restreint : le bon vieux <code class="filename">/dev/null</code>. De nouveau, la commande exacte nécessaire pour créer ce fichier spécial peut varier de système en système ; vérifiez votre script <code class="filename">/dev/MAKEDEV</code> pour être sûr. Quelques systèmes peuvent également exiger <code class="filename">/dev/zero</code>. Pour la plupart des systèmes Linux, nous pouvons employer la commande suivante : </p><pre class="screen"> # mknod /chroot/named/dev/null c 1 3 </pre><p> Pour terminer, vous avez besoin de quelques fichiers supplémentaires dans le répertoire <code class="filename">/etc</code> à l'intérieur de l'environnement restreint. En particulier, vous devez copier <code class="filename">/etc/localtime</code> (parfois nommé <code class="filename">/usr/lib/zoneinfo/localtime</code> sur certains systèmes) de façon à ce que BIND enregistre les évènements avec un horodatage correct. Vous devez également créer un petit fichier <code class="filename">group</code> contenant uniquement le groupe <code class="literal">named</code>. Les deux commandes suivantes se chargeront de ceci : </p><pre class="screen"> # cp /etc/localtime /chroot/named/etc/ # echo 'named:x:200:' > /chroot/named/etc/group </pre><p> Gardez à l'esprit que le GID, 200 dans cet exemple, doit correspondre à celui que vous avez défini dans le vrai <code class="filename">/etc/group</code> défini au dessus. </p></div><div class="section" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="logging"></a>2.5. Journalisation des évènements</h3></div></div></div><p> BIND a beau être prisonnier de son environnement restreint, il ne peut pas graver son journal sur les murs de sa cellule. :-). Normalement, BIND écrit les journaux grâce à <span><strong class="command">syslogd</strong></span>, le démon de journalisation des évènements du système. Cependant, ce type de journalisation est effectué en envoyant les entrées d'évènements vers le socket spécial <code class="filename">/dev/log</code>. Puisqu'il est à l'extérieur de l'environnement restreint, BIND ne peut plus l'employer désormais. Heureusement, il existe deux solutions pour contourner cela. </p><div class="section" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N10192"></a>2.5.1. La solution idéale</h4></div></div></div><p> La solution idéale de ce dilemme exige une version raisonnablement récente de <span><strong class="command">syslogd</strong></span> qui prend en charge le paramètre <code class="option">-a</code> introduit par OpenBSD. Reportez-vous aux pages de manuel de votre <span class="citerefentry"><span class="refentrytitle">syslogd</span>(8)</span> pour voir si vous avez une telle version. </p><p> Si c'est la cas, la seule chose que vous ayez à faire est d'ajouter le paramètre « <code class="option">-a /chroot/named/dev/log</code> » à la ligne de commande lorsque vous lancez <span><strong class="command">syslogd</strong></span>. Sur les systèmes qui utilisent un init SysV complet (ce qui inclut la plupart des distributions Linux), vous pouvez faire cela dans le fichier <code class="filename">/etc/rc.d/init.d/syslog</code>. Par exemple, sur mon système Linux Red Hat, j'ai changé la ligne </p><pre class="screen"> daemon syslogd -m 0 </pre><p> en </p><pre class="screen"> daemon syslogd -m 0 -a /chroot/named/dev/log </pre><p> Les systèmes Caldera OpenLinux utilisent un démon de lancement appelé <span><strong class="command">ssd</strong></span>, qui lit la configuration dans <code class="filename">/etc/sysconfig/daemons/syslog</code>. Il vous suffit de modifier la ligne d'options pour que cela ressemble à ceci : </p><pre class="screen"> OPTIONS_SYSLOGD="-m 0 -a /chroot/named/dev/log" </pre><p> De la même façon sur les systèmes SuSE, je me suis dit que le meilleur endroit pour ajouter ce paramètre est le fichier <code class="filename">/etc/rc.config</code>. Changer la ligne </p><pre class="screen"> SYSLOGD_PARAMS="" </pre><p> en </p><pre class="screen"> SYSLOGD_PARAMS="-a /chroot/named/dev/log" </pre><p> devrait faire l'affaire. Une fois que vous avez compris comment faire cette modification sur votre système, il vous suffit de redémarrer <span><strong class="command">syslogd</strong></span>, que cela soit en l'arrêtant et en le relançant (avec les paramètres supplémentaires), ou en employant le script d'init SysV qui le fera pour vous : </p><pre class="screen"> # /etc/rc.d/init.d/syslog stop # /etc/rc.d/init.d/syslog start </pre><p> Une fois redémarré, vous devez voir dans <code class="filename">/chroot/named/dev</code> un « fichier » appelé <code class="filename">log</code> qui ressemble à ceci : </p><pre class="screen"> srw-rw-rw- 1 root root 0 Mar 13 20:58 log </pre></div><div class="section" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N101EB"></a>2.5.2. L'autre solution</h4></div></div></div><p> Si vous avez un ancien <span><strong class="command">syslogd</strong></span>, alors vous devez trouver une autre façon de faire vos journalisations. Il existe quelques programmes pour faire ça, comme <code class="literal">holelogd</code>, qui est conçu pour agir comme un « proxy » en acceptant les entrées d'évènements du BIND en environnement restreint pour les passer au véritable socket <code class="literal">/dev/log</code>. </p><p> Vous pouvez aussi tout simplement configurer BIND pour journaliser les évènements dans un fichier au lieu de les passer à syslog. Voyez la documentation de BIND pour plus de détails si vous choisissez d'utiliser cette méthode. </p></div></div></div><div class="navfooter"><hr><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ar01s01.html">Précédent</a> </td><td align="center" width="20%"> </td><td align="right" width="40%"> <a accesskey="n" href="ar01s03.html">Suivant</a></td></tr><tr><td valign="top" align="left" width="40%">1. Introduction </td><td align="center" width="20%"><a accesskey="h" href="index.html">Sommaire</a></td><td valign="top" align="right" width="40%"> 3. Compilation de BIND</td></tr></table></div></body></html>