aboutsummaryrefslogtreecommitdiff
path: root/fr_FR.ISO8859-1/articles/dialup-firewall/article.sgml
blob: b4fdabfd7761f292bda62e18a71d6db2e8df0201 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
<?xml version="1.0" encoding="ISO8859-1" standalone="no"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V4.2-Based Extension//EN"
	"../../../share/sgml/freebsd42.dtd" [
<!ENTITY % entities PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Entity Set//FR" "../../share/sgml/entities.ent">
%entities;
<!ENTITY % not.published "IGNORE">
]>

<!--
     The FreeBSD Documentation Project
     The FreeBSD French Documentation Project

     $FreeBSD$
     $Id: article.sgml,v 1.4 2007-01-20 13:34:48 blackend Exp $
     Original revision: 1.25
-->

<article lang="fr">
  <articleinfo>
    <title>Coupe-feu pour connexion par modem avec FreeBSD</title>

    <authorgroup>
      <author>
	<firstname>Marc</firstname>
	<surname>Silver</surname>

	<affiliation>
	  <address><email>marcs@draenor.org</email></address>
	</affiliation>
      </author>
    </authorgroup>

    <pubdate>$FreeBSD$</pubdate>

    <releaseinfo>$FreeBSD$</releaseinfo>

    <abstract>
      <para>Cet article expose comment mettre en place un coupe-feu
        utilisant une connexion PPP par modem avec FreeBSD et IPFW, et
	spécifiquement l'utilisation de coupe-feux pour une connexion par
	modem avec adresse IP dynamique.  Ce document ne couvre pas en
	premier lieu la configuration de votre connexion PPP.</para>

        &trans.a.fonvieille;
    </abstract>
  </articleinfo>

  <sect1 id="preface">
    <title>Préface</title>

    <para>Coupe-feu pour connexion par modem avec FreeBSD</para>

     <para>Ce document couvre le processus requis pour configurer un
       coupe-feu avec FreeBSD quand votre fournisseur d'accès vous
       assigne une adresse IP dynamique.  Alors que de nombreux efforts
       ont été faits afin de rendre ce document aussi instructif et
       correct que possible, vous êtes encouragés &agrave; envoyer vos
       commentaires/suggestions &agrave; l'adresse
       <email>marcs@draenor.org</email>.</para>
   </sect1>

  <sect1 id="kernel">
    <title>Options du noyau</title>

    <para>La première chose dont vous aurez besoin est de recompiler votre
      noyau.  Si vous avez besoin de plus d'informations sur comment
      recompiler un noyau, alors le meilleur endroit pour commencer est
      la <ulink url="../../books/handbook/kernelconfig.html">section de
      configuration du noyau du manuel</ulink>.  Vous devez rajouter les
      options suivantes dans le fichier de configuration de votre
      noyau:</para>

    <variablelist>
      <varlistentry>
	<term><literal>options IPFIREWALL</literal></term>

	<listitem>
	  <para>Intègre au noyau le code de filtrage de paquets.</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<term><literal>options IPFIREWALL_VERBOSE</literal></term>

	<listitem>
	  <para>Envoie les paquets tracés au système de traces.</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<term><literal>options
	    IPFIREWALL_VERBOSE_LIMIT=<replaceable>100</replaceable></literal></term>

	<listitem>
	  <para>Limite le nombre de paquets similaires tracés.  Cela
	    évite que votre fichier de traces soit submergé de nombreuses
	    entrées répétées.  <replaceable>100</replaceable> est une
	    valeur raisonnable, mais vous pouvez l'ajuster en fonction
	    de vos besoins.</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<term><literal>options IPDIVERT</literal></term>

	<listitem>
	  <para>Autorise le <emphasis>détournement</emphasis> des
	  sockets, cela sera explicité plus tard.</para>
	</listitem>
      </varlistentry>
    </variablelist>

    <para>Il y a d'autres éléments <emphasis>optionnels</emphasis> que
      vous pouvez rajouter dans le noyau pour plus de sécurité.  Ils ne
      sont pas requis pour avoir un filtrage de paquets qui fonctionne,
      mais il se peut que quelques utilisateurs un peu plus paranoïaques
      désirent les utiliser.</para>

    <variablelist>
      <varlistentry>
	<term><literal>options TCP_DROP_SYNFIN</literal></term>

	<listitem>
	  <para>Cette option ignore les paquets TCP avec les indicateurs
	    SYN et FIN activés.  Cela empêche certains utilitaires tel
	    que nmap etc. d'identifier la pile TCP/IP de la machine,
	    mais cela rompt le support des extensions RFC1644.  Cela
	    <emphasis>n'est pas</emphasis> recommandé si la machine
	    héberge un serveur web.</para>
	</listitem>
      </varlistentry>
     </variablelist>

    <para>Ne pas redémarrer une fois que vous avez recompilé le noyau.
      Avec un peu de chance, nous n'aurons besoin de redémarrer qu'une
      fois pour achever l'installation du coupe-feu.</para>
  </sect1>

  <sect1 id="rcconf">
    <title>Modifier <filename>/etc/rc.conf</filename> pour charger le
      coupe-feu</title>

    <para>Nous avons maintenant besoin de quelques modifications de
      <filename>/etc/rc.conf</filename> afin de signaler notre
      coupe-feu.  Ajoutez simplement les lignes suivantes:</para>

    <programlisting>firewall_enable="YES"
firewall_script="/etc/firewall/fwrules"
natd_enable="YES"
natd_interface="tun0"
natd_flags="-dynamic"</programlisting>

    <para>Pour plus d'informations sur la fonction de ces éléments
      jetez un coup d'oeil &agrave; <filename>/etc/defaults/rc.conf</filename>
      et lisez la page de manuel &man.rc.conf.5;.</para>
  </sect1>

  <sect1>
    <title>Désactiver la traduction d'adresse réseau de PPP</title>

    <para>Il se peut que vous utilisiez déj&agrave; la traduction d'adresse
      réseau (NAT) intégrée &agrave; PPP.  Si c'est le cas alors vous aurez &agrave;
      la désactiver, étant donné que nos exemples utilisent &man.natd.8;
      pour faire la même chose.</para>

    <para>Si vous avez déj&agrave; un ensemble d'options pour démarrer
      automatiquement PPP, cela doit probablement ressembler &agrave;
      ceci:</para>

    <programlisting>ppp_enable="YES"
ppp_mode="auto"
ppp_nat="YES"
ppp_profile="<replaceable>profile</replaceable>"</programlisting>

    <para>Si c'est le cas, vous devrez spécifiquement désactiver
      <literal>ppp_nat</literal> en vous assurant que vous avez bien
      la ligne <literal>ppp_nat="NO"</literal> dans
      <filename>/etc/rc.conf</filename>. Vous devrez également
      retirer les lignes <literal>nat enable yes</literal> ou
      <literal>alias enable yes</literal> de
      <filename>/etc/ppp/ppp.conf</filename>.</para>
  </sect1>

  <sect1 id="rules">
    <title>Le jeu de règles pour le coupe-feu</title>

    <para>Nous avons presque terminé.  Tout ce qu'il reste &agrave; faire est
      de définir les règles du coupe-feu et alors nous pourrons
      redémarrer, et notre coupe-feu devrait fonctionner.  Je me suis rendu
      compte que chacun désirera quelque chose de légèrement différent
      quand il est question de son ensemble de règles.  Ce que j'ai
      essayé de faire est d'écrire un ensemble de règles qui conviendra
      &agrave; la plupart des utilisateurs de modems.  Vous pouvez bien
      évidement le modifier selon vos besoins en utilisant les règles
      suivantes comme fondation pour votre propre ensemble de règles.
      Tout d'abord commençons avec les bases du filtrage fermé.  Ce que
      vous voulez faire est de refuser tout par défaut et ensuite
      n'autoriser que les choses dont vous avez vraiment besoin.  Les
      règles devraient être ordonnées de façon &agrave; autoriser tout d'abord
      puis ensuite refuser.  Le principe est que vous ajoutiez les règles
      pour vos autorisations, et ensuite tout est refusé. :)</para>

    <para>Maintenant, créons le répertoire <filename
      class="directory">/etc/firewall</filename>.  Allez dans ce
      répertoire et éditez le fichier <filename>fwrules</filename> comme
      nous l'avons spécifié dans <filename>rc.conf</filename>.  S'il
      vous plaît, notez que vous pouvez changer le nom de ce fichier
      pour celui que vous désirez.  Ce guide donne juste un exemple de
      nom de fichier.</para>

    <para>Maintenant, jettons un coup d'oeil &agrave; cet exemple de fichier de
      coupe-feu, qui est minutieusement commenté.</para>

    <programlisting># Règles du coupe-feu
# Ecrit par Marc Silver (marcs@draenor.org)
# http://draenor.org/ipfw
# Librement distribuable


# Définie la commande du coupe-feu (comme dans /etc/rc.firewall)
# pour une référence aisée. Facilite la lecture.
fwcmd="/sbin/ipfw"

# Vide les règles actuelles avant rechargement.
$fwcmd -f flush

# Détourne tous les paquets &agrave; travers l'interface tunnel
$fwcmd add divert natd all from any to any via tun0

# Autorise toutes les données de ma carte réseau et de l'hôte local.
# Soyez sûr de changer votre carte réseau (la mienne était fxp0) avant
# de redémarrer.  :)
$fwcmd add allow ip from any to any via lo0
$fwcmd add allow ip from any to any via fxp0

# Autorise toute les connexions dont je suis l'initiateur.
$fwcmd add allow tcp from any to any out xmit tun0 setup

# Une fois les connexions établies, les autorise &agrave; rester ouvertes.
$fwcmd add allow tcp from any to any via tun0 established

# Tous le monde sur internet est autorisé &agrave; se connecter aux services
# suivants sur la machine.  Cet exemple autorise spécifiquement les
# connexions &agrave; ssh et apache.
$fwcmd add allow tcp from any to any 80 setup
$fwcmd add allow tcp from any to any 22 setup

# Ceci envoie un RESET &agrave; tous les paquets ident.
$fwcmd add reset log tcp from any to any 113 in recv tun0

# Autorise les requettes DNS sortantes SEULEMENT vers les serveurs
# spécifiés.
$fwcmd add allow udp from any to <replaceable>x.x.x.x</replaceable> 53 out xmit tun0

# Autorise leur retour avec les réponses...  :)
$fwcmd add allow udp from <replaceable>x.x.x.x</replaceable> 53 to any in recv tun0

# Autorise l'ICMP (pour permettre &agrave; ping et traceroute de fonctionner).
# Vous pouvez peut-être désirer désactiver ceci, mais je pense que cela
# répond &agrave; mes besoins de les conserver ainsi.
$fwcmd add allow icmp from any to any

# Bloque tout le reste.
$fwcmd add deny log ip from any to any</programlisting>

    <para>Vous disposez désormais d'un coupe-feu tout &agrave; fait fonctionnel
      qui autorisera les connexions sur les ports 80 et 22 et tracera
      tout autre tentative de connexion.  Maintenant, vous devriez être
      en mesure de redémarrer sans risques et votre coupe-feu devrait se
      lancer sans problèmes.  Si vous trouvez une quelconque erreur ou
      expérimentez des problèmes, ou que vous avez des suggestions pour
      améliorer ce document, s'il vous plaît écrivez-moi.</para>
  </sect1>

  <sect1>
    <title>Questions</title>

    <qandaset>
      <qandaentry>
	<question>
	  <para>Pourquoi utilisez-vous &man.natd.8; et &man.ipfw.8;
	    alors que vous pourriez utiliser les filtres intégrés &agrave;
	    &man.ppp.8;?
	  </para>
	</question>

	<answer>
	  <para>Je serais honnête et dirais qu'il n'y a aucune raison
	    définitive pour que j'utilise <command>ipfw</command> et
	    <command>natd</command> plutôt que les filtres intégrés &agrave;
	    <command>ppp</command>.  D'après les discussions que j'ai eu
	    avec de nombreuses personnes le consensus semble être
	    qu'<command>ipfw</command> est certainement plus
	    puissant et configurable que les filtres
	    <command>ppp</command>, mais ce qu'il apporte dans la
	    fonctionnalité il le perd en facilité d'utilisation.  Une
	    des raisons de mon utilisation est que je préfère que le
	    filtrage de paquets soit fait au niveau du noyau plutôt que
	    par un programme utilisateur.</para>
	</answer>
      </qandaentry>

      <qandaentry>
        <question>
	  <para>J'obtiens des messages du type <errorname>limit 100
	    reached on entry 2800</errorname> et après cela je ne vois
	    plus jamais de refus dans mes traces.  Mon coupe-feu
	    fonctionne-t-il toujours?
	  </para>
        </question>

	<answer>
	  <para>Cela signifie simplement que le nombre maximal de
	    traces pour la règle a été atteint.  La règle fonctionne
	    toujours, mais elle n'enregistrera plus de trace jusqu'au
	    moment ou vous réinitialiserez les compteurs de traces.
	    Vous pouvez réinitialiser les compteurs de traces avec la
	    commande <command>ipfw resetlog</command>.  Alternativement,
	    vous pouvez augmenter la limite de trace dans la
	    configuration de votre noyau avec l'option
	    <option>IPFIREWALL_VERBOSE_LIMIT</option> comme décrit
	    précédemment.  Vous pouvez également changer cette limite
	    (sans recompiler votre noyau ou avoir &agrave; redémarrer) en
	    utilisant la valeur &man.sysctl.8;
	    net.inet.ip.fw.verbose_limit.</para>
        </answer>
      </qandaentry>

      <qandaentry>
	<question>
	  <para>Si j'utilise des adresses privées en interne, comme
	    dans la plage 192.168.0.0, pourrais-je ajouter une commande
	    comme <literal>$fwcmd add deny all from any to
	    192.168.0.0:255.255.0.0 via tun0</literal> aux règles du
	    coupe-feu pour prévenir les tentatives externes de
	    connexions vers les machines internes?</para>
	</question>

	<answer>
	  <para>Une réponse simple est non.  La raison de cela est que
            <command>natd</command> effectue la traduction d'adresse
	    pour <emphasis>tout</emphasis> ce qui sera détourné &agrave;
	    travers le périphérique <devicename>tun0</devicename>.  En
	    ce qui concerne les paquets entrant, ces derniers ne
	    parleront qu'&agrave; l'adresse IP dynamiquement assignée et
	    <emphasis>non pas</emphasis> au réseau interne.  Notez que
	    cependant vous pouvez ajouter une règle comme
	    <literal>$fwcmd add deny all from 192.168.0.4:255.255.0.0 to
	    any via tun0</literal> qui limiterait un hôte de votre réseau
	    interne de sortir via le coupe-feu.</para>
	</answer>
      </qandaentry>

      <qandaentry>
	<question>
	  <para>Il doit y avoir quelque chose d'erroné.  J'ai suivi vos
	  instructions &agrave; la lettre et maintenant tout est bloqué.</para>
        </question>

	<answer>
	  <para>Ce guide suppose que vous utilisez
            <emphasis>userland-ppp</emphasis> aussi le jeu de règle
	    donné intervient sur l'interface
	    <devicename>tun0</devicename>, qui correspond &agrave; la première
	    connexion établie avec &man.ppp.8; (a.k.a.
	    <emphasis>user-ppp</emphasis>).  Les connexions
	    supplémentaires utiliseront <devicename>tun1</devicename>,
	    <devicename>tun2</devicename> et ainsi de suite.</para>

	  <para>Vous devriez également noter que &man.pppd.8; utilise
	    &agrave; la place l'interface <devicename>ppp0</devicename>, donc
	    si vous établissez une connexion avec &man.pppd.8; vous
	    devez remplacer <devicename>tun0</devicename> par
	    <devicename>ppp0</devicename>.  Une façon rapide d'éditer
	    les règles du coupe-feu pour refléter ce changement est
	    présentée ci-dessous.  Le jeu de règles original est
	    sauvegardé sous <filename>fwrules_tun0</filename>.</para>

	  <screen>	    &prompt.user; <userinput>cd /etc/firewall</userinput>
	    /etc/firewall&prompt.user; <userinput>su</userinput>
	    <prompt>Password:</prompt>
	    /etc/firewall&prompt.root; <userinput>mv fwrules fwrules_tun0</userinput>
	    /etc/firewall&prompt.root; <userinput>cat fwrules_tun0 | sed s/tun0/ppp0/g > fwrules</userinput>
	  </screen>

	  <para>Pour savoir si vous utilisez actuellement &man.ppp.8; ou
	    &man.pppd.8; vous pouvez examiner la sortie
	    d'&man.ifconfig.8; une fois que la connexion est établie.
	    E.g., pour une connexion faite par &man.pppd.8; vous verriez
	    quelque chose comme ceci (on ne montre que les lignes
	    importantes):</para>

	  <screen>	    &prompt.user; <userinput>ifconfig</userinput>
	    <emphasis>(skipped...)</emphasis>
	    ppp0: flags=<replaceable>8051&lt;UP,POINTOPOINT,RUNNING,MULTICAST&gt; mtu 1524</replaceable>
                    inet <replaceable>xxx.xxx.xxx.xxx</replaceable> --&gt; <replaceable>xxx.xxx.xxx.xxx</replaceable> netmask <replaceable>0xff000000</replaceable>
	    <emphasis>(skipped...)</emphasis>
	    </screen>

	  <para>D'autre part, pour une connexion faite avec &man.ppp.8;
	  (<emphasis>user-ppp</emphasis>) vous devriez voir quelque
	  chose de similaire &agrave;:</para>

	  <screen>	    &prompt.user; <userinput>ifconfig</userinput>
	    <emphasis>(skipped...)</emphasis>
	    ppp0: flags=<replaceable>8010&lt;POINTOPOINT,MULTICAST&gt; mtu 1500</replaceable>
	    <emphasis>(skipped...)</emphasis>
	    tun0: flags=<replaceable>8051&lt;UP,POINTOPOINT,RUNNING,MULTICAST&gt; mtu 1524</replaceable>
	            <emphasis>(IPv6 stuff skipped...)</emphasis>
                    inet <replaceable>xxx.xxx.xxx.xxx</replaceable> --&gt; <replaceable>xxx.xxx.xxx.xxx</replaceable> netmask <replaceable>0xffffff00</replaceable>
                    Opened by PID <replaceable>xxxxx</replaceable>
            <emphasis>(skipped...)</emphasis></screen>
	</answer>
      </qandaentry>
    </qandaset>
  </sect1>
</article>