Sophie

Sophie

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

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 en environnement restreint

"><link rel="up" href="index.html" title="

Guide pratique d'utilisation de BIND en environnement restreint

"><link rel="prev" href="ar01s01.html" title="1.&nbsp;Introduction"><link rel="next" href="ar01s03.html" title="3.&nbsp;Compiler et installer votre beau BIND tout neuf"></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="N100D7"></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="N100DA"></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 sous le compte 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;; si vous le souhaitez, vous pouvez 
tout simplement adapter cet utilisateur &agrave; nos desseins. 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 d'une ligne de ce type dans <code class="filename">/etc/group</code>&nbsp;:

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

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

Nous devons maintenant mettre en place l'arborescence de r&eacute;pertoires que 
nous allons utiliser pour l'environnement restreint d'ex&eacute;cution de BIND. 
Elle peut se situer n'importe o&ugrave; dans votre syst&egrave;me de fichiers&nbsp;; 
si vous &ecirc;tes vraiment parano&iuml;aque, vous pourrez m&ecirc;me la placer dans un 
volume s&eacute;par&eacute;. Je supposerai que vous allez employer <code class="filename">/chroot/named</code>. Commen&ccedil;ons en cr&eacute;ant 
l'arborescence de r&eacute;pertoires suivante&nbsp;:

</p><pre class="screen">
/chroot
  +-- named
       +-- dev
       +-- etc
       |    +-- namedb
       |         +-- slave
       +-- var
            +-- run
</pre><p>

Si vous utilisez la commande GNU <span><strong class="command">mkdir</strong></span> (tel que 
pr&eacute;sente sur les syst&egrave;mes Linux), vous pourrez cr&eacute;er l'arborescence de 
r&eacute;pertoires ainsi&nbsp;:

</p><pre class="screen">
# mkdir -p /chroot/named
# cd /chroot/named
# mkdir -p dev etc/namedb/slave var/run
</pre></div><div class="section" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="N10117"></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 zones 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 a normalement besoin d'&eacute;crire dans le r&eacute;pertoire 
<code class="filename">namedb</code>, mais pour renforcer la s&eacute;curit&eacute;, nous ne 
l'autoriserons pas &agrave; le faire. Si votre serveur de nom est esclave pour 
une zone quelconque, il aura besoin de mettre &agrave; jour ces fichiers de 
zones, ce qui veut dire nous devrons les enregistrer dans un r&eacute;pertoire 
s&eacute;par&eacute;, auquel BIND aura acc&egrave;s.

</p><pre class="screen">
# chown -R named:named /chroot/named/etc/namedb/slave
</pre><p>
Gardez &agrave; l'esprit que vous devrez d&eacute;placer toutes vos zones esclaves 
dans ce r&eacute;pertoire et que vous devez mettre &agrave; jour votre 
<code class="filename">named.conf</code> en cons&eacute;quence.

</p><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 ses 
fichiers de statistiques, 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="N10147"></a>2.4.&nbsp;Fichiers de support syst&egrave;me</h3></div></div></div><p>

Lorsque BIND s'ex&eacute;cute dans l'environnement restreint, il ne peut plus 
<span class="emphasis"><em>du tout</em></span> acc&eacute;der aux fichiers situ&eacute;s hors de 
celui-ci. Cependant, il a besoin d'acc&eacute;der &agrave; quelques fichiers clefs, 
bien que leur nombre soit bien moindre que ce dont BIND&nbsp;8 avait 
besoin.

</p><p>

Un fichier dont BIND aura besoin &agrave; l'int&eacute;rieur de sa prison est le bon 
vieux <code class="filename">/dev/null</code>. Notez que la 
commande exacte n&eacute;cessaire pour cr&eacute;er ce fichier sp&eacute;cial peut varier de 
syst&egrave;me &agrave; syst&egrave;me&nbsp;; v&eacute;rifiez le script 
<code class="filename">/dev/MAKEDEV</code> pour vous en assurer. Quelques 
syst&egrave;mes peuvent &eacute;galement exiger <code class="filename">/dev/zero</code>, que 
nous pourrons cr&eacute;er de la m&ecirc;me fa&ccedil;on. Il a &eacute;t&eacute; mentionn&eacute; que les version 
pr&eacute;liminaires de BIND&nbsp;9.2.0 ont maintenant &eacute;galement besoin de 
<code class="filename">/dev/random</code>. Pour la plupart des syst&egrave;mes Linux, 
nous pourrons employer les commandes suivantes&nbsp;:

</p><pre class="screen">
# mknod /chroot/named/dev/null c 1 3
# mknod /chroot/named/dev/random c 1 8
# chmod 666 /chroot/named/dev/{null,random}
</pre><p>

Pour FreeBSD 4.3, ce sera&nbsp;:

</p><pre class="screen">
# mknod /chroot/named/dev/null c 2 2
# mknod /chroot/named/dev/random c 2 3
# chmod 666 /chroot/named/dev/{null,random}
</pre><p>

Vous aurez besoin de disposer d'un autre fichier dans le r&eacute;pertoire 
<code class="filename">/etc</code> de l'environnement restreint. Vous devrez 
copier <code class="filename">/etc/localtime</code> (nomm&eacute; 
<code class="filename">/usr/lib/zoneinfo/localtime</code> sur certains syst&egrave;mes), 
afin que BIND puisse enregistrer les &eacute;v&egrave;nements avec un horodatage 
correct. La commande suivante s'en chargera&nbsp;:

</p><pre class="screen">
# cp /etc/localtime /chroot/named/etc/
</pre></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, 
contrairement &agrave; un prisonnier ordinaire, il ne peut &eacute;crire son journal 
sur les murs de sa cellule <code class="literal">:-)</code> Normalement, BIND 
enregistre un journal des &eacute;v&egrave;nements gr&acirc;ce &agrave; 
<span class="application">syslogd</span>, le d&eacute;mon de journalisation syst&egrave;me. 
Cependant, ce type de journalisation est effectu&eacute; en envoyant les 
enregistrements d'&eacute;v&egrave;nements vers le connecteur (<span class="foreignphrase" lang="en"><em class="foreignphrase">socket</em></span>) sp&eacute;cial 
<code class="filename">/dev/log</code>. Puisqu'elle se trouve d&eacute;sormais &agrave; 
l'ext&eacute;rieur de l'environnement restreint, BIND ne peut plus l'employer. 
Heureusement, il existe quelques solutions pour contourner le probl&egrave;me.

</p><div class="section" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N10191"></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 class="application">syslogd</span> qui prenne en charge le 
param&egrave;tre <code class="option">-a</code> introduit par OpenBSD. Reportez-vous &agrave; la 
page de manuel de votre

<span class="citerefentry"><span class="refentrytitle">syslogd</span>(8)</span>

pour v&eacute;rifier si elle offre cette option. Si c'est la cas, la seule 
chose que vous ayez &agrave; faire est d'ajouter le param&egrave;tre 
&laquo;&nbsp;<span class="quote"><code class="literal">-a /chroot/named/dev/log</code></span>&nbsp;&raquo; &agrave; la ligne de 
commande utilis&eacute;e pour lancer <span class="application">syslogd</span>. Sur 
les syst&egrave;mes qui utilisent un init SysV complet (ce qui inclut la 
plupart des distributions Linux), vous pouvez faire cela en modifiant 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>

Il est int&eacute;ressant de noter qu'&agrave; partir de la Red Hat 7.2, Red Hat a 
apparemment rendu ce processus plus facile. Il y a maintenant un fichier 
appel&eacute; <code class="filename">/etc/sysconfig/syslog</code> dans lequel on peut 
d&eacute;finit des param&egrave;tres suppl&eacute;mentaires pour syslogd. Les syst&egrave;mes 
OpenLinux de Caldera utilisent un d&eacute;mon de lancement appel&eacute; 
<span class="application">ssd</span>, qui lit la configuration depuis 
<code class="filename">/etc/sysconfig/daemons/syslog</code>. Il vous suffit de 
modifier la ligne d'options pour qu'elle 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, il m'a &eacute;t&eacute; indiqu&eacute; que le 
meilleur endroit pour ajouter ce param&egrave;tre est le fichier 
<code class="filename">/etc/rc.config</code>. Changez 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. Enfin, le dernier mais non le moindre, 
pour FreeBSD 4.3, il suffit apparemment de modifier le fichier 
<code class="filename">rc.conf</code> et d'y ajouter&nbsp;:

</p><pre class="screen">
syslogd_flags="-s -l /chroot/named/dev/log"
</pre><p>

Le <code class="option">-s</code> est l&agrave; pour des raisons de s&eacute;curit&eacute;, et fait 
partie des param&egrave;tres par d&eacute;faut. Le <code class="option">-l</code> doit &ecirc;tre suivi 
d'un chemin local, dans lequel on souhaite placer une autre interface de 
journalisation. Une fois que vous avez compris comment faire cette 
modification sur votre syst&egrave;me, il vous suffira de red&eacute;marrer 
<span class="application">syslogd</span>, que cela soit en le tuant (avec un 
<span><strong class="command">kill</strong></span>) 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 devriez voir dans 
<code class="filename">/chroot/named/dev</code> une entr&eacute;e appel&eacute;e 
<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="N10200"></a>2.5.2.&nbsp;L'autre solution</h4></div></div></div><p>

Si vous avez un ancien <span class="application">syslogd</span>, vous devrez 
trouver une autre fa&ccedil;on d'&eacute;crire dans le journal des &eacute;v&egrave;nements. Il 
existe quelques programmes pour cela, comme 
<span class="application">holelogd</span>, qui est con&ccedil;u pour agir comme un 
serveur mandataire en acceptant les entr&eacute;es d'&eacute;v&egrave;nements du BIND en 
environnement restreint pour les passer au v&eacute;ritable connecteur 
<code class="filename">/dev/log</code>. Vous pouvez aussi tout simplement 
configurer BIND pour journaliser les &eacute;v&egrave;nements dans un fichier au lieu 
de les passer &agrave; syslog. Reportez-vous &agrave; la documentation de BIND pour 
plus d'informations si vous choisissez d'utiliser cette m&eacute;thode.

</p></div></div><div class="section" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="perm"></a>2.6.&nbsp;Resserrer les permissions</h3></div></div></div><p>

Tout d'abord, n'h&eacute;sitez &agrave; restreindre &agrave; l'utilisateur 
<code class="literal">root</code> l'acc&egrave;s &agrave; la totalit&eacute; du r&eacute;pertoire 
<code class="filename">/chroot</code>. Bien sur, tout le monde ne voudra pas 
faire cela, particuli&egrave;rement si cela indisposait d'autres logiciels 
install&eacute;s dans la m&ecirc;me arborescence.

</p><pre class="screen">
# chown root /chroot
# chmod 700 /chroot
</pre><p>

Vous pouvez aussi sans danger restreindre l'acc&egrave;s de
<code class="filename">/chroot/named</code> &agrave; l'utilisateur
<code class="literal">named</code>.

</p><pre class="screen">
# chown named:named /chroot/named
# chmod 700 /chroot/named
</pre><p>

Pour renforcer un peu plus la s&eacute;curit&eacute;, sur les syst&egrave;mes Linux utilisant 
le syst&egrave;me de fichier ext2, nous pouvons rendre certains fichiers et 
r&eacute;pertoires immuables, en utilisant l'utilitaire 
<code class="literal">chattr</code>.

</p><pre class="screen">
# cd /chroot/named
# chattr +i etc etc/localtime var
</pre><p>

De m&ecirc;me, sur FreeBSD 4.3, <span><strong class="command">chflags</strong></span> est l'outil &agrave; 
examiner pour rendre certains fichiers immuables. &Agrave; titre d'exemple, ce 
qui suit devrait rendre immuable le contenu du r&eacute;pertoire 
<code class="filename">/chroot/named/etc</code>&nbsp;:

</p><pre class="screen">
# chflags schg /chroot/named/etc/*(*).
</pre><p>

Il serait pratique de pouvoir faire la m&ecirc;me chose sur le r&eacute;pertoire 
<code class="filename">dev</code>, mais malheureusement cela emp&ecirc;cherait 
<span class="application">syslogd</span> de cr&eacute;er son connecteur 
<code class="filename">dev/log</code>. Vous pourrez aussi choisir de positionner 
le bit immuable sur d'autres fichiers de votre prison, comme par exemple 
vos fichiers de zone primaire, &agrave; condition qu'ils ne soient pas suppos&eacute;s 
changer.

</p></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;Compiler et installer votre beau BIND tout neuf</td></tr></table></div></body></html>