mirror of
https://gitlab.com/shorewall/code.git
synced 2024-12-27 00:29:02 +01:00
5282f35b99
git-svn-id: https://shorewall.svn.sourceforge.net/svnroot/shorewall/trunk@3178 fbd18981-670d-0410-9b5c-8dc0c1a9a2bb
1124 lines
55 KiB
XML
1124 lines
55 KiB
XML
<?xml version="1.0" encoding="ISO-8859-15"?>
|
|
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
|
|
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
|
|
<!-- $Id$ -->
|
|
<article id="two-interface" lang="fr">
|
|
<articleinfo>
|
|
<title>Firewall à deux interfaces</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>
|
|
|
|
<author>
|
|
<firstname>Guy</firstname>
|
|
|
|
<surname>Marcenac</surname>
|
|
</author>
|
|
</authorgroup>
|
|
|
|
<pubdate>2005-12-18</pubdate>
|
|
|
|
<copyright>
|
|
<year>2002</year>
|
|
|
|
<year>2003</year>
|
|
|
|
<year>2004</year>
|
|
|
|
<year>2005</year>
|
|
|
|
<holder>Thomas M. Eastep</holder>
|
|
|
|
<holder>Patrice Vetsel</holder>
|
|
|
|
<holder>Fabien Demassieux</holder>
|
|
|
|
<holder>Guy Marcenac</holder>
|
|
</copyright>
|
|
|
|
<legalnotice>
|
|
<para>Permission est accordée de copier, distribuer et/ou modifier ce
|
|
document selon les termes de la Licence de Documentation Libre GNU (GNU
|
|
Free Documentation License), version 1.2 ou toute version ultérieure
|
|
publiée par la Free Software Foundation ; sans section Invariables, sans
|
|
première de Couverture, et sans texte de quatrième de couverture. Une
|
|
copie de la présente Licence est incluse dans la section intitulée. Une
|
|
traduction française de la licence se trouve dans la section
|
|
<quote><ulink
|
|
url="http://www.idealx.org/dossier/oss/gfdl.fr.html">Licence de
|
|
Documentation Libre GNU</ulink></quote>. Ce paragraphe est une
|
|
traduction française pour aider à votre compréhension. Seul le texte
|
|
original en anglais présenté ci-dessous fixe les conditions
|
|
d'utilisation de cette documentation.</para>
|
|
|
|
<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> et la pour
|
|
la version 2 de Shorewall a été effectuée par <ulink
|
|
url="mailto:fd03x@wanadoo.fr">Fabien Demassieux</ulink>. J'ai assuré la
|
|
révision pour l'adapter à la version 3 de Shorewall. Si vous trouvez des
|
|
erreurs ou des améliorations à y apporter vous pouvez me contacter <ulink
|
|
url="mailto:guy@posteurs.com">Guy Marcenac</ulink>.</para>
|
|
</note>
|
|
|
|
<caution>
|
|
<para><emphasis role="bold">Cet article s'applique à Shorewall 3.0 et à
|
|
ses versions ultérieures. Si vous utilisez une version plus ancienne de
|
|
Shorewall, référez-vous à la documentation s'appliquant à votre
|
|
version</emphasis>.</para>
|
|
</caution>
|
|
|
|
<section>
|
|
<title>Introduction</title>
|
|
|
|
<para>Mettre en place un système Linux en tant que firewall pour un petit
|
|
réseau est une chose assez simple, si vous comprenez les bases et que vous
|
|
suivez la documentation.</para>
|
|
|
|
<para>Ce guide ne prétend pas vous apprendre tous les rouages de
|
|
Shorewall. Il se concentre sur ce qui est nécessaire pour configurer
|
|
Shorewall dans son utilisation la plus courante:</para>
|
|
|
|
<itemizedlist mark="bullet" spacing="compact">
|
|
<listitem>
|
|
<para>Un système Linux utilisé en tant que firewall/routeur pour un
|
|
petit réseau local.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis role="bold">Une seule adresse IP
|
|
publique.</emphasis><note>
|
|
<para>Si vous avez plus d'une adresse IP publique, 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></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Une connexion passant par un modem câble,
|
|
<acronym>ADSL</acronym>, <acronym>ISDN-RNIS</acronym>, Frame Relay,
|
|
<acronym>RTC</acronym>...</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Voici le schéma d'une installation typique:<figure label="1">
|
|
<title>Configuration standard d'un firewall avec deux
|
|
interfaces</title>
|
|
|
|
<mediaobject>
|
|
<imageobject>
|
|
<imagedata align="center" fileref="images/basics.png" format="PNG" />
|
|
</imageobject>
|
|
</mediaobject>
|
|
</figure> <caution>
|
|
<para>Si vous éditez vos fichiers de configuration sur un système
|
|
<trademark>Windows</trademark>, vous devez les enregistrer 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></para>
|
|
|
|
<section>
|
|
<title>Pré-requis Système</title>
|
|
|
|
<para>Shorewall a besoin que le package
|
|
<command><command>iproute</command></command>/<command><command>iproute2</command></command>
|
|
soit installé (avec la distribution <trademark>RedHat</trademark>, le
|
|
package s'appelle <command><command>iproute</command></command>). Vous
|
|
pouvez vérifier que le package est installé en contrôlant la présence du
|
|
programme <command><command>ip</command></command> sur votre firewall.
|
|
En tant que <systemitem class="username">root</systemitem>, vous pouvez
|
|
utiliser la commande <command><command>which</command></command> pour
|
|
cela: <programlisting>[root@gateway root]# <command>which ip</command>
|
|
/sbin/ip
|
|
[root@gateway root]#</programlisting></para>
|
|
|
|
<para>Je vous recommande de commencer par une lecture complète du guide
|
|
afin de vous familiariser avec les concepts mis en oeuvre, puis de
|
|
recommencer la lecture et seulement alors d'appliquer vos modifications
|
|
de configuration.</para>
|
|
</section>
|
|
|
|
<section>
|
|
<title>Conventions</title>
|
|
|
|
<para>Les points où des 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ées 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><acronym>ADSL</acronym></acronym> et que vous utilisez
|
|
<acronym><acronym>PPTP</acronym></acronym> pour communiquer avec un
|
|
serveur à travers ce modem, vous devez faire les changements <ulink
|
|
url="PPTP.htm#PPTP_ADSL">suivants</ulink> en plus de ceux décrits
|
|
ci-dessous. <acronym><acronym>ADSL</acronym></acronym> avec
|
|
<acronym><acronym>PPTP</acronym></acronym> est répandu en Europe,
|
|
notamment en Autriche.</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 <filename class="directory">/etc/shorewall</filename> -- pour
|
|
de simples paramétrages, vous n'aurez à faire qu'avec quelques-uns d'entre
|
|
eux comme décrit dans ce guide.</para>
|
|
|
|
<para><warning>
|
|
<para><emphasis role="bold">Note aux utilisateurs de
|
|
Debian</emphasis></para>
|
|
|
|
<para>Si vous vous servez du .deb pour installer, vous vous rendrez
|
|
compte que votre répertoire <filename
|
|
class="directory">/etc/shorewall</filename> est vide. Ceci est voulu.
|
|
Les squelettes des fichiers de configuration se trouvent sur votre
|
|
système dans le répertoire <filename
|
|
class="directory">/usr/share/doc/shorewall/default-config</filename>.
|
|
Copiez simplement les fichiers dont vous avez besoin depuis ce
|
|
répertoire dans <filename class="directory">/etc/shorewall</filename>,
|
|
puis modifiez ces copies.</para>
|
|
|
|
<para>Remarquez que vous devez copier<filename>
|
|
/usr/share/doc/shorewall/default-config/shorewall.conf</filename> et
|
|
<filename>/usr/share/doc/shorewall/default-config/modules</filename>
|
|
dans <filename
|
|
class="directory"><filename>/etc/shorewall</filename></filename> même
|
|
si vous ne modifiez pas ces fichiers.</para>
|
|
</warning><important>
|
|
<para>Après avoir <ulink url="Install.htm">installé Shorewall</ulink>,
|
|
vous pourrez trouver les exemples de la manière suivante:</para>
|
|
|
|
<para><orderedlist>
|
|
<listitem>
|
|
<para>Si vous avez installé en utilisant un
|
|
<acronym>RPM</acronym>, les exemples seront dans le
|
|
sous-répertoire <filename
|
|
class="directory">Samples/two-interfaces/</filename> du
|
|
répertoire de la documentation de Shorewall. Si vous ne savez
|
|
pas où se trouve le répertoire de la documentation de Shorewall,
|
|
vous pouvez trouver les exemples en utilisant cette
|
|
commande:</para>
|
|
|
|
<para><programlisting>~# rpm -ql shorewall | fgrep two-interfaces
|
|
/usr/share/doc/packages/shorewall/Samples/two-interfaces
|
|
/usr/share/doc/packages/shorewall/Samples/two-interfaces/interfaces
|
|
/usr/share/doc/packages/shorewall/Samples/two-interfaces/masq
|
|
/usr/share/doc/packages/shorewall/Samples/two-interfaces/policy
|
|
/usr/share/doc/packages/shorewall/Samples/two-interfaces/routestopped
|
|
/usr/share/doc/packages/shorewall/Samples/two-interfaces/rules
|
|
/usr/share/doc/packages/shorewall/Samples/two-interfaces/zones
|
|
~#</programlisting></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Si vous avez installé depuis le tarball, les exemples sont
|
|
dans le répertoire <filename>Samples/two-interfaces</filename>
|
|
du tarball.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Si vous avez installé en utilisant un .deb, les exemples
|
|
sont dans
|
|
<filename>/usr/share/doc/shorewall/examples/two-interfaces</filename>.</para>
|
|
</listitem>
|
|
</orderedlist></para>
|
|
</important></para>
|
|
|
|
<para>Au fur et à mesure de la présentation de chaque fichier, 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 étant composé d'un
|
|
ensemble de zones. Dans une configuration avec deux interfaces, les noms
|
|
de zone suivants sont utilisés:<programlisting>#ZONE TYPE OPTIONS IN OUT
|
|
# OPTIONS OPTIONS
|
|
fw firewall
|
|
net ipv4
|
|
loc ipv4</programlisting></para>
|
|
|
|
<para>Les zones de Shorewall sont définies dans le fichier <ulink
|
|
url="Documentation.htm#Zones"><filename>/etc/shorewall/zones</filename></ulink>.</para>
|
|
|
|
<para>Remarquez que Shorewall reconnaît le système de firewall comme sa
|
|
propre zone. Quand le fichier <filename>/etc/shorewall/zones</filename>
|
|
est traité, le nom de la zone firewall est stocké dans la variable
|
|
d'environnement <emphasis>$FW</emphasis>, qui peut être utilisée depuis
|
|
l'ensemble des autres fichiers de configuration de Shorewall pour faire
|
|
référence au firewall lui-même.</para>
|
|
|
|
<para>Les règles à propos du trafic à autoriser et à interdire sont
|
|
exprimées en utilisant le terme de zones.<itemizedlist spacing="compact">
|
|
<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>/etc/shorewall/rules</filename></ulink>.</para>
|
|
</listitem>
|
|
</itemizedlist></para>
|
|
|
|
<para>Pour chaque connexion demandant à entrer dans le firewall, la
|
|
requête est en premier lieu vérifiée par rapport au contenu du fichier
|
|
<filename>/etc/shorewall/rules</filename>. Si aucune règle dans ce fichier
|
|
ne correspond à la demande de connexion alors la première politique dans
|
|
le fichier <filename>/etc/shorewall/policy</filename> qui y correspond
|
|
sera appliquée. S'il y a une <ulink
|
|
url="shorewall_extension_scripts.htm">action commune</ulink> définie pour
|
|
cette politique dans <filename>/etc/shorewall/actions</filename> ou dans
|
|
<filename>/usr/share/shorewall/actions.std</filename> cette action commune
|
|
sera exécutée avant que la politique ne soit appliquée.</para>
|
|
|
|
<para>Le fichier <filename>/etc/shorewall/policy</filename> inclus dans
|
|
l'archive d'exemple (two-interface) contient les politiques suivantes:
|
|
<programlisting>#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST
|
|
loc net ACCEPT
|
|
net all DROP info
|
|
all all REJECT info</programlisting>Dans le fichier
|
|
d'exemple (two-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 cette ligne.<programlisting>#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST
|
|
$FW net ACCEPT</programlisting> Ces politiques vont:
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Autoriser (ACCEPT) toutes les demandes de connexion depuis
|
|
votre réseau local vers internet</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Ignorer (DROP) toutes les demandes de connexion depuis
|
|
internet vers votre firewall ou votre réseau local</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Autoriser (ACCEPT) toutes les demandes de connexion de votre
|
|
firewall vers internet (si vous avez dé-commenté la politique
|
|
additionnelle)</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Rejeter (REJECT) toutes les autres requêtes de
|
|
connexion.</para>
|
|
</listitem>
|
|
</itemizedlist> <inlinegraphic fileref="images/BD21298_.gif"
|
|
format="GIF" /></para>
|
|
|
|
<para>Il est important de remarquer que les politiques Shorewall (ainsi
|
|
que les règles) font référence à des <emphasis
|
|
role="bold">connexions</emphasis> et non pas à un flux de paquets. Avec
|
|
les politiques définies dans le fichier <filename
|
|
class="directory">/etc/shorewall/policy</filename> présenté plus haut, les
|
|
connexions sont autorisées de la zone <quote>loc</quote> vers la zone
|
|
<quote>net</quote> même si les connexions ne sont pas permises de la zone
|
|
<quote>loc</quote> vers le firewall lui-même.</para>
|
|
|
|
<para>A ce point, éditez votre fichier <filename
|
|
class="directory">/etc/shorewall/</filename><filename>policy</filename> et
|
|
faites-y les changements que vous désirez.</para>
|
|
</section>
|
|
|
|
<section>
|
|
<title>Interfaces Réseau</title>
|
|
|
|
<mediaobject>
|
|
<imageobject>
|
|
<imagedata align="center" fileref="images/basics.png" format="PNG" />
|
|
</imageobject>
|
|
</mediaobject>
|
|
|
|
<para>Le firewall possède deux interfaces réseau. Lorsque la connexion
|
|
internet passe par un <quote>modem</quote> câble ou<acronym>
|
|
<acronym>ADSL</acronym></acronym>,<emphasis> l'<emphasis>Interface
|
|
Externe</emphasis> </emphasis>sera l'adaptateur éthernet qui est connecté
|
|
à ce <quote>Modem</quote> (par exemple <filename
|
|
class="devicefile">eth0</filename>). Par contre, si vous vous connectez
|
|
avec <acronym>PPPoE</acronym> (Point-to-Point Protocol over Ethernet) ou
|
|
avec <acronym><acronym>PPTP</acronym></acronym> (Point-to-Point Tunneling
|
|
Protocol), l'interface externe sera une interface ppp (par exemple
|
|
<filename class="devicefile"><filename
|
|
class="devicefile">ppp0</filename></filename>). Si vous vous connectez
|
|
avec un simple modem <acronym><acronym>RTC</acronym></acronym>, votre
|
|
interface externe sera aussi <filename class="devicefile"><filename
|
|
class="devicefile">ppp0</filename></filename>. Si vous vous connectez en
|
|
utilisant l'<acronym><acronym>ISDN</acronym></acronym>, votre interface
|
|
externe sera <filename class="devicefile"><filename
|
|
class="devicefile">ippp0</filename></filename>.</para>
|
|
|
|
<para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>
|
|
|
|
<para><emphasis role="bold">Si votre interface vers l'extérieur est
|
|
</emphasis><emphasis role="bold">ppp0</emphasis> ou <emphasis
|
|
role="bold">ippp0</emphasis> <emphasis role="bold">alors il faut mettre
|
|
<varname>CLAMPMSS=yes</varname> dans le fichier <filename
|
|
class="directory">/etc/shorewall/</filename><filename>shorewall.conf</filename></emphasis>.</para>
|
|
|
|
<para>Votre <emphasis>Interface Interne</emphasis> (interface vers votre
|
|
réseau local <acronym>LAN</acronym>) sera un adaptateur éthernet
|
|
(<filename class="devicefile">eth1</filename> or <filename
|
|
class="devicefile">eth0</filename>) et sera connectée à un hub ou un
|
|
switch. Vos autres ordinateurs seront connectés à ce même hub ou switch
|
|
(note: Si vous avez un seul ordinateur, vous pouvez y connecter le
|
|
firewall directement en utilisant un câble croisé). <warning>
|
|
<para><emphasis role="bold">Ne connectez pas les interfaces interne et
|
|
externe sur le même hub ou le même switch, sauf à des fins de
|
|
test</emphasis>. Vous pouvez tester en utilisant ce type de
|
|
configuration si vous spécifiez l'option <emphasis
|
|
role="bold">arp_filter</emphasis> ou l'option <emphasis
|
|
role="bold">arp_ignore</emphasis> dans le fichier <filename
|
|
class="directory">/etc/shorewall/</filename><filename>interfaces, et
|
|
ce</filename> pour toutes les interfaces connectées au hub/switch
|
|
commun. <emphasis role="bold">Il est très fortement déconseillé
|
|
d'utiliser une telle configuration avec un firewall en
|
|
production</emphasis>.</para>
|
|
</warning> <inlinegraphic fileref="images/BD21298_.gif"
|
|
format="GIF" /></para>
|
|
|
|
<para>Le fichier de configuration d'exemple pour un firewall à deux
|
|
interfaces suppose que votre interface externe est <filename
|
|
class="devicefile">eth0</filename> et que l'interface interne est
|
|
<filename class="devicefile">eth1</filename>. Si votre configuration est
|
|
différente, vous devrez modifier le fichier<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 astuces:<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 detect
|
|
dans la seconde colonne par un <quote>-</quote> (sans
|
|
guillemets).</para>
|
|
</tip><tip>
|
|
<para>Si votre interface vers l'extérieur est <filename
|
|
class="devicefile">ppp0</filename> or <filename
|
|
class="devicefile">ippp0</filename> ou 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><command>brctl</command></command> alors <emphasis
|
|
role="bold">vous devez ajouter l'option <varname>routeback</varname> à
|
|
la liste des options</emphasis>.</para>
|
|
</tip></para>
|
|
</section>
|
|
|
|
<section>
|
|
<title>Adresses IP</title>
|
|
|
|
<para>Avant d'aller plus loin, nous devons dire quelques mots au sujet des
|
|
adresses IP. Normalement, votre Fournisseur d' Accès Internet
|
|
(<acronym>FAI</acronym>) ne vous allouera qu'une seule adresse IP. Cette
|
|
adresse peut vous être allouée par <acronym>DHCP</acronym> (Dynamic Host
|
|
Configuration Protocol), lors de l'établissement de votre connexion (modem
|
|
standard) ou bien lorsque vous établissez un autre type de connexion
|
|
<acronym>PPP</acronym> (<acronym>PPPoA</acronym>,
|
|
<acronym>PPPoE</acronym>, etc.). Dans certains cas , votre fournisseur
|
|
peut vous allouer une adresse statique IP. Dans ce cas vous devez
|
|
configurer l'interface externe de votre firewall afin d'utiliser cette
|
|
adresse de manière permanente.</para>
|
|
|
|
<para>Quelle que soit la façon dont votre adresse externe vous est
|
|
attribuée, elle va être partagée par tous vos systèmes lors de l'accès à
|
|
internet. Vous devrez assigner vos propres adresses au machines de votre
|
|
réseau local (votre interface interne sur le firewall ainsi que les autres
|
|
ordinateurs). La RFC 1918 réserve des plages d'adresses IP pour
|
|
l'utilisation dans les réseau privés:</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, <emphasis role="bold">il faut regarder
|
|
l'adresse IP de votre interface externe, et, si elle est dans l'une des
|
|
plages précédentes, vous devez enlever l'option "norfc1918" dans la ligne
|
|
concernant l'interface externe dans le fichier
|
|
<filename>/etc/shorewall/interfaces</filename></emphasis>.</para>
|
|
|
|
<para>Vous devrez allouer vos adresses depuis le même sous-réseau
|
|
(subnet). Pour ce faire, nous pouvons considérer un sous-réseau comme
|
|
étant une plage d'adresses <varname>allant de x.y.z.0 à
|
|
x.y.z.255</varname>. Un tel sous-réseau aura un masque (subnet mask)
|
|
<systemitem class="netmask">de 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 l'adresse
|
|
<varname>x.y.z.255</varname> est réservée en tant qu'adresse de diffusion
|
|
(<emphasis>broadcast</emphasis>). Dans Shorewall, un tel sous-réseau est
|
|
décrit en utilisant <ulink url="shorewall_setup_guide_fr.htm#Subnets">la
|
|
notation CIDR (Classless InterDomain Routing)</ulink> qui consiste en
|
|
l'adresse du sous-réseau suivie par<varname> /</varname>24. Le
|
|
<quote>24</quote> indiquant le nombre consécutif de bits à
|
|
<quote>1</quote> dans la partie gauche du masque de sous-réseau.</para>
|
|
|
|
<para><table>
|
|
<title>Un exemple de sous-réseau :</title>
|
|
|
|
<tgroup cols="2">
|
|
<colspec align="left" />
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry>Etendue:</entry>
|
|
|
|
<entry><systemitem class="ipaddress">10.10.10.0</systemitem> -
|
|
<systemitem class="ipaddress">10.10.10.255</systemitem></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>Adresse de sous-réseau:</entry>
|
|
|
|
<entry><systemitem
|
|
class="ipaddress">10.10.10.0</systemitem></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>Adresse de diffusion:</entry>
|
|
|
|
<entry><systemitem
|
|
class="ipaddress">10.10.10.255</systemitem></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>Notation CIDR:</entry>
|
|
|
|
<entry><systemitem
|
|
class="ipaddress">10.10.10.0/24</systemitem></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table></para>
|
|
|
|
<para>La convention veut que l'on affecte à l'interface interne du
|
|
firewall la première adresse utilisable du sous-réseau (<systemitem
|
|
class="ipaddress">10.10.10.1</systemitem> dans l'exemple précédent) ou
|
|
bien la dernière adresse utilisable (<systemitem
|
|
class="ipaddress">10.10.10.254</systemitem>).</para>
|
|
|
|
<para>L'un des objectifs de la gestion en sous-réseaux est de permettre à
|
|
tous les ordinateurs du 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 auquel ils appartiennent, les
|
|
ordinateurs doivent envoyer leurs paquets par l'intermédiaire d'une
|
|
passerelle (gateway).</para>
|
|
|
|
<para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>
|
|
|
|
<para>Vos ordinateurs locaux (computer 1 et computer 2 dans le diagramme)
|
|
doivent ê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>Cette brève présentation ne fait qu'effleurer la question des
|
|
sous-réseaux et du routage. Si vous voulez en 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 préjuge que vous avez configuré votre réseau
|
|
comme montré ci-dessous :<mediaobject>
|
|
<imageobject>
|
|
<imagedata align="center" fileref="images/basics1.png" format="PNG" />
|
|
</imageobject>
|
|
</mediaobject> La passerelle par défaut pour les ordinateurs Computer 1
|
|
et Computer 2 sera <systemitem
|
|
class="ipaddress">10.10.10.254</systemitem>. <warning>
|
|
<para>Votre <acronym><acronym>FAI</acronym></acronym> (fournisseur
|
|
d'accès internet) pourrait vous allouer une adresse de la <emphasis
|
|
role="bold">RFC 1918</emphasis> pour votre interface externe. Si cette
|
|
adresse est le sous-réseau <systemitem
|
|
class="ipaddress">10.10.10.0/24</systemitem> alors <emphasis
|
|
role="bold">vous aurez besoin d'un sous-réseau RFC 1918 DIFFÉRENT pour
|
|
votre réseau local</emphasis>.</para>
|
|
</warning></para>
|
|
</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 centraux d'internet (backbone) ne font pas
|
|
suivre les paquets qui ont une adresse de destination appartenant à la
|
|
RFC-1918. Lorsqu'un de vos systèmes en local (supposons Computer 1) envoie
|
|
une demande de connexion à un serveur internet, le firewall doit effectuer
|
|
une traduction d'adresse réseau ou <emphasis>Network Address Translation
|
|
(</emphasis><acronym><acronym>NAT</acronym></acronym>). Le firewall
|
|
réécrit l'adresse source dans le paquet et la remplace par l'adresse de
|
|
l'interface externe du firewall; en d'autres termes, 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 peuvent pas être
|
|
routés à travers internet, donc l'hôte internet ne peut adresser sa
|
|
réponse à l'ordinateur 1). Lorsque le firewall reçoit le paquet de
|
|
réponse, il réécrit l'adresse de destination à <systemitem
|
|
class="ipaddress">10.10.10.1</systemitem> et fait passer le paquet vers
|
|
l'ordinateur Computer 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 traduction
|
|
d'adresses source ou <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 votre 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> que la
|
|
<emphasis><acronym>SNAT</acronym></emphasis> sont configurés avec des
|
|
entrées dans le fichier <filename>/etc/shorewall/masq</filename>. Vous
|
|
utiliserez normalement le Masquerading si votre adresse
|
|
<acronym>IP</acronym> externe est dynamique, et la <acronym>SNAT</acronym>
|
|
si votre adresse <acronym>IP</acronym> externe est statique.</para>
|
|
|
|
<para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>
|
|
|
|
<para>Si l'interface externe de votre firewall est <filename
|
|
class="devicefile">eth0</filename>, vous n'avez pas besoin de modifier le
|
|
fichier fourni avec l'exemple. Dans le cas contraire, éditez
|
|
<filename>/etc/shorewall/masq</filename> et changez la première colonne
|
|
par le nom de votre interface externe, et la seconde colonne par le nom de
|
|
votre interface interne.</para>
|
|
|
|
<para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>
|
|
|
|
<para>Si votre adresse externe <acronym>IP</acronym> 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 adresse
|
|
<acronym>IP</acronym> statique dans la troisième colonne permet un
|
|
traitement des paquets sortants un peu plus efficace.</para>
|
|
|
|
<para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>
|
|
|
|
<para>Si vous utilisez un paquetage Debian, vérifiez dans votre fichier de
|
|
configuration <filename>shorewall.conf</filename> que la valeur suivante
|
|
est convenablement paramétrée, sinon faites les changements
|
|
nécessaires:<itemizedlist spacing="compact">
|
|
<listitem>
|
|
<para><varname>IP_FORWARDING=On</varname></para>
|
|
</listitem>
|
|
</itemizedlist></para>
|
|
</section>
|
|
|
|
<section>
|
|
<title>Transfert de ports (DNAT)</title>
|
|
|
|
<para>Un de vos objectifs est peut-être de faire tourner un ou plusieurs
|
|
serveurs sur nos ordinateurs locaux. Comme ces ordinateurs ont une adresse
|
|
RFC-1918, il n' est pas possible pour les clients sur internet de s'y
|
|
connecter directement. Il faudra plutôt à que ces clients adressent leurs
|
|
demandes de connexion au firewall qui réécrira l'adresse de votre serveur
|
|
comme adresse de destination, puis lui fera passer le paquet. Lorsque
|
|
votre serveur retournera sa réponse, le firewall appliquera
|
|
automatiquement une règle <acronym><acronym>SNAT</acronym></acronym> pour
|
|
réécrire l'adresse source dans la réponse.</para>
|
|
|
|
<para>Ce procédé est appelé transfert de port (<emphasis>Port
|
|
Forwarding)</emphasis> ou traduction d'adresses réseau destination ou
|
|
<emphasis>Destination Network Address Translation</emphasis>
|
|
(<acronym><acronym>DNAT</acronym></acronym>). Vous configurez le transfert
|
|
de port en utilisant des règles <acronym><acronym>DNAT</acronym></acronym>
|
|
dans le fichier <filename>/etc/shorewall/rules</filename>.</para>
|
|
|
|
<para>La forme générale d'une simple règle de transfert de port dans
|
|
<filename>/etc/shorewall/rules</filename> est: <programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
|
DNAT net loc:<emphasis><server local ip address></emphasis>[:<emphasis><server port></emphasis>] <emphasis><protocol></emphasis> <emphasis><port></emphasis></programlisting>Shorewall
|
|
possède des <ulink url="Macros.html">macros</ulink> pour de nombreuses
|
|
applications. Regardez les fichiers
|
|
<filename>/usr/share/shorewall/macro.*</filename> ou bien la commande
|
|
<command>shorewall show macros</command> si vous utilisez une version
|
|
3.0.3 ou ultérieure de Shorewall pour avoir une liste des macros comprises
|
|
dans votre version de Shorewall. Les macros simplifient la création de
|
|
règles <acronym>DNAT</acronym> en fournissant directement le protocole et
|
|
le(s) port(s) pour un service standard comme on peut le voir dans les
|
|
exemples suivants:<example label="1">
|
|
<title>Serveur Web</title>
|
|
|
|
<para>Si vous voulez faire tourner un serveur Web sur l'ordinateur
|
|
Computer 2 et que vous voulez faire passer les requêtes
|
|
<acronym><acronym>TCP</acronym></acronym> sur le port 80 à ce système
|
|
:</para>
|
|
|
|
<programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
|
Web/DNAT net loc:10.10.10.2</programlisting>
|
|
</example> <example label="2">
|
|
<title>Serveur FTP</title>
|
|
|
|
<para>Si vous faites tourner un serveur <acronym>FTP</acronym> sur
|
|
l'ordinateur Computer 1 et que vous voulez re-diriger les requêtes
|
|
<acronym>TCP</acronym> entrantes sur le port 21 vers ce système:
|
|
<programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
|
FTP/DNAT net loc:10.10.10.1 </programlisting>Pour
|
|
<acronym><acronym>FTP</acronym></acronym>, vous aurez aussi besoin
|
|
d'avoir le support du suivi de connexion et du <acronym>NAT</acronym>
|
|
pour <acronym><acronym>FTP </acronym></acronym>dans votre noyau
|
|
(kernel). Pour les noyaux fournis dans une distribution, cela veut
|
|
dire que les modules <filename
|
|
class="libraryfile">ip_conntrack_ftp</filename> et <filename
|
|
class="libraryfile">ip_nat_ftp</filename> doivent être disponibles.
|
|
Shorewall chargera automatiquement ces modules si ils sont disponibles
|
|
à leur emplacement habituel <filename
|
|
class="directory">/lib/modules/<kernel
|
|
version>/kernel/net/ipv4/netfilter</filename>.</para>
|
|
</example> Deux points importants sont à garder en mémoire
|
|
:<itemizedlist>
|
|
<listitem>
|
|
<para>Vous devez tester les règles précédentes depuis un client à
|
|
l'extérieur de votre réseau local (c.a.d., ne pas tester depuis un
|
|
navigateur tournant sur l'ordinateur Computer 1 ou Computer 2 ni sur
|
|
le firewall). Si vous voulez avoir la possibilité d'accéder à votre
|
|
serveur web ou <acronym>FTP</acronym> depuis l'intérieur de votre
|
|
firewall en utilisant l'adresse de l'interface externe
|
|
<acronym>IP</acronym>, consultez <ulink url="FAQ.htm#faq2">Shorewall
|
|
FAQ #2</ulink>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Quelques Fournisseurs d'Accès Internet
|
|
(<acronym>FAI</acronym>) 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).</para>
|
|
|
|
<programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
|
DNAT net loc:10.10.10.2:80 tcp 5000</programlisting>
|
|
</listitem>
|
|
</itemizedlist> <inlinegraphic fileref="images/BD21298_.gif"
|
|
format="GIF" /></para>
|
|
|
|
<para>Maintenant, modifiez <filename>/etc/shorewall/rules</filename> pour
|
|
ajouter les règles <acronym>DNAT</acronym> dont vous avez besoin.</para>
|
|
|
|
<important>
|
|
<para>Quand vous testez des règles <acronym>DNAT</acronym> telles que
|
|
celles présentées plus haut, <emphasis role="bold">vous devez les tester
|
|
depuis un client A L'EXTÉRIEUR DE VOTRE FIREWALL</emphasis> (depuis la
|
|
zone <quote>net</quote>). Vous ne pouvez pas tester ces règles de
|
|
l'intérieur !</para>
|
|
|
|
<para>Pour des astuces en cas de problème avec la
|
|
<acronym>DNAT</acronym>, <ulink url="FAQ.htm#faq1a">allez lire les FAQ
|
|
1a et 1b</ulink>.</para>
|
|
</important>
|
|
</section>
|
|
|
|
<section>
|
|
<title>Service de Noms de Domaines (DNS)</title>
|
|
|
|
<para>Normalement, quand vous vous connectez à votre fournisseur d'accès
|
|
(<acronym>FAI</acronym>), en même temps que vous obtenez votre adresse IP,
|
|
votre <quote>resolver</quote> pour le Service des Noms de Domaines ou
|
|
<emphasis>Domain Name Service</emphasis>
|
|
(<acronym><acronym>DNS</acronym></acronym>) pour le firewall est configuré
|
|
automatiquement (c.a.d., le fichier <filename>/etc/resolv.conf</filename>
|
|
est mis à jour). Il arrive que votre fournisseur d'accès vous donne une
|
|
paire d'adresse <acronym><acronym>IP</acronym></acronym> pour les serveurs
|
|
<acronym><acronym>DNS</acronym></acronym> afin que vous configuriez
|
|
manuellement vos serveurs de noms primaire et secondaire. Quelle que soit
|
|
la manière dont le <acronym>DNS</acronym> est configuré sur votre
|
|
firewall, il est de votre responsabilité de configurer le
|
|
<quote>resolver</quote> sur chacun de vos systèmes internes. Vous pouvez
|
|
procéder d'une de ces deux façons :<itemizedlist spacing="compact">
|
|
<listitem>
|
|
<para>Vous pouvez configurer votre système interne pour utiliser les
|
|
serveurs de noms de votre fournisseur d'accès. Si votre fournisseur
|
|
vous donne les adresses de ses serveurs ou si ces adresses sont
|
|
disponibles sur son site web, vous pouvez les utiliser pour
|
|
configurer vos systèmes internes. Si cette information n' est pas
|
|
disponible, regardez dans <filename>/etc/resolv.conf</filename> sur
|
|
votre firewall -- les noms des serveurs sont donnés dans
|
|
l'enregistrement "<command>nameserver</command>" de 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> fournit un
|
|
<acronym><acronym>RPM</acronym></acronym> pour serveur cache DNS (ce
|
|
<acronym>RPM</acronym> à aussi besoin aussi du paquetage<acronym>
|
|
RPM</acronym> <command>bind</command>) et pour les utilisateurs de
|
|
Bering, il y a le paquetage <command>dnscache.lrp</command>. Si vous
|
|
adoptez cette approche, vous configurez vos systèmes internes pour
|
|
utiliser le firewall lui même comme étant le seul serveur de noms
|
|
primaire. Vous utilisez l'adresse <acronym>IP</acronym> interne du
|
|
firewall (<systemitem class="ipaddress">10.10.10.254</systemitem>
|
|
dans l'exemple précédent) pour adresse du serveur de nom. Pour
|
|
permettre à vos systèmes locaux d'accéder à votre serveur cache DNS,
|
|
vous devez ouvrir le port 53 (à la fois <acronym>UDP</acronym> and
|
|
<acronym>TCP</acronym>) depuis le réseau local vers le firewall;
|
|
vous ferez ceci en ajoutant les règles suivantes dans <filename
|
|
class="directory">/etc/shorewall/</filename><filename>rules</filename>.
|
|
<programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
|
DNS/ACCEPT loc $FW</programlisting></para>
|
|
</listitem>
|
|
</itemizedlist></para>
|
|
</section>
|
|
|
|
<section>
|
|
<title>Autres Connexions</title>
|
|
|
|
<para>Les fichiers exemples inclus dans l'archive pour le firewall à deux
|
|
interfaces (two-interface) contiennent les règles suivantes
|
|
:<programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
|
DNS/ACCEPT $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>Dans la règle ci-dessus,
|
|
<quote><command>DNS/ACCEPT</command></quote> est un exemple
|
|
d'<emphasis>invocation d'une macro</emphasis>. Shorewall offre un certain
|
|
nombre de macros pré-définies (voir
|
|
<filename>/usr/share/shorewall/macro.*</filename>). Vous pouvez également
|
|
<ulink url="Macros.html">ajouter vos propres macros</ulink>.</para>
|
|
|
|
<para>Vous n'êtes pas obligés d'utiliser des macros. Vous pouvez aussi
|
|
ajouter des régles dans le fichier
|
|
<filename>/etc/shorewall/rules</filename>. Shorewall démarrera légèrement
|
|
plus rapidement si vous codez directement vos règles que si vous utilisez
|
|
les macros. La régle vue ci-dessus aurait également pu être codée comme
|
|
cela:</para>
|
|
|
|
<programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
|
ACCEPT $FW net udp 53
|
|
ACCEPT $FW net tcp 53</programlisting>
|
|
|
|
<para>Au cas ou Shorewall n'inclue pas de macro pré-définie qui vous
|
|
convienne, vous pouvez définir une macro vous-même ou bien coder
|
|
directement les régles appropriées.</para>
|
|
|
|
<para>L'exemple inclue aussi la règle suivante: <programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
|
SSH/ACCEPT loc $FW</programlisting>Cette régle autorise un serveur
|
|
<acronym>SSH</acronym> sur votre firewall et la connexion à celui-ci
|
|
depuis votre réseau local.</para>
|
|
|
|
<para>Si vous souhaitez autoriser d'autre connexions de votre firewall
|
|
vers d'autres systèmes, la syntaxe générale d'une macro est:
|
|
<programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
|
<macro>/ACCEPT $FW <emphasis><destination zone></emphasis></programlisting>La
|
|
syntaxe générale lorsqu'on utilise pas de macro est:<programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
|
ACCEPT $FW <emphasis><destination zone> <protocol> <port></emphasis></programlisting><example>
|
|
<title>Serveur Web sur le Firewall</title>
|
|
|
|
<para>Si vous voulez ouvrir un serveur web sur votre firewall et que
|
|
vous voulez le rendre accessible depuis le réseau local et depuis
|
|
l'extérieur: <programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
|
Web/ACCEPT net $FW
|
|
Web/ACCEPT loc $FW</programlisting>Ces deux régles devraient évidemment
|
|
s'ajouter à celles listées avant dans <quote><link
|
|
linkend="cachingdns">Vous pouvez configurer un cache DNS sur votre
|
|
firewall</link></quote>.</para>
|
|
</example>Si vous ne savez pas quel port(s) et protocole(s) une
|
|
application particulière utilise, vous pouvez regarder <ulink
|
|
url="ports.htm">ici</ulink>.<important>
|
|
<para>Je ne recommande pas d'autoriser
|
|
<command><command>telnet</command></command> vers/de 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><acronym>SSH</acronym></acronym>:<programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
|
SSH/ACCEPT net $FW</programlisting></para>
|
|
</important> <inlinegraphic fileref="images/leaflogo.gif"
|
|
format="GIF" />Les utilisateurs de Bering pourront ajouter les deux régles
|
|
suivantes pour rester compatible avec la configuration du firewall de
|
|
Jacques (Jacques's Shorewall configuration).<programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
|
ACCEPT loc $FW udp 53 #Allow DNS Cache to work
|
|
ACCEPT loc $FW tcp 80 #Allow Weblet to work</programlisting>
|
|
<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 d'autres connexions suivant vos
|
|
besoins.</para>
|
|
</section>
|
|
|
|
<section>
|
|
<title>Quelques Points à Garder en Mémoire</title>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><emphasis role="bold">Vous ne pouvez pas tester votre firewall
|
|
depuis l'intérieur de votre réseau</emphasis>. Envoyer des requêtes à
|
|
l'adresse IP externe de votre firewall ne signifie pas 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 associé à l'interface
|
|
locale et sera traité comme du trafic du réseau local vers le firewall
|
|
(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 faire suivre
|
|
(<emphasis>forward</emphasis>) des paquets simplement parce que vous
|
|
pouvez faire un <command>ping</command> sur l'adresse IP de toutes les
|
|
interfaces du firewall depuis le réseau local. La seule conclusion que
|
|
vous puissiez tirer dans ce cas est que le lien entre le réseau local
|
|
et le firewall fonctionne et que vous avez probablement la bonne
|
|
adresse de passerelle par défaut 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 une
|
|
absurdité 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.
|
|
Ce problème se produit en général lorsque on installe un firewall
|
|
Shorewall en parallèle à une passerelle existante et qu'on essaye
|
|
d'utiliser des règles <acronym>DNAT</acronym> dans Shorewall sans
|
|
changer la passerelle par défaut sur les systèmes recevant les
|
|
requêtes transférées (forwarded). Les requêtes passent dans le
|
|
firewall Shorewall où l'adresse de destination IP est réécrite, mais
|
|
la réponse revient par l'ancienne passerelle qui, elle, ne modifiera
|
|
pas le paquet.</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 dès le boot du système, mais
|
|
le lancement est désactivé, de façon à ce que votre système ne tente pas
|
|
de lancer Shorewall avant que la configuration ne soit terminée. Une fois
|
|
que vous en avez fini avec la configuration du firewall, vous devez éditer
|
|
/etc/shorewall/shorewall.conf et y mettre STARTUP_ENABLED=Yes.<important>
|
|
<para>Les utilisateurs des paquetages .deb doivent éditer <filename
|
|
class="directory">/etc/default/</filename><filename>shorewall</filename>
|
|
et mettre <varname>startup=1</varname>.</para>
|
|
</important></para>
|
|
|
|
<para>Le firewall est activé en utilisant la commande
|
|
<quote><command>shorewall start</command></quote> et arrêté avec la
|
|
commande <quote><command>shorewall stop</command></quote>. Lorsque le
|
|
firewall est arrêté, le routage est autorisé sur les hôtes qui possèdent
|
|
une entrée dans <filename class="directory"><ulink
|
|
url="Documentation.htm#Routestopped">/etc/shorewall/routestopped</ulink></filename>.
|
|
Un firewall qui tourne peut être relancé en utilisant la commande
|
|
<quote><command>shorewall restart</command></quote>. Si vous voulez
|
|
enlever toute trace de Shorewall sur votre configuration de Netfilter,
|
|
utilisez <quote><emphasis role="bold">shorewall
|
|
clear</emphasis></quote></para>
|
|
|
|
<para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>
|
|
|
|
<para>Les fichier de l'exemple Firewall à Deux Interfaces (two-interface)
|
|
supposent que vous voulez autoriser le routage depuis ou vers <filename
|
|
class="devicefile">eth1</filename> (le réseau local) lorsque Shorewall est
|
|
arrêté. Si votre réseau local n' est pas connecté à <filename
|
|
class="devicefile">eth1</filename> ou que vous voulez permettre l'accès
|
|
depuis ou vers d'autres hôtes, 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 d'exécuter une commande <quote><command>shorewall
|
|
stop</command></quote> tant que vous n'avez pas ajouté une entrée dans
|
|
<filename><filename
|
|
class="directory">/etc/shorewall/</filename><filename>routestopped</filename></filename>
|
|
pour l'adresse IP à partir de laquelle vous êtes connecté . De la même
|
|
manière, je vous déconseille 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><ulink url="starting_and_stopping_shorewall.htm">shorewall
|
|
try</ulink></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 astuces sur des
|
|
possibilités de Shorewall qui peuvent rendre plus aisée l'administration
|
|
de votre firewall Shorewall.</para>
|
|
</section>
|
|
|
|
<section>
|
|
<title>Ajouter un Segment Sans-fil à votre Firewall à deux
|
|
interfaces</title>
|
|
|
|
<para>Maintenant que vous avez une configuration à deux interfaces qui
|
|
marche, l'étape suivante logique est d'ajouter un réseau sans-fil. La
|
|
première chose à faire est d'ajouter une carte à votre firewall, soit une
|
|
carte sans-fil soit une carte éthernet reliée à un point d'accès
|
|
sans-fil.<caution>
|
|
<para>Quant vous ajoutez une carte réseau à un machine, il se peut
|
|
qu'elle ne soit pas détectée comme celle suivant la plus haute
|
|
interface. Par exemple, si vous avez deux cartes sur votre système
|
|
(<filename class="devicefile">eth0</filename> and <filename
|
|
class="devicefile">eth1</filename>) et que vous en ajoutez une
|
|
troisième qui utilise le même driver qu'une des deux autres, cette
|
|
troisième carte ne sera pas obligatoirement détectée en tant que
|
|
<filename class="devicefile">eth2</filename>. Elle peut très bien être
|
|
détectée en tant que <filename class="devicefile">eth0</filename> ou
|
|
<filename class="devicefile">eth1</filename>!</para>
|
|
|
|
<para>Vous pouvez soit faire avec, soit intervertir les cartes dans
|
|
les slots jusqu'à obtenir la valeur <filename class="devicefile">eth2
|
|
</filename>pour la nouvelle carte.</para>
|
|
</caution></para>
|
|
|
|
<para>Votre nouveau réseau ressemblera à la figure ci-dessous.<graphic
|
|
fileref="images/basics2.png" /></para>
|
|
|
|
<para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>
|
|
|
|
<para>La première chose à remarquer est que les ordinateurs sur votre
|
|
réseau sans-fil seront sur un sous-réseau différent de celui de votre
|
|
réseau local câblé LAN. Dans l'exemple, nous avons choisi de lui attribuer
|
|
le réseau 10.10.11.0/24. Les ordinateurs Computer 3 et Computer 4 seront
|
|
configurés avec une passerelle par défaut dont l'adresse IP sera
|
|
10.10.11.254.</para>
|
|
|
|
<para>Ensuite, nous avons choisi d'inclure le réseau sans-fil à la zone
|
|
local. Puisque Shorewall autorise le trafic intra-zone par défaut, le
|
|
trafic pourra circuler librement entre le réseau local câblé et le réseau
|
|
sans-fil.</para>
|
|
|
|
<para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>
|
|
|
|
<para>Il n'y a que deux changements à effectuer à la configuration de
|
|
Shorewall:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Une entrée doit être ajouté au fichier d'interfaces
|
|
<filename>/etc/shorewall/interfaces</filename> pour l'interface du
|
|
réseau sans-fil. Si l'interface du réseau sans-fil est <filename
|
|
class="devicefile">wlan0</filename>, l'entrée correspondante devrait
|
|
ressembler à:</para>
|
|
|
|
<programlisting>#ZONE INTERFACE BROADCAST OPTIONS
|
|
loc wlan0 detect maclist</programlisting>
|
|
|
|
<para>Comme montré dans l'entrée ci-dessus, je recommande d'utiliser
|
|
l'<ulink url="MAC_Validation.html">option maclist</ulink> pour le
|
|
segment sans-fil. En ajoutant les entrées pour les ordinateurs
|
|
Computer 3 et Computer 4 dans le fichier
|
|
<filename>/etc/shorewall/maclist</filename>, vous contribuez à vous
|
|
assurer que vos voisins n'utiliseront pas votre connexion internet.
|
|
Commencez sans cette option. Lorsque tout fonctionne, ajoutez l'option
|
|
et configurez votre fichier
|
|
<filename>/etc/shorewall/maclist</filename>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Vous devez ajouter une entrée au fichier
|
|
<filename>/etc/shorewall/masq</filename> afin de permettre le trafic
|
|
de votre réseau sans-fil vers internet. Si votre interface internet
|
|
est <filename class="devicefile">eth0</filename> et votre interface
|
|
sans-fil est <filename class="devicefile">wlan0</filename>, l'entrée
|
|
sera:</para>
|
|
|
|
<programlisting>#INTERFACE SUBNET ADDRESS
|
|
eth0 wlan0</programlisting>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Autre chose. Pour que le réseau <trademark>Microsoft</trademark>
|
|
fonctionne entre réseau filaire et sans-fil, vous avez besoin d'un serveur
|
|
WINS ou bien d'un PDC. Personnellement, j'utilise Samba configuré en
|
|
serveur WINS sur mon firewall. Utiliser un serveur WINS sur le firewall
|
|
nécessite de configurer les régles nécessaires listées dans le <ulink
|
|
url="samba.htm">document Shorewall/Samba</ulink>.</para>
|
|
</section>
|
|
</article>
|