Sophie

Sophie

distrib > * > 2010.0 > * > by-pkgid > a412ceb851151854794ced2a242192bb > files > 706

howto-html-fr-20080722-1mdv2010.0.noarch.rpm

<html><head><META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>2.&nbsp;

Pr&eacute;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&nbsp;8 en environnement 
      restreint
  
  "><link rel="up" href="index.html" title="
  
      Guide pratique d'utilisation de BIND&nbsp;8 en environnement 
      restreint
  
  "><link rel="prev" href="ar01s01.html" title="1.&nbsp;Introduction"><link rel="next" href="ar01s03.html" title="3.&nbsp;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.&nbsp;

Pr&eacute;paration de l'environnement restreint

</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="ar01s01.html">Pr&eacute;c&eacute;dent</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<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.&nbsp;

Pr&eacute;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.&nbsp;Cr&eacute;ation d'un utilisateur</h3></div></div></div><p>

Comme cela est mentionn&eacute; dans l'introduction, il n'est pas conseill&eacute;
de faire fonctionner BIND en root. Ainsi, avant de commencer, cr&eacute;ons 
un utilisateur sp&eacute;cifique pour BIND. Notez que vous
ne devez jamais employer un utilisateur g&eacute;n&eacute;rique comme
<code class="literal">nobody</code> pour cela. Ainsi, quelques distributions,
comme SuSE et Mandrake Linux ont commenc&eacute; &agrave; fournir un utilisateur
sp&eacute;cifique (g&eacute;n&eacute;ralement appel&eacute; <code class="literal">named</code>)&nbsp;; vous
pouvez simplement adapter cet utilisateur &agrave; 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>&nbsp;:

</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>&nbsp;:

</p><pre class="screen">
named:x:200:
</pre><p>

Ceci cr&eacute;e un utilisateur et un groupe appel&eacute;s <code class="literal">named</code>
pour BIND. Assurez-vous que les UID et les GID (les deux &agrave; 200 dans cet
exemple) sont uniques sur votre syst&egrave;me. L'interpr&eacute;teur de commande est
mis &agrave; <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.&nbsp;Arborescence de r&eacute;pertoire</h3></div></div></div><p>

Nous devons maintenant mettre en place l'arborescence de r&eacute;pertoire que
nous allons utiliser pour l'environnement restreint dans lequel BIND
s'ex&eacute;cutera. Cela peut &ecirc;tre n'importe ou dans votre syst&egrave;me de
fichiers&nbsp;; celui qui est vraiment parano&iuml;aque pourra m&ecirc;me la mettre
dans un volume s&eacute;par&eacute;. Je supposerai que vous emploierez
<code class="filename">/chroot/named</code>. Commen&ccedil;ons en cr&eacute;ant l'arborescence
de r&eacute;pertoire suivante&nbsp;:

</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.&nbsp;Mise en place des donn&eacute;es de BIND</h3></div></div></div><p>

Si vous avez d&eacute;j&agrave; 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&eacute;j&agrave;. Ces fichiers doivent &ecirc;tre d&eacute;plac&eacute;s (ou copi&eacute;s pour plus de
s&ucirc;ret&eacute;) 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&nbsp;:

</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&ucirc;rement &eacute;crire dans le r&eacute;pertoire <code class="filename">namedb</code>, et probablement dans certains des
fichiers contenus dans ce r&eacute;pertoire. Par exemple, si votre serveur DNS est
esclave pour une zone, il devra y mettre &agrave; jour les fichiers de cette zone.
De plus, BIND peut g&eacute;n&eacute;rer des statistiques, ce qu'il fait
dans ce r&eacute;pertoire. Pour cette raison, vous devrez probablement faire de
l'utilisateur <code class="literal">named</code> le propri&eacute;taire de ce r&eacute;pertoire
et de son contenu&nbsp;:

</p><pre class="screen">
# chown -R named:named /chroot/named/etc/namedb
</pre><p>

BIND aura aussi besoin d'&eacute;crire dans le r&eacute;pertoire <code class="filename">/var/run</code>, pour y mettre ses fichiers pid et
son socket ndc, donc permettons-lui de le faire&nbsp;:

</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.&nbsp;Fichiers pour le support du syst&egrave;me</h3></div></div></div><p>

Une fois que BIND s'ex&eacute;cute dans l'environnement restreint, il n'est pas
capable <span class="emphasis"><em>du tout</em></span> d'avoir acc&egrave;s aux fichiers en
dehors de celui-ci. Cependant, il doit avoir acc&egrave;s &agrave; quelques fichiers
clefs, comme la biblioth&egrave;que C du syst&egrave;me. Les biblioth&egrave;ques
exig&eacute;es d&eacute;pendront de votre saveur d'Unix. Pour la plupart des
syst&egrave;mes Linux modernes, les commandes suivantes seront
suffisantes pour mettre en place les biblioth&egrave;ques n&eacute;cessaires&nbsp;:

</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&eacute;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&eacute;cuter pour cr&eacute;er un
<code class="filename">etc/ld.so.cache</code> pour l'environnement restreint. Les
commandes suivantes devraient le permettre&nbsp;:

</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&egrave;me dans son environnement
restreint&nbsp;: le bon vieux <code class="filename">/dev/null</code>. De nouveau, la commande
exacte n&eacute;cessaire pour cr&eacute;er ce fichier sp&eacute;cial peut varier de
syst&egrave;me en syst&egrave;me&nbsp;; v&eacute;rifiez votre script
<code class="filename">/dev/MAKEDEV</code> pour &ecirc;tre s&ucirc;r. Quelques syst&egrave;mes
peuvent &eacute;galement exiger <code class="filename">/dev/zero</code>.  Pour la plupart des syst&egrave;mes
Linux, nous pouvons employer la commande suivante&nbsp;:

</p><pre class="screen">
# mknod /chroot/named/dev/null c 1 3
</pre><p>

Pour terminer, vous avez besoin de quelques fichiers suppl&eacute;mentaires
dans le r&eacute;pertoire <code class="filename">/etc</code> &agrave;
l'int&eacute;rieur de l'environnement restreint. En particulier, vous devez
copier <code class="filename">/etc/localtime</code> (parfois nomm&eacute;
<code class="filename">/usr/lib/zoneinfo/localtime</code> sur certains syst&egrave;mes)
de fa&ccedil;on &agrave; ce que BIND enregistre les &eacute;v&egrave;nements avec un horodatage
correct. Vous devez &eacute;galement cr&eacute;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&nbsp;:

</p><pre class="screen">
# cp /etc/localtime /chroot/named/etc/

# echo 'named:x:200:' &gt; /chroot/named/etc/group
</pre><p>

Gardez &agrave; l'esprit que le GID, 200 dans cet exemple, doit correspondre &agrave;
celui que vous avez d&eacute;fini dans le vrai <code class="filename">/etc/group</code>
d&eacute;fini au dessus.

</p></div><div class="section" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="logging"></a>2.5.&nbsp;Journalisation des &eacute;v&egrave;nements</h3></div></div></div><p>

BIND a beau &ecirc;tre prisonnier de son environnement restreint, il ne peut
pas graver son journal sur les murs de sa cellule. :-). Normalement,
BIND &eacute;crit les journaux gr&acirc;ce &agrave; <span><strong class="command">syslogd</strong></span>, le d&eacute;mon de
journalisation des &eacute;v&egrave;nements du syst&egrave;me. Cependant, ce type de
journalisation est effectu&eacute; en envoyant les entr&eacute;es d'&eacute;v&egrave;nements vers le
socket sp&eacute;cial <code class="filename">/dev/log</code>. Puisqu'il est &agrave;
l'ext&eacute;rieur de l'environnement restreint, BIND ne peut plus l'employer
d&eacute;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.&nbsp;La solution id&eacute;ale</h4></div></div></div><p>

La solution id&eacute;ale de ce dilemme exige une version raisonnablement
r&eacute;cente de <span><strong class="command">syslogd</strong></span> qui prend en charge le param&egrave;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 &agrave; faire est
d'ajouter le param&egrave;tre &laquo;&nbsp;<code class="option">-a 
/chroot/named/dev/log</code>&nbsp;&raquo; &agrave; la ligne de commande lorsque
vous lancez <span><strong class="command">syslogd</strong></span>. Sur les syst&egrave;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&egrave;me Linux Red Hat, j'ai chang&eacute; 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&egrave;mes Caldera OpenLinux utilisent un d&eacute;mon de lancement
appel&eacute; <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 &agrave; ceci&nbsp;:

</p><pre class="screen">
OPTIONS_SYSLOGD="-m 0 -a /chroot/named/dev/log"
</pre><p>

De la m&ecirc;me fa&ccedil;on sur les syst&egrave;mes SuSE, je me suis dit que le meilleur
endroit pour ajouter ce param&egrave;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&egrave;me, il vous suffit de red&eacute;marrer
<span><strong class="command">syslogd</strong></span>, que cela soit en l'arr&ecirc;tant et en le
relan&ccedil;ant (avec les param&egrave;tres suppl&eacute;mentaires), ou en employant le
script d'init SysV qui le fera pour vous&nbsp;:

</p><pre class="screen">
# /etc/rc.d/init.d/syslog stop
# /etc/rc.d/init.d/syslog start
</pre><p>

Une fois red&eacute;marr&eacute;, vous devez voir dans <code class="filename">/chroot/named/dev</code>  un &laquo;&nbsp;fichier&nbsp;&raquo;
appel&eacute; <code class="filename">log</code> qui ressemble &agrave; ceci&nbsp;:

</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.&nbsp;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&ccedil;on de faire vos journalisations. Il existe quelques
programmes pour faire &ccedil;a, comme
<code class="literal">holelogd</code>, qui est con&ccedil;u pour agir comme un
&laquo;&nbsp;proxy&nbsp;&raquo; en acceptant les entr&eacute;es d'&eacute;v&egrave;nements du BIND en
environnement restreint pour les passer au v&eacute;ritable socket
<code class="literal">/dev/log</code>.  

</p><p>
Vous pouvez aussi tout simplement configurer BIND pour journaliser les 
&eacute;v&egrave;nements dans un fichier au lieu
de les passer &agrave; syslog. Voyez la documentation de BIND pour plus de
d&eacute;tails si vous choisissez d'utiliser cette m&eacute;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&eacute;c&eacute;dent</a>&nbsp;</td><td align="center" width="20%">&nbsp;</td><td align="right" width="40%">&nbsp;<a accesskey="n" href="ar01s03.html">Suivant</a></td></tr><tr><td valign="top" align="left" width="40%">1.&nbsp;Introduction&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Sommaire</a></td><td valign="top" align="right" width="40%">&nbsp;3.&nbsp;Compilation de BIND</td></tr></table></div></body></html>