mirror of
https://gitlab.com/shorewall/code.git
synced 2024-12-29 17:48:53 +01:00
1052 lines
48 KiB
XML
1052 lines
48 KiB
XML
|
<?xml version="1.0" encoding="UTF-8"?>
|
||
|
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
|
||
|
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
|
||
|
<article id="three-interface">
|
||
|
<!--$Id$-->
|
||
|
|
||
|
<articleinfo>
|
||
|
<title>Three-Interface Firewall</title>
|
||
|
|
||
|
<authorgroup>
|
||
|
<author>
|
||
|
<firstname>Tom</firstname>
|
||
|
|
||
|
<surname>Eastep</surname>
|
||
|
</author>
|
||
|
|
||
|
<author>
|
||
|
<firstname>Patrice</firstname>
|
||
|
|
||
|
<surname>Vetsel</surname>
|
||
|
</author>
|
||
|
|
||
|
<author>
|
||
|
<firstname>Fabien</firstname>
|
||
|
|
||
|
<surname>Demassieux</surname>
|
||
|
</author>
|
||
|
</authorgroup>
|
||
|
|
||
|
<pubdate>2004-04-03</pubdate>
|
||
|
|
||
|
<copyright>
|
||
|
<year>2002-2004</year>
|
||
|
|
||
|
<holder>Thomas M. Eastep</holder>
|
||
|
</copyright>
|
||
|
|
||
|
<legalnotice>
|
||
|
<para>Permission is granted to copy, distribute and/or modify this
|
||
|
document under the terms of the GNU Free Documentation License, Version
|
||
|
1.2 or any later version published by the Free Software Foundation; with
|
||
|
no Invariant Sections, with no Front-Cover, and with no Back-Cover
|
||
|
Texts. A copy of the license is included in the section entitled
|
||
|
<quote><ulink url="GnuCopyright.htm">GNU Free Documentation
|
||
|
License</ulink></quote>.</para>
|
||
|
</legalnotice>
|
||
|
</articleinfo>
|
||
|
|
||
|
<note>
|
||
|
<para><emphasis role="underline">Notes du traducteur :</emphasis> Le guide
|
||
|
initial a été traduit par <ulink
|
||
|
url="mailto:vetsel.patrice@wanadoo.fr">VETSEL Patrice</ulink> que je
|
||
|
remercie. J'en ai assuré la révision pour l'adapter à la version 2 de
|
||
|
Shorewall. J'espère vous faciliter l'accès et la prise en main d'un
|
||
|
firewall performant, efficace, adaptable et facile d'utilisation. Donc
|
||
|
félicitations pour la qualité du travail et la disponibilité offerte par
|
||
|
Thomas M. Eastep. Si vous trouvez des erreurs ou des améliorations à
|
||
|
apporter vous pouvez me contacter <ulink
|
||
|
url="mailto:fd03x@wanadoo.fr">Fabien Demassieux</ulink></para>
|
||
|
</note>
|
||
|
|
||
|
<section>
|
||
|
<title>Introduction</title>
|
||
|
|
||
|
<para>Mettre en place un système Linux en tant que firewall pour un petit
|
||
|
réseau contenant une DMZ est une chose assez simple, si vous comprenez les
|
||
|
bases et suivez la documentation.</para>
|
||
|
|
||
|
<para>Ce guide ne veut pas vous apprendre tous les rouages de Shorewall.
|
||
|
Il se focalise sur ce qui est nécessaire pour configurer Shorewall, dans
|
||
|
son utilisation la plus courante :</para>
|
||
|
|
||
|
<itemizedlist>
|
||
|
<listitem>
|
||
|
<para>Un système Linux utilisé en tant que firewall/routeur pour un
|
||
|
petit réseau local.</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>Une seule adresse IP publique.</para>
|
||
|
|
||
|
<note>
|
||
|
<para>Si vous avez plus d'une adresse IP, ce n'est pas le guide qui
|
||
|
vous convient -- regardez plutôt du coté du <ulink
|
||
|
url="shorewall_setup_guide_fr.htm">Guide de Configuration
|
||
|
Shorewall</ulink>.</para>
|
||
|
</note>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>Une DMZ (Zone démilitarisée) connectée sur une interface
|
||
|
Ethernet séparée.</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>Une connexion Internet par le biais d'un modem câble, ADSL,
|
||
|
ISDN, "Frame Relay", RTC ...</para>
|
||
|
</listitem>
|
||
|
</itemizedlist>
|
||
|
|
||
|
<para>Voici un schéma d'une installation typique.</para>
|
||
|
|
||
|
<figure>
|
||
|
<title>Schéma d'une installation typique</title>
|
||
|
|
||
|
<mediaobject>
|
||
|
<imageobject>
|
||
|
<imagedata align="center" fileref="images/dmz1.png" format="PNG" />
|
||
|
</imageobject>
|
||
|
</mediaobject>
|
||
|
</figure>
|
||
|
|
||
|
<section>
|
||
|
<title>Pré-requis</title>
|
||
|
|
||
|
<para>Shorewall a besoin que le package
|
||
|
<command>iproute</command>/<command>iproute2</command> soit installé
|
||
|
(avec la distribution <trademark>RedHat</trademark>, le package
|
||
|
s'appelle <command>iproute</command>). Vous pouvez vérifier si le
|
||
|
package est installé par la présence du programme <command>ip</command>
|
||
|
sur votre firewall. En tant que <systemitem
|
||
|
class="username">root</systemitem>, vous pouvez utiliser la commande
|
||
|
<command>which</command> pour cela:</para>
|
||
|
|
||
|
<programlisting>[root@gateway root]# <command>which ip</command>
|
||
|
/sbin/ip
|
||
|
[root@gateway root]#</programlisting>
|
||
|
</section>
|
||
|
|
||
|
<section>
|
||
|
<title>Avant de commencer</title>
|
||
|
|
||
|
<para>Je recommande en premier la lecture complète du guide afin de se
|
||
|
familiariser avec les tenants et aboutissants puis de revenir sur les
|
||
|
modifications de votre configuration adapté à votre système.</para>
|
||
|
|
||
|
<caution>
|
||
|
<para>Si vous éditez vos fichiers de configuration sur un système
|
||
|
<trademark>Windows</trademark>, vous devez les sauver comme des
|
||
|
fichiers <trademark>Unix</trademark> si votre éditeur supporte cette
|
||
|
option sinon vous devez les convertir avec <command>dos2unix</command>
|
||
|
avant d'essayer de les utiliser. De la même manière, si vous copiez un
|
||
|
fichier de configuration depuis votre disque dur
|
||
|
<trademark>Windows</trademark> vers une disquette, vous devez lancer
|
||
|
<command>dos2unix</command> sur la copie avant de l'utiliser avec
|
||
|
Shorewall.<itemizedlist>
|
||
|
<listitem>
|
||
|
<para><ulink
|
||
|
url="http://www.simtel.net/pub/pd/51438.html"><trademark>Windows</trademark>
|
||
|
Version of <command>dos2unix</command></ulink></para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para><ulink
|
||
|
url="http://www.megaloman.com/%7Ehany/software/hd2u/">Linux
|
||
|
Version of <command>dos2unix</command></ulink></para>
|
||
|
</listitem>
|
||
|
</itemizedlist></para>
|
||
|
</caution>
|
||
|
</section>
|
||
|
|
||
|
<section>
|
||
|
<title>Conventions</title>
|
||
|
|
||
|
<para>Les points ou les modifications s'imposent sont indiqués par
|
||
|
<inlinegraphic fileref="images/BD21298_.gif" format="GIF" />.</para>
|
||
|
|
||
|
<para>Les notes de configuration qui sont propres à LEAF/Bering sont
|
||
|
marqués avec <inlinegraphic fileref="images/leaflogo.gif"
|
||
|
format="GIF" />.</para>
|
||
|
</section>
|
||
|
</section>
|
||
|
|
||
|
<section>
|
||
|
<title>PPTP/ADSL</title>
|
||
|
|
||
|
<para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>
|
||
|
|
||
|
<para>Si vous êtes équipé d'un modem <acronym>ADSL</acronym> et utilisez
|
||
|
<acronym>PPTP</acronym> pour communiquer avec un serveur à travers ce
|
||
|
modem, vous devez faire le changement <ulink
|
||
|
url="PPTP.htm#PPTP_ADSL">suivant</ulink> en plus de ceux ci-dessous.
|
||
|
<acronym>ADSL</acronym> avec <acronym>PPTP</acronym> est commun en Europe,
|
||
|
ainsi qu'en Australie.</para>
|
||
|
</section>
|
||
|
|
||
|
<section>
|
||
|
<title>Les Concepts de Shorewall</title>
|
||
|
|
||
|
<para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>
|
||
|
|
||
|
<para>Les fichiers de configuration pour Shorewall sont situés dans le
|
||
|
répertoire /etc/shorewall -- pour de simples paramétrages, vous n'avez à
|
||
|
faire qu'avec quelques un d'entre eux comme décris dans ce guide.<tip>
|
||
|
<para>Après avoir <ulink url="Install.htm">installé Shorewall</ulink>,
|
||
|
téléchargez <ulink
|
||
|
url="http://www1.shorewall.net/pub/shorewall/Samples/">l'exemple
|
||
|
three-interface</ulink>, décompressez le (<command>tar
|
||
|
<option>-zxvf</option>
|
||
|
<filename>two-interfaces.tgz</filename></command>) et copiez les
|
||
|
fichiers dans <filename class="directory">/etc/shorewall</filename>
|
||
|
<emphasis role="bold">(ces fichiers remplaceront les
|
||
|
initiaux)</emphasis>.</para>
|
||
|
</tip>Parallèlement à la présentation, je vous suggère de jeter un oeil
|
||
|
à ceux physiquement présents sur votre système -- chacun des fichiers
|
||
|
contient des instructions de configuration détaillées et des entrées par
|
||
|
défaut.</para>
|
||
|
|
||
|
<para>Shorewall voit le réseau où il fonctionne, comme un ensemble de
|
||
|
zones. Dans une configuration avec trois interfaces, les noms des zones
|
||
|
suivantes sont utilisés:</para>
|
||
|
|
||
|
<informaltable>
|
||
|
<tgroup align="left" cols="2">
|
||
|
<thead valign="middle">
|
||
|
<row>
|
||
|
<entry align="center">Name</entry>
|
||
|
|
||
|
<entry align="center">Description</entry>
|
||
|
</row>
|
||
|
</thead>
|
||
|
|
||
|
<tbody>
|
||
|
<row>
|
||
|
<entry>net</entry>
|
||
|
|
||
|
<entry>The Internet</entry>
|
||
|
</row>
|
||
|
|
||
|
<row>
|
||
|
<entry>loc</entry>
|
||
|
|
||
|
<entry>Your Local Network</entry>
|
||
|
</row>
|
||
|
|
||
|
<row>
|
||
|
<entry>dmz</entry>
|
||
|
|
||
|
<entry>Demilitarized Zone</entry>
|
||
|
</row>
|
||
|
</tbody>
|
||
|
</tgroup>
|
||
|
</informaltable>
|
||
|
|
||
|
<para>Les zones de Shorewall sont définies dans le fichier <ulink
|
||
|
url="Documentation.htm#Zones"><filename
|
||
|
class="directory">/etc/shorewall/</filename><filename>zones</filename></ulink>.</para>
|
||
|
|
||
|
<para>Shorewall reconnaît aussi le système de firewall comme sa propre
|
||
|
zone - par défaut, le firewall est connu comme <emphasis
|
||
|
role="bold"><varname>fw</varname></emphasis>.</para>
|
||
|
|
||
|
<para>Les règles à propos du trafic à autoriser et à interdire sont
|
||
|
exprimées en terme de zones.</para>
|
||
|
|
||
|
<itemizedlist>
|
||
|
<listitem>
|
||
|
<para>Vous exprimez votre politique par défaut pour les connexions
|
||
|
d'une zone vers une autre zone dans le fichier <ulink
|
||
|
url="Documentation.htm#Policy"><filename
|
||
|
class="directory">/etc/shorewall/</filename><filename>policy</filename></ulink>.</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>Vous définissez les exceptions à ces politiques pas défaut dans
|
||
|
le fichier <ulink url="Documentation.htm#Rules"><filename
|
||
|
class="directory">/etc/shorewall/</filename><filename>rules</filename></ulink>.</para>
|
||
|
</listitem>
|
||
|
</itemizedlist>
|
||
|
|
||
|
<para>Pour chaque connexion demandant à entrer dans le firewall, la
|
||
|
requête est en premier lieu comparée par rapport au fichier <filename
|
||
|
class="directory">/etc/shorewall/</filename><filename>rules</filename>. Si
|
||
|
aucune règle dans ce fichier ne correspond à la demande de connexion alors
|
||
|
la première politique dans le fichier <filename
|
||
|
class="directory">/etc/shorewall/</filename><filename>policy</filename>
|
||
|
qui y correspond sera appliquée. Si cette politique est
|
||
|
<varname>REJECT</varname> ou <varname>DROP</varname> la requête est dans
|
||
|
un premier temps comparée par rapport aux règles contenues dans le fichier
|
||
|
<filename
|
||
|
class="directory">/etc/shorewall/</filename><filename>common</filename>,
|
||
|
si ce fichier existe; sinon les régles dans le fichier <filename
|
||
|
class="directory">/etc/shorewall/</filename><filename>common.def</filename>
|
||
|
sont vérifiées.</para>
|
||
|
|
||
|
<para>Le fichier /etc/shorewall/policy inclus dans l'archive d'exemple
|
||
|
(three-interface) contient les politiques suivantes:</para>
|
||
|
|
||
|
<programlisting>#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST
|
||
|
loc net ACCEPT
|
||
|
net all DROP info
|
||
|
all all REJECT info</programlisting>
|
||
|
|
||
|
<important>
|
||
|
<para>Dans le fichier d'exemple (three-interface), la ligne suivante est
|
||
|
incluse mais elle est commentée. Si vous voulez que votre firewall
|
||
|
puisse avoir un accès complet aux serveurs sur Internet, décommentez la
|
||
|
ligne.</para>
|
||
|
|
||
|
<programlisting>#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST
|
||
|
fw net ACCEPT</programlisting>
|
||
|
</important>
|
||
|
|
||
|
<para>Les politiques précédentes vont: <itemizedlist>
|
||
|
<listitem>
|
||
|
<para>Permettre toutes demandes de connexion depuis votre réseau
|
||
|
local vers Internet</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>Drop (ignorer) toutes les demandes de connexion depuis
|
||
|
l'Internet vers votre firewall ou votre réseau local</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>Accept (accepter) facultativement toutes les demandes de
|
||
|
connexion de votre firewall vers l'Internet (si vous avez décommenté
|
||
|
la politique additionnelle)</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>Reject (rejeter) toutes les autres requêtes de
|
||
|
connexion.</para>
|
||
|
</listitem>
|
||
|
</itemizedlist></para>
|
||
|
|
||
|
<para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>
|
||
|
|
||
|
<para>Maintenant, editez votre propre fichier <filename><filename
|
||
|
class="directory">/etc/shorewall/</filename><filename>policy</filename></filename>
|
||
|
et apportez les modifications et ajouter ce que vous voulez.</para>
|
||
|
</section>
|
||
|
|
||
|
<section>
|
||
|
<title>Les Interfaces Réseau</title>
|
||
|
|
||
|
<figure>
|
||
|
<title>DMZ</title>
|
||
|
|
||
|
<mediaobject>
|
||
|
<imageobject>
|
||
|
<imagedata align="center" fileref="images/dmz1.png" format="PNG" />
|
||
|
</imageobject>
|
||
|
</mediaobject>
|
||
|
</figure>
|
||
|
|
||
|
<para>Le firewall a trois interfaces de réseau. Lorsque la connexion
|
||
|
Internet passe par le câble ou par un ROUTEUR (pas un simple modem) ADSL
|
||
|
(non USB) <quote>Modem</quote>, l'interface vers l'extérieur (External
|
||
|
Interface) sera l'adaptateur sur lequel est connecté le routeur
|
||
|
<quote>Modem</quote> (e.g., <filename class="devicefile">eth0</filename>)
|
||
|
à moins que vous ne vous connectiez par <emphasis>Point-to-Point
|
||
|
Protocol</emphasis> over Ethernet (PPPoE) ou par <emphasis>Point-to-Point
|
||
|
Tunneling Protocol</emphasis> (PPTP),dans ce cas l'interface extérieure
|
||
|
sera une interface de type ppp (e.g., <filename
|
||
|
class="devicefile">ppp0</filename>). Si vous vous connectez par un simple
|
||
|
modem (RTC), votre interface extérieure sera aussi ppp0. Si votre
|
||
|
connexion passe par Numéris (ISDN), votre interface extérieure sera
|
||
|
<filename class="devicefile">ippp0</filename>.</para>
|
||
|
|
||
|
<para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>
|
||
|
|
||
|
<para>Si votre interface vers l'extérieur est <filename
|
||
|
class="devicefile">ppp0</filename> ou <filename
|
||
|
class="devicefile">ippp0</filename> alors vous mettrez CLAMPMSS=yes dans
|
||
|
le fichier <filename>/etc/shorewall/shorewall.conf</filename>.</para>
|
||
|
|
||
|
<para>Votre <emphasis>Interface locale</emphasis> sera un adaptateur
|
||
|
Ethernet (<filename class="devicefile">eth0</filename>, <filename
|
||
|
class="devicefile">eth1</filename> or <filename
|
||
|
class="devicefile">eth2</filename>) et sera connecté à un hub ou un
|
||
|
switch. Vos ordinateurs locaux seront connectés à ce même switch (note :
|
||
|
si vous n'avez qu'un seul ordinateur en local, vous pouvez le connecter
|
||
|
directement au firewall par un câble croisé).</para>
|
||
|
|
||
|
<para>Votre <emphasis>interface DMZ</emphasis> sera aussi un adaptateur
|
||
|
Ethernet (<filename class="devicefile">eth0</filename>, <filename
|
||
|
class="devicefile">eth1</filename> or <filename
|
||
|
class="devicefile">eth2</filename>) et sera connecté à un hub ou un
|
||
|
switch. Vos ordinateurs appartenant à la DMZ seront connectés à ce même
|
||
|
switch (note : si vous n'avez qu'un seul ordinateur dans la DMZ, vous
|
||
|
pouvez le connecter directement au firewall par un câble croisé).</para>
|
||
|
|
||
|
<caution>
|
||
|
<para>Ne connectez pas l'interface interne et externe sur le même hub ou
|
||
|
switch, sauf pour tester avec une version postérieure à Shorewall 1.4.7.
|
||
|
Quand vous utilisez ces versions récentes, vous pouvez tester ce type de
|
||
|
configuration si vous spécifiez l'option arp_filter dans le fichier
|
||
|
<filename
|
||
|
class="directory">/etc/shorewall/</filename><filename>interfaces</filename>
|
||
|
pour toutes les interfaces connectées au hub/switch commun. Utiliser une
|
||
|
telle configuration avec un firewall en production est fortement
|
||
|
déconseillé.</para>
|
||
|
</caution>
|
||
|
|
||
|
<para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>
|
||
|
|
||
|
<para>L'exemple de configuration de Shorewall pour trois interfaces
|
||
|
suppose que l'interface externe est <filename
|
||
|
class="devicefile">eth0</filename>, l'interface locale est <filename
|
||
|
class="devicefile">eth1</filename> et que la DMZ est sur l'interface
|
||
|
<filename class="devicefile">eth2</filename>. Si votre configuration
|
||
|
diffère, vous devrez modifier le fichier d'exemple
|
||
|
<filename>/etc/shorewall/interfaces</filename> en conséquence. Tant que
|
||
|
vous y êtes, vous pourriez parcourir la liste des options qui sont
|
||
|
spécifiées pour les interfaces. Quelques trucs :</para>
|
||
|
|
||
|
<tip>
|
||
|
<para>Si votre interface vers l'extérieur est <filename
|
||
|
class="devicefile">ppp0</filename> ou <filename
|
||
|
class="devicefile">ippp0</filename>, vous pouvez remplacer le
|
||
|
<varname>detect</varname> dans la seconde colonne par un
|
||
|
<quote>-</quote> (sans les quotes).</para>
|
||
|
</tip>
|
||
|
|
||
|
<tip>
|
||
|
<para>Si votre interface vers l'extérieur est <filename
|
||
|
class="devicefile">ppp0</filename> or <filename
|
||
|
class="devicefile">ippp0</filename> u si vous avez une adresse
|
||
|
<acronym>IP</acronym> statique, vous pouvez enlever
|
||
|
<varname>dhcp</varname> dans la liste des options .</para>
|
||
|
</tip>
|
||
|
|
||
|
<tip>
|
||
|
<para>Si votre interface est un bridge utilisant l'utilitaire
|
||
|
<command>brctl</command> alors vous devez ajouter l'option
|
||
|
<varname>routeback</varname> à la liste des options.</para>
|
||
|
</tip>
|
||
|
|
||
|
<tip>
|
||
|
<para>Si vous spécifiez <emphasis>norfc1918</emphasis> pour votre
|
||
|
interface externe, vous pouvez vérifier périodiquement le <ulink
|
||
|
url="errata.htm">Shorewall Errata</ulink> pour mettre à jour le fichier
|
||
|
<filename>/usr/share/shorewall/rfc1918</filename>. Sinon, vous pouvez
|
||
|
copier le fichier <filename>/usr/share/shorewall/rfc1918</filename> vers
|
||
|
<filename>/etc/shorewall/rfc1918</filename> et <ulink
|
||
|
url="myfiles.htm#RFC1918">adapter votre fichier
|
||
|
<filename>/etc/shorewall/rfc1918</filename> comme je le
|
||
|
fais</ulink>.</para>
|
||
|
</tip>
|
||
|
</section>
|
||
|
|
||
|
<section>
|
||
|
<title>Adresses IP</title>
|
||
|
|
||
|
<para>Avant d'aller plus loin, nous devons dire quelques mots au sujet des
|
||
|
adresses Internet Protocol (<acronym>IP</acronym>). Normalement, votre
|
||
|
fournisseur Internet <acronym>ISP</acronym> vous assignera une seule
|
||
|
adresse IP. Cette adresse peut être assignée par le Dynamic Host
|
||
|
Configuration Protocol (<acronym>DHCP</acronym>) ou lors de
|
||
|
l'établissement de votre connexion lorsque vous vous connectez (modem
|
||
|
standard) ou établissez votre connexion <acronym>PPP</acronym>. Dans de
|
||
|
rares cas , votre provider peut vous assigner une adresse statique
|
||
|
<acronym>IP</acronym> ; cela signifie que vous devez configurer
|
||
|
l'interface externe de votre firewall afin d'utiliser cette adresse de
|
||
|
manière permanente. Votre adresse externe assignée, elle va être partagée
|
||
|
par tous vos systèmes lors de l'accès à Internet. Vous devrez assigner vos
|
||
|
propres adresses dans votre réseau local (votre interface interne sur le
|
||
|
firewall ainsi que les autres ordinateurs). La <emphasis role="bold">RFC
|
||
|
1918</emphasis> réserve plusieurs plages d'adresses privées
|
||
|
<emphasis>Private</emphasis> <acronym>IP</acronym> à cet fin:</para>
|
||
|
|
||
|
<programlisting>10.0.0.0 - 10.255.255.255
|
||
|
172.16.0.0 - 172.31.255.255
|
||
|
192.168.0.0 - 192.168.255.255</programlisting>
|
||
|
|
||
|
<para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>
|
||
|
|
||
|
<para>Avant de lancer Shorewall, regarder l'adresse IP de votre interface
|
||
|
externe, et si elle est dans les plages précédentes, vous devez enlever
|
||
|
l'option 'norfc1918' dans la ligne concernant l'interface externe dans le
|
||
|
fichier <filename
|
||
|
class="directory">/etc/shorewall/</filename><filename>interfaces</filename>.</para>
|
||
|
|
||
|
<para>Vous devrez assigner vos adresses depuis le même sous-réseau
|
||
|
(sub-network-subnet). Pour ce faire, nous pouvons considérer un
|
||
|
sous-réseau dans une plage d'adresses <varname>x.y.z.0 -
|
||
|
x.y.z.255</varname>. Chaque sous-réseau aura un masque (Subnet Mask)
|
||
|
<systemitem class="netmask">255.255.255.0</systemitem>. L'adresse
|
||
|
<varname>x.y.z.0</varname> est réservée comme l'adresse de sous-réseau
|
||
|
<emphasis>Subnet Address</emphasis> et <varname>x.y.z.255</varname> est
|
||
|
réservée en tant qu'adresse de broadcast <emphasis>Subnet Broadcast
|
||
|
Address</emphasis>. Dans Shorewall, un sous-réseau est décrit en utilisant
|
||
|
<ulink url="shorewall_setup_guide.htm#Subnets">Classless InterDomain
|
||
|
Routing (CIDR) notation</ulink> Il consiste en l'adresse du sous-réseau
|
||
|
suivie par<varname>/24</varname>. Le <quote>24</quote> se réfère au nombre
|
||
|
consécutif de bits marquant <quote>1</quote> dans la partie gauche du
|
||
|
masque de sous-réseau. </para>
|
||
|
|
||
|
<table>
|
||
|
<title>Un exemple de sous-réseau (sub-network) :</title>
|
||
|
|
||
|
<tgroup cols="2">
|
||
|
<colspec align="left" />
|
||
|
|
||
|
<tbody>
|
||
|
<row>
|
||
|
<entry>Range:</entry>
|
||
|
|
||
|
<entry><systemitem class="ipaddress">10.10.10.0</systemitem> -
|
||
|
<systemitem class="ipaddress">10.10.10.255</systemitem></entry>
|
||
|
</row>
|
||
|
|
||
|
<row>
|
||
|
<entry>Subnet Address:</entry>
|
||
|
|
||
|
<entry><systemitem
|
||
|
class="ipaddress">10.10.10.0</systemitem></entry>
|
||
|
</row>
|
||
|
|
||
|
<row>
|
||
|
<entry>Broadcast Address:</entry>
|
||
|
|
||
|
<entry><systemitem
|
||
|
class="ipaddress">10.10.10.255</systemitem></entry>
|
||
|
</row>
|
||
|
|
||
|
<row>
|
||
|
<entry>CIDR Notation:</entry>
|
||
|
|
||
|
<entry><systemitem
|
||
|
class="ipaddress">10.10.10.0/24</systemitem></entry>
|
||
|
</row>
|
||
|
</tbody>
|
||
|
</tgroup>
|
||
|
</table>
|
||
|
|
||
|
<para>Il est de mise d'assigner l'interface interne à la première adresse
|
||
|
utilisable du sous-réseau (<systemitem
|
||
|
class="ipaddress">10.10.10.1</systemitem> dans l'exemple précédent) ou la
|
||
|
dernière adresse utilisable (<systemitem
|
||
|
class="ipaddress">10.10.10.254</systemitem>).</para>
|
||
|
|
||
|
<para>L'un des buts d'un sous-réseau est de permettre à tous les
|
||
|
ordinateurs dans le sous-réseau de savoir avec quels autres ordinateurs
|
||
|
ils peuvent communiquer directement. Pour communiquer avec des systèmes en
|
||
|
dehors du sous-réseau, les ordinateurs envoient des paquets à travers le
|
||
|
gateway (routeur).</para>
|
||
|
|
||
|
<para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>
|
||
|
|
||
|
<para>Vos ordinateurs en local (ordinateur 1 et ordinateur 2 dans le
|
||
|
diagramme) devraient être configurés avec leur passerelle par défaut
|
||
|
(default gateway) pointant sur l'adresse <acronym>IP</acronym> de
|
||
|
l'interface interne du firewall.</para>
|
||
|
|
||
|
<para>La présentation précédente ne fait que d'effleurer la question des
|
||
|
sous réseaux et du routage. Si vous êtes intéressé pour apprendre plus sur
|
||
|
l'adressage <acronym>IP</acronym> et le routage, je recommande <quote>IP
|
||
|
Fundamentals: What Everyone Needs to Know about Addressing &
|
||
|
Routing</quote>, Thomas A. Maufer, Prentice-Hall, 1999, ISBN 0-13-975483-0
|
||
|
(<ulink
|
||
|
url="http://www.phptr.com/browse/product.asp?product_id={58D4F6D4-54C5-48BA-8EDD-86EBD7A42AF6}">link</ulink>).</para>
|
||
|
|
||
|
<para>Le reste de ce guide assumera que vous avez configuré votre réseau
|
||
|
comme montré ci-dessous :</para>
|
||
|
|
||
|
<figure>
|
||
|
<title>DMZ</title>
|
||
|
|
||
|
<graphic align="center" fileref="images/dmz2.png" />
|
||
|
</figure>
|
||
|
|
||
|
<para>La passerelle par défaut (default gateway) pour les ordinateurs de
|
||
|
la DMZ sera <systemitem class="ipaddress">10.10.11.254</systemitem> et le
|
||
|
passerelle par défaut pour les ordinateurs en local sera <systemitem
|
||
|
class="ipaddress">10.10.10.254</systemitem></para>
|
||
|
|
||
|
<warning>
|
||
|
<para>Votre <acronym>FAI</acronym> (fournisseur d'accés) pourrait
|
||
|
assigner une adresse <emphasis role="bold">RFC 1918</emphasis> à votre
|
||
|
interface externe. Si cette adresse est le sous-réseau <systemitem
|
||
|
class="ipaddress">10.10.10.0/24</systemitem> alors vous aurez besoin
|
||
|
d'un sous-réseau DIFFERENT RFC 1918 pour votre réseau local.</para>
|
||
|
</warning>
|
||
|
</section>
|
||
|
|
||
|
<section>
|
||
|
<title>IP Masquerading (SNAT)</title>
|
||
|
|
||
|
<para>Les adresses réservées par la RFC 1918 sont parfois désignées comme
|
||
|
non-routables car les routeurs Internet (backbone) ne font pas circuler
|
||
|
les paquets qui ont une adresse de destination appartenant à la RFC-1918.
|
||
|
Lorsqu'un de vos systèmes en local (supposons l'ordinateur1) demande une
|
||
|
connexion à un serveur par Internet, le firewall doit appliquer un
|
||
|
<emphasis>Network Address Translation</emphasis> (<acronym>NAT</acronym>).
|
||
|
Le firewall réécrit l'adresse source dans le paquet, et l'a remplacé par
|
||
|
l'adresse de l'interface externe du firewall; en d'autres mots, le
|
||
|
firewall fait croire que c'est lui même qui initie la connexion. Ceci est
|
||
|
nécessaire afin que l'hôte de destination soit capable de renvoyer les
|
||
|
paquets au firewall (souvenez vous que les paquets qui ont pour adresse de
|
||
|
destination, une adresse réservée par la RFC 1918 ne pourront pas être
|
||
|
routés à travers Internet, donc l'hôte Internet ne pourra adresser sa
|
||
|
réponse à l'ordinateur 1). Lorsque le firewall reçoit le paquet de
|
||
|
réponse, il remet l'adresse de destination à <systemitem
|
||
|
class="ipaddress">10.10.10.1</systemitem> et fait passer le paquet vers
|
||
|
l'ordinateur 1.</para>
|
||
|
|
||
|
<para>Sur les systèmes Linux, ce procédé est souvent appelé <emphasis>IP
|
||
|
Masquerading</emphasis> mais vous verrez aussi le terme de
|
||
|
<emphasis>Source Network Address Translation</emphasis>
|
||
|
(<acronym>SNAT</acronym>). Shorewall suit la convention utilisée avec
|
||
|
Netfilter:<itemizedlist>
|
||
|
<listitem>
|
||
|
<para><emphasis>Masquerade</emphasis> désigne le cas ou vous laissez
|
||
|
votre firewall détecter automatiquement l'adresse de l'interface
|
||
|
externe.</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para><emphasis><acronym>SNAT</acronym></emphasis> désigne le cas où
|
||
|
vous spécifiez explicitement l'adresse source des paquets sortant de
|
||
|
votre réseau local.</para>
|
||
|
</listitem>
|
||
|
</itemizedlist>Sous Shorewall, autant le
|
||
|
<emphasis>Masquerading</emphasis> et le
|
||
|
<emphasis><acronym>SNAT</acronym></emphasis> sont configuré avec des
|
||
|
entrés dans le fichier <filename
|
||
|
class="directory">/etc/shorewall/</filename><filename>masq</filename>.
|
||
|
Vous utiliserez normalement le Masquerading si votre adresse
|
||
|
<acronym>IP</acronym> externe i est dynamique, et <acronym>SNAT</acronym>
|
||
|
si l'adresse <acronym>IP</acronym> est statique.</para>
|
||
|
|
||
|
<para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>
|
||
|
|
||
|
<para>Si votre interface externe est <filename
|
||
|
class="devicefile">eth0</filename>, votre interface locale <filename
|
||
|
class="devicefile">eth1</filename> et votre interface pour la DMZ
|
||
|
<filename class="devicefile">eth2</filename> vous n'avez pas besoin de
|
||
|
modifier le fichier fourni avec l'exemple. Dans le cas contraire, éditez
|
||
|
<filename
|
||
|
class="directory">/etc/shorewall/</filename><filename>masq</filename> et
|
||
|
changez le en conséquence.</para>
|
||
|
|
||
|
<para>Si, malgré les avertissements, vous utilisez ce guide pour un
|
||
|
utilisation de one-to-one NAT ou de Proxy ARP pour votre DMZ, enlever
|
||
|
l'entrée pour <filename class="devicefile">eth2</filename> de
|
||
|
<filename><filename
|
||
|
class="directory">/etc/shorewall/</filename><filename>masq</filename></filename>.</para>
|
||
|
|
||
|
<para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>
|
||
|
|
||
|
<para>Si votre IP externe est statique, vous pouvez la mettre dans la
|
||
|
troisième colonne dans <filename
|
||
|
class="directory">/etc/shorewall/</filename><filename>masq</filename> si
|
||
|
vous le désirez, de toutes façons votre firewall fonctionnera bien si vous
|
||
|
laissez cette colonne vide. Le fait de mettre votre IP statique dans la
|
||
|
troisième colonne permet un traitement des paquets sortant un peu plus
|
||
|
efficace.</para>
|
||
|
|
||
|
<para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>
|
||
|
|
||
|
<para>Si vous utilisez les paquets Debian, vérifiez que votre fichier de
|
||
|
configuration <filename>shorewall.conf</filename> contient bien les
|
||
|
valeurs suivantes, si elles n'y sont pas faite les changements
|
||
|
nécessaires:<itemizedlist spacing="compact">
|
||
|
<listitem>
|
||
|
<para><varname>NAT_ENABLED=Yes</varname> (Shorewall versions earlier
|
||
|
than 1.4.6)</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para><varname>IP_FORWARDING=On</varname></para>
|
||
|
</listitem>
|
||
|
</itemizedlist></para>
|
||
|
</section>
|
||
|
|
||
|
<section>
|
||
|
<title>Port Forwarding (DNAT)</title>
|
||
|
|
||
|
<para>Un de nos buts est de, peut être, faire tourner un ou plusieurs
|
||
|
serveurs sur nos ordinateurs dans la DMZ. que ces ordinateurs on une
|
||
|
adresse RFC-1918, il n'est pas possible pour les clients sur Internet de
|
||
|
se connecter directement à eux. Il est nécessaire à ces clients d'adresser
|
||
|
leurs demandes de connexion au firewall qui ré écrit l'adresse de
|
||
|
destination de votre serveur, et fait passer le paquet à celui-ci. Lorsque
|
||
|
votre serveur répond, le firewall applique automatiquement un SNAT pour
|
||
|
réécrire l'adresse source dans la réponse.</para>
|
||
|
|
||
|
<para>Ce procédé est appelé <emphasis>Port Forwarding</emphasis> ou
|
||
|
<emphasis>Destination Network Address Translation</emphasis> (DNAT). Vous
|
||
|
configurez le port forwarding en utilisant les règles DNAT dans le fichier
|
||
|
<filename
|
||
|
class="directory">/etc/shorewall/</filename><filename>rules</filename>
|
||
|
file.</para>
|
||
|
|
||
|
<para>La forme générale d'une simple règle de port forwarding dans
|
||
|
<filename
|
||
|
class="directory">/etc/shorewall/</filename><filename>rules</filename>
|
||
|
est: <programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
||
|
DNAT net dmz:<emphasis><server local IP address></emphasis>[:<emphasis><server port></emphasis>] <emphasis><protocol></emphasis> <emphasis><port></emphasis></programlisting>
|
||
|
Si vous ne spécifiez pas le <emphasis><varname><server
|
||
|
port></varname></emphasis>, il est supposé être le même que
|
||
|
<emphasis><varname><port></varname></emphasis>.</para>
|
||
|
|
||
|
<example>
|
||
|
<title>Vous faites tourner un serveur Web dans votre DMZ (2) et vous
|
||
|
voulez faire passer les paquets entrant en TCP sur le port 80 à ce
|
||
|
système</title>
|
||
|
|
||
|
<para><programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
||
|
DNAT net dmz:10.10.11.2 tcp 80
|
||
|
ACCEPT loc dmz:10.10.11.2 tcp 80</programlisting><itemizedlist>
|
||
|
<listitem>
|
||
|
<para>L'entrée 1 forward le port 80 depuis Internet.</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>L'entrée 2 autorise les connexions du réseau local.</para>
|
||
|
</listitem>
|
||
|
</itemizedlist>Deux points importants à garder en mémoire
|
||
|
:<itemizedlist>
|
||
|
<listitem>
|
||
|
<para>Lorsque vous vous connectez à votre serveur à partir de
|
||
|
votre réseau local, vous devez utiliser l'adresse IP interne du
|
||
|
serveur (<systemitem
|
||
|
class="ipaddress">10.10.11.2</systemitem>).</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>Quelques fournisseurs Internet (Provider/ISP) bloquent les
|
||
|
requêtes de connexion entrantes sur le port 80. Si vous avez des
|
||
|
problèmes pour vous connecter à votre serveur web, essayez la
|
||
|
règle suivante et connectez vous sur le port 5000 (c.a.d.,
|
||
|
connectez vous à <literal>http://w.x.y.z:5000 ou w.x.y.z</literal>
|
||
|
est votre IP externe).<programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S) SOURCE
|
||
|
# PORT(S)
|
||
|
DNAT net dmz:10.10.11.2:80 tcp 80 5000</programlisting></para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>Si vous voulez avoir la possibilité de vous connecter à
|
||
|
votre serveur depuis le réseau local en utilisant votre adresse
|
||
|
externe, et si vous avez une adresse IP externe statique (fixe),
|
||
|
vous pouvez remplacer la règle loc->dmz précédente par
|
||
|
:<programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S) SOURCE ORIGINAL
|
||
|
# PORT(S) DEST
|
||
|
DNAT loc dmz:10.10.11.2 tcp 80 - <emphasis><external IP></emphasis></programlisting>Si
|
||
|
vous avez une IP dynamique, alors vous devez vous assurer que
|
||
|
votre interface externe est en route avant de lancer Shorewall et
|
||
|
vous devez suivre les étapes suivantes (en supposant que votre
|
||
|
interface externe est <filename
|
||
|
class="devicefile">eth0</filename>):<orderedlist>
|
||
|
<listitem>
|
||
|
<para>Insérez ce qui suit dans /etc/shorewall/params:</para>
|
||
|
|
||
|
<para><command>ETH0_IP=$(find_interface_address
|
||
|
eth0)</command></para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>Faites votre règle <literal>loc->dmz</literal>
|
||
|
rule: <programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S) SOURCE ORIGINAL
|
||
|
# PORT(S) DEST
|
||
|
DNAT loc dmz:10.10.11.2 tcp 80 - $ETH0_IP</programlisting></para>
|
||
|
</listitem>
|
||
|
</orderedlist></para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>Si vous voulez accéder à votre serveur dans la DMZ en
|
||
|
utilisant votre adresse IP externe, regardez <ulink
|
||
|
url="FAQ.htm#faq2a">FAQ 2a</ulink>.</para>
|
||
|
</listitem>
|
||
|
</itemizedlist></para>
|
||
|
</example>
|
||
|
|
||
|
<para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>
|
||
|
|
||
|
<para>A ce point, ajoutez les règles DNAT et ACCEPT pour vos
|
||
|
serveurs.</para>
|
||
|
</section>
|
||
|
|
||
|
<section>
|
||
|
<title>Domain Name Server (DNS)</title>
|
||
|
|
||
|
<para>Normalement, quand vous vous connectez à votre fournisseur
|
||
|
(FAI/ISP), une partie consiste à obtenir votre adresse IP, votre
|
||
|
<emphasis>Domain Name Service</emphasis> (<acronym>DNS</acronym>) pour le
|
||
|
firewall est configuré automatiquement (c.a.d.,le fichier <filename
|
||
|
class="directory">/etc/</filename><filename>resolv.conf</filename> sera
|
||
|
mis à jour). Il arrive que votre provider vous donne une paire d'adresse
|
||
|
<acronym>IP</acronym> pour les serveurs <acronym>DNS</acronym> afin que
|
||
|
vous configuriez manuellement votre serveur de nom primaire et secondaire.
|
||
|
La manière dont le <acronym>DNS</acronym> est configuré sur votre firewall
|
||
|
est de votre responsabilité. Vous pouvez procéder d'une de ses deux façons
|
||
|
:<itemizedlist>
|
||
|
<listitem>
|
||
|
<para>Vous pouvez configurer votre système interne pour utiliser les
|
||
|
noms de serveurs de votre provider. Si votre fournisseur vous donne
|
||
|
les adresses de leurs serveurs ou si ces adresses sont disponibles
|
||
|
sur leur site web, vous pouvez configurer votre système interne afin
|
||
|
de les utiliser. Si cette information n' est pas disponible,
|
||
|
regardez dans <filename
|
||
|
class="directory"><filename>/etc/</filename></filename><filename>resolv.conf</filename>
|
||
|
sur votre firewall -- les noms des serveurs sont donnés dans
|
||
|
l'enregistrement "nameserver" dans ce fichier.</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para><anchor id="cachingdns" />Vous pouvez configurer un cache dns
|
||
|
<emphasis>Caching Name Server</emphasis> sur votre firewall.
|
||
|
<trademark>Red Hat</trademark> a un <acronym>RPM</acronym> pour
|
||
|
serveur dns de cache (le <acronym>RPM</acronym> à besoin aussi du
|
||
|
paquetage <command>bind </command><acronym>RPM</acronym>) et pour
|
||
|
les utilisateurs de Bering, il y a <command>dnscache.lrp</command>.
|
||
|
Si vous adoptez cette approche, vous configurez votre système
|
||
|
interne pour utiliser le firewall lui même comme étant le seul
|
||
|
serveur de nom primaire. Vous pouvez utiliser l'adresse
|
||
|
<acronym>IP</acronym> interne du firewall (<systemitem
|
||
|
class="ipaddress">10.10.10.254</systemitem> dans l'exemple
|
||
|
précédent) pour l'adresse de serveur de nom. Pour permettre à vos
|
||
|
systèmes locaux de discuter avec votre serveur cache de nom, vous
|
||
|
devez ouvrir le port 53 (à la fois <acronym>UDP</acronym> and
|
||
|
<acronym>TCP</acronym>) sur le firewall vers le réseau local; vous
|
||
|
ferez ceci en ajoutant les règles suivantes dans <filename
|
||
|
class="directory">/etc/shorewall/</filename><filename>rules</filename>.</para>
|
||
|
|
||
|
<para>Si vous faites tourner le serveur de nom sur le firewall:
|
||
|
<programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
||
|
AllowDNS loc fw
|
||
|
AllowDNS dmz fw </programlisting></para>
|
||
|
</listitem>
|
||
|
</itemizedlist>Dans la régle ci-dessus, <quote>AllowDNS</quote> est un
|
||
|
exemple d'action prédéfinie <emphasis>defined action</emphasis>. Shorewall
|
||
|
inclus un nombre d'actions prédéfinies et vous pouvez <ulink
|
||
|
url="User_defined_Actions.html">ajouter les vôtres</ulink>. Pour voir les
|
||
|
actions comprises avec votre version de Shorewall, regardez dans le
|
||
|
fichier <filename>/etc/shorewall/actions.std</filename>. Le nom de celles
|
||
|
qui acceptent des connexions débutent par <quote>Allow</quote>.</para>
|
||
|
|
||
|
<para>Vous n'êtes pas obligé d'utiliser des actions prédéfinies quand vous
|
||
|
ajoutez des régles dans le fichier
|
||
|
<filename>/etc/shorewall/rules</filename>; les régles générées par
|
||
|
Netfilter sont plus performantes sans actions prédéfinies. La régle vue
|
||
|
ci-dessus peut aussi être codé comme cela:</para>
|
||
|
|
||
|
<programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
||
|
ACCEPT loc fw tcp 53
|
||
|
ACCEPT loc fw udp 53
|
||
|
ACCEPT dmz fw tcp 53
|
||
|
ACCEPT dmz fw udp 53 </programlisting>
|
||
|
|
||
|
<para>Au cas ou Shorewall n'inclue pas d'actions définies qui vous
|
||
|
conviennent, vous pouvez les définir vous même ou coder directement les
|
||
|
régles.</para>
|
||
|
</section>
|
||
|
|
||
|
<section>
|
||
|
<title>Autres Connexions</title>
|
||
|
|
||
|
<para>Les fichiers exemples inclus dans l'archive (three-interface)
|
||
|
contiennent les règles suivantes :<programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
||
|
AllowDNS fw net </programlisting>Ces règles autorisent l'accès
|
||
|
<acronym>DNS</acronym> à partir de votre firewall et peuvent être enlevées
|
||
|
si vous avez décommenté la ligne dans <filename
|
||
|
class="directory">/etc/shorewall/</filename><filename>policy</filename>
|
||
|
autorisant toutes les connexions depuis le firewall vers Internet.</para>
|
||
|
|
||
|
<para>L'exemple inclus aussi: <programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
||
|
AllowSSH loc fw
|
||
|
AllowSSH loc dmz </programlisting>Ces régles autorisent un
|
||
|
serveur <acronym>SSH</acronym> sur votre firewall et chacun des systèmes
|
||
|
de votre DMZ et y autoriser la connexion à ceux-ci depuis votre réseau
|
||
|
local.</para>
|
||
|
|
||
|
<para>Si vous désirez permettre d'autres connexions entre vos systèmes, la
|
||
|
syntaxe générale est:<programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
||
|
<<emphasis>action</emphasis>> <emphasis><source zone> <destination zone></emphasis></programlisting></para>
|
||
|
|
||
|
<para>La syntaxe générale lorsqu'on utilise pas des actions prédéfinies
|
||
|
est:<programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
||
|
ACCEPT <emphasis><source zone> <destination zone> <protocol> <port> </emphasis></programlisting></para>
|
||
|
|
||
|
<example>
|
||
|
<title>Vous souhaitez rendre publiquement accessible votre serveur DNS
|
||
|
sur le firewall</title>
|
||
|
|
||
|
<para>En utiliser une action prédéfinie:</para>
|
||
|
|
||
|
<programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
||
|
AllowDNS net fw</programlisting>
|
||
|
|
||
|
<para>Sans action prédéfinie:</para>
|
||
|
|
||
|
<programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
||
|
ACCEPT net fw tcp 53
|
||
|
ACCEPT net fw udp 53 </programlisting>
|
||
|
|
||
|
<para>Ces deux régles viennent évidemment s'ajouter à celles listées
|
||
|
sous <quote><link linkend="cachingdns">Vous pouvez configurer un cache
|
||
|
dns sur votre firewall</link></quote>.</para>
|
||
|
</example>
|
||
|
|
||
|
<para>Si vous ne savez pas quel port(s) et protocole(s) requièrent une
|
||
|
application particulière, vous pouvez regarder <ulink
|
||
|
url="ports.htm">ici</ulink>.</para>
|
||
|
|
||
|
<important>
|
||
|
<para>Je ne recommande pas d'autoriser <command>telnet</command> vers/de
|
||
|
l'Internet parce qu'il utilise du texte en clair (même pour le login!).
|
||
|
Si vous voulez un accés shell à votre firewall, utilisez
|
||
|
<acronym>SSH</acronym>:</para>
|
||
|
|
||
|
<programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
||
|
AllowSSH net fw</programlisting>
|
||
|
</important>
|
||
|
|
||
|
<para><inlinegraphic fileref="images/leaflogo.gif" format="GIF" /> Les
|
||
|
utilisateurs de Bering pourront ajouter les deux régles suivantes pour
|
||
|
être compatible avec la configuration du firewall Jacques's
|
||
|
Shorewall.<programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
||
|
ACCEPT loc fw udp 53
|
||
|
ACCEPT net fw tcp 80 </programlisting><itemizedlist>
|
||
|
<listitem>
|
||
|
<para>L'entrée 1 autorise l'utilisation du Cache DNS.</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>L'entrée 2 autorise le <quote>weblet</quote> à
|
||
|
fonctionner.</para>
|
||
|
</listitem>
|
||
|
</itemizedlist><inlinegraphic fileref="images/BD21298_.gif"
|
||
|
format="GIF" /></para>
|
||
|
|
||
|
<para>Maintenant, éditez votre fichier de configuration <filename
|
||
|
class="directory">/etc/shorewall/</filename><filename>rules</filename>
|
||
|
pour ajouter, modifier ou supprimer les autres connexions voulues.</para>
|
||
|
</section>
|
||
|
|
||
|
<section>
|
||
|
<title>Quelques Points à Garder en Mémoire</title>
|
||
|
|
||
|
<itemizedlist>
|
||
|
<listitem>
|
||
|
<para><emphasis role="bold">Vous ne pouvez tester votre firewall de
|
||
|
l'intérieur de votre réseau</emphasis>. Car les requêtes que vous
|
||
|
envoyez à votre adresse IP ne veux pas dire qu'elle seront associées à
|
||
|
votre interface externe ou la zone <quote>net</quote>. Tout trafic
|
||
|
généré par le réseau local sera traité par loc->fw.</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para><emphasis role="bold">Les adresses IP sont des propriétés des
|
||
|
systèmes, pas des interfaces</emphasis>. C'est une erreur de croire
|
||
|
que votre firewall est capable de renvoyer des paquets simplement
|
||
|
parce que vous pouvez faire un ping sur l'adresse IP de toutes les
|
||
|
interfaces du firewall depuis le réseau local. La seul conclusion est
|
||
|
de conclure que le lien entre le réseau local et le firewall est
|
||
|
établi et que vous avez probablement la bonne adresse de la passerelle
|
||
|
sur votre système.</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para><emphasis role="bold">Toutes les adresses IP configurées sur le
|
||
|
firewall sont dans la zone $FW (fw)</emphasis>. Si 192.168.1.254 est
|
||
|
l'adresse IP de votre interface interne, alors vous pouvez écrire
|
||
|
<quote><emphasis role="bold">$FW:192.168.1.254</emphasis></quote> dans
|
||
|
une régle mais vous ne devez pas écrire <quote><emphasis
|
||
|
role="bold">loc:192.168.1.254</emphasis></quote>. C'est aussi un
|
||
|
non-sens d'ajouter 192.168.1.254 à la zone <emphasis
|
||
|
role="bold">loc</emphasis> en utilisant une entrée dans
|
||
|
<filename>/etc/shorewall/hosts</filename>.</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para><emphasis role="bold">Les paquets de retour (Reply) ne suivent
|
||
|
PAS automatiquement le chemin inverse de la requête
|
||
|
d'origine</emphasis>. Tous les paquets sont routés en se référant à la
|
||
|
table de routage respective de chaque hôte à chaque étape du trajet.
|
||
|
C'est commun chez ceux qui installent le firewall Shorewall en
|
||
|
parallèle à une passerelle existante et essayent d'utiliser DNAT dans
|
||
|
Shorewall sans changer la passerelle par défaut sur les systèmes
|
||
|
recevant le retour des requêtes. Les requêtes dont, à travers le
|
||
|
firewall Shorewall, l'adresse de destination IP est réécrite mais la
|
||
|
réponse va directement vers l'ancienne passerelle.</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para><emphasis role="bold">Shorewall lui-même n'a aucune notion du
|
||
|
dedans et du dehors</emphasis>. Ces concepts dépendent de la façon
|
||
|
dont Shorewall est configuré.</para>
|
||
|
</listitem>
|
||
|
</itemizedlist>
|
||
|
</section>
|
||
|
|
||
|
<section>
|
||
|
<title>Démarrer et Arrêter Votre Firewall</title>
|
||
|
|
||
|
<para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>
|
||
|
|
||
|
<para>La <ulink url="Install.htm">procédure d'installation</ulink>
|
||
|
configure votre système pour lancer Shorewall au boot du système, mais au
|
||
|
début avec la version 1.3.9 de Shorewall le lancement est désactivé,
|
||
|
n'essayer pas de lancer Shorewall avec que la configuration soit finie.
|
||
|
Une fois que vous en aurez fini avec la configuration du firewall, vous
|
||
|
pouvez permettre le lancement de Shorewall en supprimant le fichier
|
||
|
<filename
|
||
|
class="directory">/etc/shorewall/</filename><filename>startup_disabled</filename>.
|
||
|
<important>
|
||
|
<para>Les utilisateurs des paquets .deb doivent éditer <filename
|
||
|
class="directory">/etc/default/</filename><filename>shorewall</filename>
|
||
|
and set <varname>startup=1</varname>.</para>
|
||
|
</important>Le firewall est activé en utilisant la commande
|
||
|
<quote><command>shorewall start</command></quote> et arrêté avec
|
||
|
<quote><command>shorewall stop</command></quote>. Lorsque le firewall est
|
||
|
stoppé, le routage est autorisé sur les hôtes qui possèdent une entrée
|
||
|
dans <filename
|
||
|
class="directory">/etc/shorewall/</filename><filename><ulink
|
||
|
url="Documentation.htm#Routestopped">routestopped</ulink></filename>. Un
|
||
|
firewall qui tourne peut être relancé en utilisant la commande
|
||
|
<quote><command>shorewall restart</command></quote> command. Si vous
|
||
|
voulez enlever toutes traces de Shorewall sur votre configuration de
|
||
|
Netfilter, utilisez <quote><command>shorewall
|
||
|
clear</command></quote>.</para>
|
||
|
|
||
|
<para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>
|
||
|
|
||
|
<para>Les exemples (three-interface) supposent que vous voulez permettre
|
||
|
le routage depuis ou vers <filename class="devicefile">eth1</filename> (le
|
||
|
réseau local) et <filename class="devicefile">eth2</filename> (DMZ)
|
||
|
lorsque Shorewall est stoppé. Si ces deux interfaces ne sont pas
|
||
|
connectées à votre réseau local et votre DMZ, ou si vous voulez permettre
|
||
|
un ensemble d'hôtes différents, modifiez <filename
|
||
|
class="directory">/etc/shorewall/</filename><filename><ulink
|
||
|
url="Documentation.htm#Routestopped">routestopped</ulink></filename> en
|
||
|
conséquence. <warning>
|
||
|
<para>Si vous êtes connecté à votre firewall depuis Internet,
|
||
|
n'essayez pas une commande <quote><command>shorewall
|
||
|
stop</command></quote> tant que vous n'avez pas ajouté une entrée pour
|
||
|
votre adresse <acronym>IP</acronym> (celle à partir de laquelle vous
|
||
|
êtes connectée) dans <filename
|
||
|
class="directory">/etc/shorewall/</filename><filename>routestopped</filename>.
|
||
|
De la même manière, je ne vous recommande pas d'utiliser
|
||
|
<quote><command>shorewall restart</command></quote>; il est plus
|
||
|
intéressant de créer <ulink
|
||
|
url="configuration_file_basics.htm#Configs">une configuration
|
||
|
alternative</ulink> et de la tester en utilisant la commande
|
||
|
<quote><command>shorewall try</command></quote>.</para>
|
||
|
</warning></para>
|
||
|
</section>
|
||
|
|
||
|
<section>
|
||
|
<title>Autres Lectures Recommandées</title>
|
||
|
|
||
|
<para>Je vous recommande vivement de lire la <ulink
|
||
|
url="configuration_file_basics.htm">page des Fonctionnalités Générales des
|
||
|
Fichiers de Configuration</ulink> -- elle contient des trucs sur les
|
||
|
possibilités de Shorewall pour rendre aisé l'administration de votre
|
||
|
firewall Shorewall.</para>
|
||
|
</section>
|
||
|
</article>
|