mirror of
https://gitlab.com/shorewall/code.git
synced 2024-12-22 14:20:40 +01:00
2652 lines
113 KiB
XML
2652 lines
113 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">
|
|
<article id="shorewall_setup_guide_fr" lang="fr">
|
|
<!--$Id$-->
|
|
|
|
<articleinfo>
|
|
<title>Guide de configuration Shorewall</title>
|
|
|
|
<subtitle>Version Française de <foreignphrase lang="en"><ulink
|
|
url="http://www.shorewall.net/shorewall_setup_guide.html">Shorewall Setup
|
|
Guide</ulink></foreignphrase></subtitle>
|
|
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Tom</firstname>
|
|
|
|
<surname>Eastep</surname>
|
|
</author>
|
|
|
|
<othercredit role="translator">
|
|
<firstname>Fabien</firstname>
|
|
|
|
<surname>Demassieux</surname>
|
|
|
|
<contrib>Traduction Française initiale</contrib>
|
|
</othercredit>
|
|
|
|
<othercredit role="translator">
|
|
<firstname>Guy</firstname>
|
|
|
|
<surname>Marcenac</surname>
|
|
|
|
<contrib>Adaptation française version 3.0</contrib>
|
|
</othercredit>
|
|
</authorgroup>
|
|
|
|
<pubdate><?dbtimestamp format="Y/m/d"?></pubdate>
|
|
|
|
<copyright>
|
|
<year>2002-2006</year>
|
|
|
|
<holder>Thomas M. Eastep</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://cesarx.free.fr/gfdlf.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
|
|
traduction initiale a été réalisé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 <ulink
|
|
url="mailto:guy@posteurs.com">me contacter</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 id="Introduction">
|
|
<title>Introduction</title>
|
|
|
|
<para>Ce guide est destiné aux utilisateurs qui configurent Shorewall dans
|
|
un environnement où un ensemble d'adresses IP publiques doit être pris en
|
|
compte ainsi qu'à ceux qui souhaitent en savoir plus à propos de Shorewall
|
|
que ce que contiennent le guides pour une utilisation avec une <ulink
|
|
url="shorewall_quickstart_guide.htm">adresse IP unique</ulink>. Le champs
|
|
d'application étant très large, ce guide vous donnera des indications
|
|
générales à suivre et vous indiquera d'autres ressources si
|
|
nécessaire.</para>
|
|
|
|
<caution>
|
|
<para>Shorewall a besoin que le paquetage
|
|
<command><command>iproute</command></command>/<command><command>iproute2</command></command>
|
|
soit installé (avec la distribution <trademark>RedHat</trademark>, le
|
|
paquetage s'appelle <command><command>iproute</command></command>). Vous
|
|
pouvez contrôler que le paquetage est installé en vérifiant 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>which</command> pour
|
|
cela:</para>
|
|
|
|
<programlisting>[root@gateway root]# <command>which ip</command>
|
|
/sbin/ip
|
|
[root@gateway root]#</programlisting>
|
|
|
|
<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>
|
|
|
|
<para>Les points où des modifications s'imposent sont indiqués par
|
|
<inlinegraphic fileref="images/BD21298_.gif" format="GIF" />.</para>
|
|
</caution>
|
|
|
|
<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.</para>
|
|
|
|
<simplelist>
|
|
<member><ulink url="http://www.simtel.net/pub/pd/51438.html">Version
|
|
Windows de dos2unix</ulink></member>
|
|
|
|
<member><ulink
|
|
url="http://www.megaloman.com/~hany/software/hd2u/">Version Linux de
|
|
dos2unix</ulink></member>
|
|
</simplelist>
|
|
</caution>
|
|
</section>
|
|
|
|
<section id="Concepts">
|
|
<title>Les Concepts de Shorewall</title>
|
|
|
|
<para><inlinegraphic fileref="images/BD21298_.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'aurez à
|
|
faire qu'avec quelques-uns d'entre eux comme décrit dans ce guide. Des
|
|
squelettes de fichiers sont créés durant <ulink url="Install_fr.html">la
|
|
procédure d'installation de Shorewall</ulink>.</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>
|
|
|
|
<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 ce guide nous utiliserons les zones
|
|
suivantes:</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>fw</term>
|
|
|
|
<listitem>
|
|
<para>Le firewall lui-même.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>net</term>
|
|
|
|
<listitem>
|
|
<para>L'internet public.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>loc</term>
|
|
|
|
<listitem>
|
|
<para>Un réseau local privé utilisant des adresses IP
|
|
privées.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>dmz</term>
|
|
|
|
<listitem>
|
|
<para>Une zone démilitarisée (<acronym>DMZ</acronym>) contenant les
|
|
serveurs publiquement accessibles.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<para>Les Zones sont définies dans le fichier <filename><ulink
|
|
url="Documentation.htm#Zones"><filename>/etc/shorewall/zones</filename></ulink></filename>.</para>
|
|
|
|
<important>
|
|
<para>Le fichier <filename>/etc/shorewall/zones</filename> fourni avec
|
|
la distribution est vide. Vous pouvez créer l'ensemble de zones standard
|
|
décrites au-dessus en copiant puis en collant ce qui suit dans le
|
|
fichier:</para>
|
|
|
|
<programlisting>#ZONE TYPE OPTIONS
|
|
fw firewall
|
|
net ipv4
|
|
loc ipv4
|
|
dmz ipv4</programlisting>
|
|
</important>
|
|
|
|
<para>Remarquez que Shorewall reconnaît aussi le système firewall comme sa
|
|
propre zone - l'exemple ci-dessus suit la convention qui veut que la zone
|
|
firewall soit nommée <emphasis role="bold">fw</emphasis>. Le nom de la
|
|
zone firewall (<emphasis role="bold">fw</emphasis> dans l'exemple plus
|
|
haut) est stocké dans la variable d'environnement <emphasis>$FW</emphasis>
|
|
lorsque le fichier <filename>/etc/shorewall/zones</filename> est traité. A
|
|
l'exception du nom attribué à la zone firewall, Shorewall n'attache aucune
|
|
signification aux noms de zone. Le zones sont entièrement ce que VOUS en
|
|
faites. Ceci signifie que vous ne devriez pas attendre de Shorewall qu'il
|
|
fasse quoi que ce soit de spécial <quote>car il s'agit de la zone
|
|
internet</quote> ou <quote>car ceci est la
|
|
<acronym>DMZ</acronym></quote>.</para>
|
|
|
|
<para><inlinegraphic fileref="images/BD21298_.gif" /></para>
|
|
|
|
<para>Éditez le fichier <filename>/etc/shorewall/zones</filename> et
|
|
faites-y les changements nécessaires.</para>
|
|
|
|
<para>Les règles qui concernent le trafic à autoriser ou à refuser sous
|
|
exprimées en termes de Zones.</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Vous exprimez les politiques par défaut entre une zone et une
|
|
autre zone dans le fichier <filename><ulink
|
|
url="Documentation.htm#Policy">/etc/shorewall/policy</ulink></filename>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Vous définissez les exceptions à ces politiques par défaut dans
|
|
le fichier <filename><ulink
|
|
url="Documentation.htm#Rules">/etc/shorewall/rules</ulink></filename>.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Shorewall est construit sur les mécanismes de <ulink
|
|
url="http://www.netfilter.org">Netfilter</ulink>, service de filtrage du
|
|
noyau (kernel). Netfilter fournit une <ulink
|
|
url="http://www.cs.princeton.edu/~jns/security/iptables/iptables_conntrack.html">fonction
|
|
de suivi de connexion</ulink> qui permet une analyse d'état des paquets
|
|
(stateful inspection). Cette propriété permet aux règles du firewall
|
|
d'être définies en termes de connexions plutôt qu'en termes de paquets.
|
|
Avec Shorewall, vous:</para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>Identifiez la zone source (client).</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Identifiez la zone destination (serveur).</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Si la politique depuis la zone du client vers la zone du serveur
|
|
est ce que vous souhaitez pour cette paire client/serveur, vous n'avez
|
|
rien de plus à faire.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Si la politique n'est pas ce que vous souhaitez, alors vous
|
|
devez ajouter une règle. Cette règle est exprimée en termes de zone
|
|
client et de zone serveur.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
|
|
<para><emphasis role="bold">Autoriser les connexions d'un certain type
|
|
depuis la zone A vers le firewall et depuis firewall vers la zone B
|
|
<emphasis role="bold">NE SIGNIFIE PAS que ces connections sont autorisés
|
|
de la zone A à la zone B</emphasis></emphasis> (autrement dit, les
|
|
connexions impliquant la zone firewall ne sont pas transitives).</para>
|
|
|
|
<para>Pour chaque connexion demandant à entrer dans le firewall, la
|
|
requête est en premier lieu vérifiée par rapport au 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 par défaut</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 l'action spécifiée dans
|
|
<filename>/etc/shorewall/rules</filename> ne soit appliquée.</para>
|
|
|
|
<para>Avant Shorewall 2.2.0, le fichier
|
|
<filename>/etc/shorewall/policy</filename> avait les politiques
|
|
suivantes:</para>
|
|
|
|
<programlisting>#SOURCE ZONE DESTINATION ZONE POLICY LOG LIMIT:BURST
|
|
# LEVEL
|
|
fw net ACCEPT
|
|
net all DROP info
|
|
all all REJECT info</programlisting>
|
|
|
|
<important>
|
|
<para>Le fichier de politiques distribué actuellement est vide. Vous
|
|
pouvez y copier et coller les entrées présentées ci-dessus comme point
|
|
de départ, puis l'adapter à vos propres politiques.</para>
|
|
</important>
|
|
|
|
<para>Les politiques précédentes vont:</para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>Autoriser (ACCEPT) toutes les connexions de votre réseau local
|
|
vers internet</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Ignorer (DROP) toutes les tentatives de connexions d'internet
|
|
vers le firewall ou vers votre réseau local et enregistrer dans vos
|
|
journaux (log) un message au niveau info (<ulink
|
|
url="shorewall_logging.html">vous trouverez ici la description des
|
|
niveaux de journalisation</ulink>).</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Rejeter (REJECT) toutes les autres demandes de connexion et
|
|
générer un message de niveau info dans votre journal. Quant la requête
|
|
est rejetée et que le protocole est TCP, le firewall retourne un
|
|
paquet RST. Pour tous les autres protocoles, quand une requête est
|
|
rejetée, le firewall renvoie un paquet ICMP port-unreachable.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
|
|
<para><inlinegraphic fileref="images/BD21298_.gif" /></para>
|
|
|
|
<para>Maintenant, éditez votre <filename>/etc/shorewall/policy
|
|
</filename>et apportez-y tous les changements que vous souhaitez.</para>
|
|
</section>
|
|
|
|
<section id="Interfaces">
|
|
<title>Interfaces Réseau</title>
|
|
|
|
<para>Dans la suite du guide, nous nous référerons au schéma ci-dessous.
|
|
Bien qu'il puisse ne pas correspondre à votre propre réseau, il peut être
|
|
utilisé pour illustrer les aspects importants de la configuration de
|
|
Shorewall.</para>
|
|
|
|
<para>Sur ce schéma:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>La zone <acronym>DMZ</acronym> est composée des systèmes DMZ 1
|
|
et DMZ 2. On utilise une <acronym>DMZ</acronym> pour isoler ses
|
|
serveurs accessibles depuis internet de ses systèmes locaux. Ainsi si
|
|
un des serveurs de la <acronym>DMZ</acronym> est compromis, vous avez
|
|
encore un firewall entre le système compromis et vos systèmes
|
|
locaux.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>La zone <quote>local</quote> est composée des systèmes Local 1,
|
|
Local 2 et Local 3.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Tous les systèmes à l'extérieur du firewall, y compris ceux de
|
|
votre FAI, sont dans la zone internet.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<graphic align="center" fileref="images/dmz3.png" />
|
|
|
|
<para>La façon la plus simple pour définir les zones est d'associer le nom
|
|
de la zone (définie précédemment dans
|
|
<filename>/etc/shorewall/zones</filename>) à une interface réseau. Ceci
|
|
est fait dans le fichier <ulink
|
|
url="Documentation.htm#Interfaces">/etc/shorewall/interfaces</ulink>.</para>
|
|
|
|
<para>Le firewall illustré ci-dessus à trois interfaces réseau. Lorsque la
|
|
connexion internet passe par un <quote>modem</quote> câble
|
|
ou<acronym><acronym> ADSL
|
|
</acronym></acronym><emphasis><emphasis>l'Interface
|
|
Externe</emphasis></emphasis> sera l'adaptateur ethernet 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" /></para>
|
|
|
|
<para><emphasis role="bold">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></emphasis>.</para>
|
|
|
|
<para>Votre <emphasis>Interface locale</emphasis> sera un adaptateur
|
|
ethernet (<filename class="devicefile"><filename
|
|
class="devicefile">eth0</filename></filename>, <filename
|
|
class="devicefile"><filename class="devicefile">eth1</filename></filename>
|
|
or <filename class="devicefile"><filename
|
|
class="devicefile">eth2</filename></filename>) et sera connectée à un hub
|
|
ou à un switch. Vos ordinateurs locaux seront connectés à ce même hub ou
|
|
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 <acronym>DMZ</acronym></emphasis> sera
|
|
aussi un adaptateur ethernet (<filename class="devicefile"><filename
|
|
class="devicefile">eth0</filename></filename>, <filename
|
|
class="devicefile"><filename class="devicefile">eth1</filename></filename>
|
|
or <filename class="devicefile"><filename
|
|
class="devicefile">eth2</filename></filename>) et sera connecté à un hub
|
|
ou un à switch. Vos ordinateurs appartenant à la DMZ seront connectés à ce
|
|
même hub ou switch (note : si vous n'avez qu'un seul ordinateur dans la
|
|
<acronym>DMZ</acronym>, vous pouvez le connecter directement au firewall
|
|
par un câble croisé).</para>
|
|
|
|
<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>
|
|
|
|
<para>Dans la suite, nous supposerons que:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>L'interface externe est <filename class="devicefile"><filename
|
|
class="devicefile">eth0</filename></filename>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>L'interface locale est <filename class="devicefile"><filename
|
|
class="devicefile">eth1</filename></filename>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>L'interface <acronym>DMZ</acronym> est <filename
|
|
class="devicefile"><filename
|
|
class="devicefile">eth2</filename></filename>.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>La configuration par défaut de Shorewall ne définit le contenu
|
|
d'aucune zone. Pour définir la configuration présentée plus haut, le
|
|
fichier <ulink
|
|
url="Documentation.htm#Interfaces">/etc/shorewall/interfaces</ulink> doit
|
|
contenir:</para>
|
|
|
|
<programlisting>#ZONE INTERFACE BROADCAST OPTIONS
|
|
net eth0 detect rfc1918
|
|
loc eth1 detect
|
|
dmz eth2 detect</programlisting>
|
|
|
|
<para>Remarquez que la zone $FW n'a aucune entrée dans le fichier
|
|
<filename>/etc/shorewall/interfaces.</filename></para>
|
|
|
|
<para><inlinegraphic fileref="images/BD21298_.gif" /></para>
|
|
|
|
<para>Éditez le fichier <filename>/etc/shorewall/interfaces.</filename>
|
|
Définissez les interfaces du réseau de votre firewall et associez chacune
|
|
d'entre elles à une zone. Si vous avez une zone qui est connectée par plus
|
|
d'une interface, incluez simplement une entrée pour chaque interface et
|
|
répétez le nom de zone autant de fois que nécessaire.</para>
|
|
|
|
<example>
|
|
<title>Interfaces Multiples associées une Zone</title>
|
|
|
|
<programlisting>#ZONE INTERFACE BROADCAST OPTIONS
|
|
net eth0 detect rfc1918
|
|
loc eth1 detect
|
|
loc eth2 detect</programlisting>
|
|
</example>
|
|
|
|
<para><inlinegraphic fileref="images/BD21298_.gif" /></para>
|
|
|
|
<para>Vous pouvez définir des zones plus compliquées en utilisant le
|
|
fichier<filename> <ulink
|
|
url="Documentation.htm#Hosts">/etc/shorewall/hosts</ulink></filename> mais
|
|
dans la plus part des cas, cela ne sera pas nécessaire. Vous trouverez des
|
|
exemples dans <ulink
|
|
url="Shorewall_and_Aliased_Interfaces.html">Shorewall_and_Aliased_Interfaces.html</ulink>
|
|
et <ulink url="Multiple_Zones.html">Multiple_Zones.html</ulink>.</para>
|
|
</section>
|
|
|
|
<section id="Addressing">
|
|
<title>Adressage, Sous-réseaux et Routage</title>
|
|
|
|
<para>Normalement, votre <acronym>FAI</acronym> vous attribue un ensemble
|
|
d'adresses IP publiques. Vous utiliserez une de ces adresses pour
|
|
configurer l'interface externe de votre firewall. Vous déciderez ensuite
|
|
comment utiliser le reste de vos adresses. Avant d'aborder ce point, il
|
|
nous faut rappeler le contexte.</para>
|
|
|
|
<para>Si vous êtes déjà familier de l'adressage IP et du routage, vous
|
|
pouvez directement aller à la prochaine section.</para>
|
|
|
|
<para>La présentation qui suit ne fait que d'effleurer les questions de
|
|
l'adressage et du routage. Si vous vous voulez en apprendre plus sur
|
|
l'adressage <acronym>IP</acronym> et le routage, je vous 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}">lien</ulink>).</para>
|
|
|
|
<section id="Addresses">
|
|
<title>Adressage IP</title>
|
|
|
|
<para>Les adresses IP version 4 (IPv4) sont codées sur 32 bits. La
|
|
notation w.x.y.z fait référence à une adresse dont l'octet de poids fort
|
|
a pour valeur <quote>w</quote>, le suivant a pour valeur
|
|
<quote>x</quote>, etc. Si nous prenons l'adresse 192.0.2.14 et que nous
|
|
l'exprimons en hexadécimal, nous obtenons</para>
|
|
|
|
<para><programlisting>C0.00.02.0E</programlisting>et si nous la
|
|
regardons comme un entier de 32 bits nous avons</para>
|
|
|
|
<para><programlisting>C000020E</programlisting></para>
|
|
</section>
|
|
|
|
<section id="Subnets">
|
|
<title>Sous-réseaux</title>
|
|
|
|
<para>Vous entendrez encore aujourd'hui les termes de <quote>Réseau de
|
|
classe A</quote>, <quote>Réseau de classe B</quote> et <quote>Réseau de
|
|
classe C</quote>. Au début de l'existence de l'IP, les réseaux ne
|
|
pouvaient avoir que trois tailles (il y avait aussi les réseaux de
|
|
classe D mais il étaient utilisés différemment):</para>
|
|
|
|
<simplelist>
|
|
<member>Classe A - masque de sous-réseau 255.0.0.0, taille = 2 **
|
|
24</member>
|
|
|
|
<member>Classe B - masque de sous-réseau 255.255.0.0, taille = 2 **
|
|
16</member>
|
|
|
|
<member>Classe C - masque de sous-réseau 255.255.255.0, taille =
|
|
256</member>
|
|
</simplelist>
|
|
|
|
<para>La classe d'un réseau était déterminée de façon unique par la
|
|
valeur de l'octet de poids fort de son adresse, ainsi en regardant une
|
|
adresse IP on pouvait déterminer immédiatement la valeur du masque
|
|
réseau. Le masque réseau est un nombre qui combiné à une adresse par un
|
|
ET logique, isole l'adresse du réseau auquel cette adresse appartient.
|
|
Le reste de l'adresse est le <emphasis>numéro d'hôte</emphasis>. Par
|
|
exemple, dans l'adresse de classe C 192.0.2.14, la valeur hexadécimale
|
|
de l'adresse du réseau est C00002 et le numéro d'hôte est 0E.</para>
|
|
|
|
<para>Comme internet se développait, il devint clair qu'un
|
|
partitionnement aussi grossier de l'espace d'adresses de 32 bits allait
|
|
être très limitatif (rapidement, les grandes sociétés et les universités
|
|
s'étaient déjà attribuées leur propre réseau de classe A !). Après
|
|
quelques faux départs, la technique courante du sous-adressage de ces
|
|
réseaux en plus petits sous-réseaux évolua. On fait référence à cette
|
|
technique sous l'appellation de Routage Inter-Domaine Sans Classe ou
|
|
<emphasis>Classless InterDomain Routing</emphasis>
|
|
(<acronym>CIDR</acronym>). Aujourd'hui, les systèmes avec lesquels vous
|
|
travaillez sont probablement compatibles avec la notation CIDR. La
|
|
gestion des réseaux basée sur les Classes est du domaine du
|
|
passé.</para>
|
|
|
|
<para>Un <emphasis>sous-réseau</emphasis> (<emphasis>subnet</emphasis>
|
|
ou <emphasis>subnetwork</emphasis>) est un ensemble contigu d'adresses
|
|
IP tel que:</para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>Le nombre d'adresses dans le jeu est un multiple de 2.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>La première adresse dans le jeu est un multiple de la taille
|
|
du jeu.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>La première adresse du sous-réseau est réservée et on s'y
|
|
réfère comme étant <emphasis>l'adresse du
|
|
sous-réseau</emphasis>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>La dernière adresse du sous-réseau est réservée comme
|
|
<emphasis>adresse de diffusion (broadcast) du
|
|
sous-réseau</emphasis>.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
|
|
<para>Comme vous pouvez le constater par cette définition, dans chaque
|
|
sous-réseau de taille n il y a (n - 2) adresses utilisables (adresses
|
|
qui peuvent être attribuées à un hôte). La première et la dernière
|
|
adresse du sous-réseau sont utilisées respectivement pour identifier
|
|
l'adresse du sous-réseau et l'adresse de diffusion du sous-réseau. En
|
|
conséquence, de petits sous-réseaux sont plus gourmands en adresses IP
|
|
que des sous-réseaux plus étendus.</para>
|
|
|
|
<para>Comme n est une puissance de deux, nous pouvons aisément calculer
|
|
le <emphasis>Logarithme à base 2 de n </emphasis>(log2). La taille et le
|
|
logarithme à base 2 pour les tailles de sous-réseau les plus communes
|
|
sont donnés par la table suivante:</para>
|
|
|
|
<table>
|
|
<title>Logarithmes base 2</title>
|
|
|
|
<tgroup cols="3">
|
|
<tbody>
|
|
<row>
|
|
<entry><emphasis role="bold">n</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">log2 n</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">(32 - log2 n)</emphasis></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>8</entry>
|
|
|
|
<entry>3</entry>
|
|
|
|
<entry>29</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>16</entry>
|
|
|
|
<entry>4</entry>
|
|
|
|
<entry>28</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>32</entry>
|
|
|
|
<entry>5</entry>
|
|
|
|
<entry>27</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>64</entry>
|
|
|
|
<entry>6</entry>
|
|
|
|
<entry>26</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>128</entry>
|
|
|
|
<entry>7</entry>
|
|
|
|
<entry>25</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>256</entry>
|
|
|
|
<entry>8</entry>
|
|
|
|
<entry>24</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>512</entry>
|
|
|
|
<entry>9</entry>
|
|
|
|
<entry>23</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>1024</entry>
|
|
|
|
<entry>10</entry>
|
|
|
|
<entry>22</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>2048</entry>
|
|
|
|
<entry>11</entry>
|
|
|
|
<entry>21</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>4096</entry>
|
|
|
|
<entry>12</entry>
|
|
|
|
<entry>20</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>8192</entry>
|
|
|
|
<entry>13</entry>
|
|
|
|
<entry>19</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>16384</entry>
|
|
|
|
<entry>14</entry>
|
|
|
|
<entry>18</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>32768</entry>
|
|
|
|
<entry>15</entry>
|
|
|
|
<entry>17</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>65536</entry>
|
|
|
|
<entry>16</entry>
|
|
|
|
<entry>16</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>Vous constaterez que la table ci-dessus contient aussi une colonne
|
|
(32 - log2<emphasis role="bold"> n</emphasis>). Ce nombre est le
|
|
<emphasis>Masque de Sous-réseau à Longueur Variable</emphasis> ou
|
|
<emphasis>Variable Length Subnet Mask</emphasis>
|
|
(<acronym>VLSM</acronym>) pour un sous-réseau de taille n. De la table
|
|
ci-dessus, nous pouvons déduire la suivante, qui est plus facile à
|
|
utiliser.</para>
|
|
|
|
<table>
|
|
<title>VLSM</title>
|
|
|
|
<tgroup cols="3">
|
|
<tbody>
|
|
<row>
|
|
<entry><emphasis role="bold">Taille du
|
|
sous-réseau</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">VLSM</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">Masque de
|
|
sous-réseau</emphasis></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>8</entry>
|
|
|
|
<entry>/29</entry>
|
|
|
|
<entry>255.255.255.248</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>16</entry>
|
|
|
|
<entry>/28</entry>
|
|
|
|
<entry>255.255.255.240</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>32</entry>
|
|
|
|
<entry>/27</entry>
|
|
|
|
<entry>255.255.255.224</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>64</entry>
|
|
|
|
<entry>/26</entry>
|
|
|
|
<entry>255.255.255.192</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>128</entry>
|
|
|
|
<entry>/25</entry>
|
|
|
|
<entry>255.255.255.128</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>256</entry>
|
|
|
|
<entry>/24</entry>
|
|
|
|
<entry>255.255.255.0</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>512</entry>
|
|
|
|
<entry>/23</entry>
|
|
|
|
<entry>255.255.254.0</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>1024</entry>
|
|
|
|
<entry>/22</entry>
|
|
|
|
<entry>255.255.252.0</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>2048</entry>
|
|
|
|
<entry>/21</entry>
|
|
|
|
<entry>255.255.248.0</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>4096</entry>
|
|
|
|
<entry>/20</entry>
|
|
|
|
<entry>255.255.240.0</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>8192</entry>
|
|
|
|
<entry>/19</entry>
|
|
|
|
<entry>255.255.224.0</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>16384</entry>
|
|
|
|
<entry>/18</entry>
|
|
|
|
<entry>255.255.192.0</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>32768</entry>
|
|
|
|
<entry>/17</entry>
|
|
|
|
<entry>255.255.128.0</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>65536</entry>
|
|
|
|
<entry>/16</entry>
|
|
|
|
<entry>255.255.0.0</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>2 ** 24</entry>
|
|
|
|
<entry>/8</entry>
|
|
|
|
<entry>255.0.0.0</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>Notez que le <acronym>VLSM</acronym> est écrit avec un slash
|
|
(<quote>/</quote>) -- vous entendrez souvent nommer un réseau de taille
|
|
64 comme étant un <quote>slash 26</quote> et un de taille 8 comme étant
|
|
un <quote>slash 29</quote>.</para>
|
|
|
|
<para>Le masque de sous-réseau est simplement un nombre de 32 bits avec
|
|
les premiers bits correspondant au <acronym>VLSM</acronym> positionnés à
|
|
<quote>1</quote> et les bits suivants à <quote>0</quote>. Par exemple,
|
|
pour un sous-réseau de taille 64, le masque de sous-réseau débute par 26
|
|
bits à <quote>1</quote>:</para>
|
|
|
|
<para><programlisting>11111111111111111111111111000000 = FFFFFFC0 = FF.FF.FF.C0 = 255.255.255.192</programlisting>Le
|
|
masque de sous-réseau a la propriété suivante: si vous appliquez un ET
|
|
logique entre le masque de sous-réseau et une adresse dans le
|
|
sous-réseau, le résultat est l'adresse du sous-réseau. Tout aussi
|
|
important, si vous appliquer un ET logique entre le masque de
|
|
sous-réseau et une adresse en dehors du sous-réseau, le résultat n'est
|
|
PAS l'adresse du sous-réseau. Comme nous le verrons après, cette
|
|
propriété du masque de sous-réseau est très importante dans le
|
|
routage.</para>
|
|
|
|
<para>Pour un sous-réseau dont l'adresse est <emphasis
|
|
role="bold">a.b.c.d</emphasis> et dont le <acronym>VLSM</acronym> est
|
|
<emphasis role="bold">/v</emphasis>, nous notons le sous-réseau
|
|
<quote><emphasis role="bold">a.b.c.d/v</emphasis></quote> en utilisant
|
|
la <emphasis><emphasis>notation CIDR</emphasis></emphasis>.</para>
|
|
|
|
<table>
|
|
<title>Un exemple de sous-réseau :</title>
|
|
|
|
<tgroup cols="2">
|
|
<tbody>
|
|
<row>
|
|
<entry><emphasis role="bold">Sous-réseau:</emphasis></entry>
|
|
|
|
<entry>10.10.10.0 - 10.10.10.127</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><emphasis role="bold">Taille du
|
|
sous-réseau:</emphasis></entry>
|
|
|
|
<entry>128</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><emphasis role="bold">Adresse du
|
|
sous-réseau:</emphasis></entry>
|
|
|
|
<entry>10.10.10.0</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><emphasis role="bold">Adresse de
|
|
diffusion:</emphasis></entry>
|
|
|
|
<entry>10.10.10.127</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><emphasis role="bold">Notation CIDR:</emphasis></entry>
|
|
|
|
<entry>10.10.10.0/25</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>Il existe deux sous-réseaux dégénérés qui doivent être mentionnés:
|
|
le sous-réseau avec un seul membre et le sous-réseau avec 2 ** 32
|
|
membres.</para>
|
|
|
|
<table>
|
|
<title>/32 and /0</title>
|
|
|
|
<tgroup cols="4">
|
|
<tbody>
|
|
<row>
|
|
<entry><emphasis role="bold">Taille du
|
|
sous-réseau</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">Longueur VLSM</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">Masque de
|
|
sous-réseau</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">Notation CIDR</emphasis></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>1</entry>
|
|
|
|
<entry>32</entry>
|
|
|
|
<entry>255.255.255.255</entry>
|
|
|
|
<entry>a.b.c.d/32</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>32</entry>
|
|
|
|
<entry>0</entry>
|
|
|
|
<entry>0.0.0.0</entry>
|
|
|
|
<entry>0.0.0.0/0</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>Ainsi, chaque adresse <emphasis role="bold">a.b.c.d</emphasis>
|
|
peut aussi être écrite <emphasis role="bold">a.b.c.d/32</emphasis> et
|
|
l'ensemble des adresses possibles est écrit <emphasis
|
|
role="bold">0.0.0.0/0</emphasis>.</para>
|
|
|
|
<para>Un utilisateur de Shorewall a proposé cette très utile <ulink
|
|
url="http://shorewall.net/pub/shorewall/contrib/IPSubNetMask.html">représentation
|
|
graphique</ulink> de ces informations.</para>
|
|
|
|
<para>Dans la suite, nous utiliserons la notation <emphasis
|
|
role="bold">a.b.c.d/v</emphasis> pour décrire la configuration IP d'une
|
|
interface réseau (l'utilitaire <command>ip</command> utilise aussi cette
|
|
syntaxe). Dans cette notation l'interface est configurée avec une
|
|
adresse ip <emphasis role="bold">a.b.c.d</emphasis> avec le masque de
|
|
sous-réseau qui correspond au VLSM /<emphasis
|
|
role="bold">v</emphasis>.</para>
|
|
|
|
<example>
|
|
<title>192.0.2.65/29</title>
|
|
|
|
<para>L'interface est configurée avec l'adresse IP 192.0.2.65 et le
|
|
masque de sous-réseau 255.255.255.248.</para>
|
|
</example>
|
|
|
|
<para>/sbin/shorewall propose une commande <command>ipcalc</command> qui
|
|
calcule automatiquement les informations d'un [sous-]réseau.</para>
|
|
|
|
<example>
|
|
<title>Utiliser la commande
|
|
<command><command>ipcalc</command></command>.</title>
|
|
|
|
<programlisting>shorewall ipcalc 10.10.10.0/25
|
|
CIDR=10.10.10.0/25
|
|
NETMASK=255.255.255.128
|
|
NETWORK=10.10.10.0
|
|
BROADCAST=10.10.10.127</programlisting>
|
|
</example>
|
|
|
|
<example>
|
|
<title>Utiliser la commande
|
|
<command><command>ipcalc</command></command>.</title>
|
|
|
|
<programlisting>shorewall ipcalc 10.10.10.0 255.255.255.128
|
|
CIDR=10.10.10.0/25
|
|
NETMASK=255.255.255.128
|
|
NETWORK=10.10.10.0
|
|
BROADCAST=10.10.10.127</programlisting>
|
|
</example>
|
|
</section>
|
|
|
|
<section id="Routing">
|
|
<title>Routage</title>
|
|
|
|
<para>L'un des objectifs de la gestion en sous-réseaux est qu'elle pose
|
|
les bases pour le routage. Ci-dessous se trouve la table de routage de
|
|
mon firewall:</para>
|
|
|
|
<programlisting>[root@gateway root]# netstat -nr
|
|
Kernel IP routing table
|
|
Destination Gateway Genmask Flgs MSS Win irtt Iface
|
|
192.168.9.1 0.0.0.0 255.255.255.255 UH 40 0 0 texas
|
|
206.124.146.177 0.0.0.0 255.255.255.255 UH 40 0 0 eth1
|
|
206.124.146.180 0.0.0.0 255.255.255.255 UH 40 0 0 eth3
|
|
192.168.3.0 0.0.0.0 255.255.255.0 U 40 0 0 eth3
|
|
192.168.2.0 0.0.0.0 255.255.255.0 U 40 0 0 eth1
|
|
192.168.1.0 0.0.0.0 255.255.255.0 U 40 0 0 eth2
|
|
206.124.146.0 0.0.0.0 255.255.255.0 U 40 0 0 eth0
|
|
192.168.9.0 192.0.2.223 255.255.255.0 UG 40 0 0 texas
|
|
127.0.0.0 0.0.0.0 255.0.0.0 U 40 0 0 lo
|
|
0.0.0.0 206.124.146.254 0.0.0.0 UG 40 0 0 eth0
|
|
[root@gateway root]#</programlisting>
|
|
|
|
<para>L'interface <emphasis>texas</emphasis> est un tunnel GRE vers un
|
|
site pair à Dallas, au Texas.</para>
|
|
|
|
<para>Les trois premières routes sont des routes vers des hôtes
|
|
(<emphasis>host routes)</emphasis> puisqu'elles indiquent comment aller
|
|
vers un hôte unique. Dans la sortie de <command>netstat</command>, cela
|
|
se voit très bien au masque de sous-réseau (Genmask) à 255.255.255.255,
|
|
ou bien au drapeau à <quote>H</quote> dans la colonne
|
|
<quote>Flags</quote> . Les autres routes sont des routes réseau car
|
|
elles indiquent au noyau comment router des paquets à un sous-réseau. La
|
|
dernière route est <emphasis>la route par défaut</emphasis>. La
|
|
passerelle mentionnée dans cette route est appelée <emphasis>la
|
|
passerelle par défaut (default gateway).</emphasis></para>
|
|
|
|
<para>Quant le noyau essaye d'envoyer un paquet à une adresse IP
|
|
<emphasis role="bold">A</emphasis>, il commence au début de la table de
|
|
routage et:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><emphasis role=""><emphasis>Il réalise un ET logique entre
|
|
A</emphasis></emphasis> et la valeur du masque de sou-réseau pour
|
|
cette entrée de la table.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Ce résultat est comparé avec la valeur de la
|
|
<quote>Destination</quote> dans cette entrée de la table.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Si le résultat et la valeur de la <quote>Destination</quote>
|
|
sont identiques, alors:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Si la colonne <quote>Gateway</quote> n'est pas nulle, le
|
|
paquet est envoyé à la passerelle par l'interface nommée dans la
|
|
colonne <quote>Iface</quote>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Sinon, le paquet est directement envoyé à <emphasis
|
|
role="bold">A</emphasis> à travers l'interface nommée dans la
|
|
colonne <quote>iface</quote>.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Sinon, les étapes précédentes sont répétées sur l'entrée
|
|
suivante de la table.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Puisque la route par défaut correspond à toutes les adresses IP
|
|
(<emphasis role="bold">A </emphasis>ET 0.0.0.0 = 0.0.0.0), les paquets
|
|
qui ne correspondent à aucune des autres entrées de la table de routage
|
|
sont envoyés à la passerelle par défaut qui est généralement un routeur
|
|
de votre <acronym>FAI</acronym>.</para>
|
|
|
|
<para>Prenons un exemple. Supposons que vous souhaitiez router un paquet
|
|
à 192.168.1.5. Cette adresse ne correspond à aucune route d'hôte dans la
|
|
table mais lorsque nous faisons le ET logique de cette adresse avec
|
|
255.255.255.0, le résultat est 192.168.1.0 qui correspond à cette entrée
|
|
de la table:</para>
|
|
|
|
<para><programlisting>192.168.1.0 0.0.0.0 255.255.255.0 U 40 0 0 eth2</programlisting></para>
|
|
|
|
<para>Donc, pour router ce paquet à 192.168.1.5, il faudra le
|
|
transmettre directement à l'interface eth2.</para>
|
|
|
|
<para>Un point important doit être souligné -- tous les paquets sont
|
|
envoyés en utilisant la table de routage et les paquets en réponse ne
|
|
sont pas un cas particulier. Il semble exister une idée fausse comme
|
|
quoi les paquets réponses seraient comme les saumons et contiendraient
|
|
une sorte de code génétique qui leur permettrait suivre la même route
|
|
empruntée par les paquets de requête (request) à l'aller. Ce n'est pas
|
|
le cas. Les réponses peuvent prendre un chemin totalement différent de
|
|
celui pris par les paquets de la requête client à l'aller -- Ces routes
|
|
sont totalement indépendantes.</para>
|
|
</section>
|
|
|
|
<section>
|
|
<title id="ARP">Protocole de Résolution d'Adresse (ARP)</title>
|
|
|
|
<para>Quant on envoie des paquets sur ethernet, les adresses IP ne sont
|
|
pas utilisées. L'adressage ethernet est basé sur les adresses
|
|
<acronym>MAC</acronym> (<emphasis>Media Access Control)</emphasis>.
|
|
Chaque carte ethernet à sa propre adresse <acronym>MAC</acronym> unique
|
|
qui est gravée dans une <acronym>PROM</acronym> lors de sa fabrication.
|
|
Vous pouvez obtenir l'adresse <acronym>MAC</acronym> d'une carte
|
|
ethernet grâce à l'utilitaire
|
|
<quote><command>ip</command></quote>:</para>
|
|
|
|
<programlisting>[root@gateway root]# <command>ip addr show eth0</command>
|
|
2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc htb qlen 100
|
|
link/ether 02:00:08:e3:fa:55 brd ff:ff:ff:ff:ff:ff
|
|
inet 206.124.146.176/24 brd 206.124.146.255 scope global eth0
|
|
inet 206.124.146.178/24 brd 206.124.146.255 scope global secondary eth0
|
|
inet 206.124.146.179/24 brd 206.124.146.255 scope global secondary eth0
|
|
[root@gateway root]#
|
|
</programlisting>
|
|
|
|
<para>Comme vous pouvez le constater, l'adresse <acronym>MAC</acronym>
|
|
est codée sur 6 octets (48 bits). L'adresse <acronym>MAC</acronym> est
|
|
généralement imprimée sur la carte elle-même.</para>
|
|
|
|
<para>Comme IP utilise les adresses IP et ethernet les adresses MAC, il
|
|
faut un mécanisme pour transcrire une adresse IP en adresse MAC. C'est
|
|
ce dont est chargé le protocole de résolution d'adresse
|
|
(<emphasis>Address Resolution Protocol
|
|
</emphasis><acronym>ARP</acronym>). Voici <acronym>ARP</acronym> en
|
|
action:</para>
|
|
|
|
<programlisting>[root@gateway root]# <command>tcpdump -nei eth2 arp</command>
|
|
tcpdump: listening on eth2
|
|
09:56:49.766757 2:0:8:e3:4c:48 0:6:25:aa:8a:f0 arp 42:
|
|
arp who-has 192.168.1.19 tell 192.168.1.254
|
|
09:56:49.769372 0:6:25:aa:8a:f0 2:0:8:e3:4c:48 arp 60:
|
|
arp reply 192.168.1.19 is-at 0:6:25:aa:8a:f0
|
|
|
|
2 packets received by filter
|
|
0 packets dropped by kernel
|
|
[root@gateway root]#</programlisting>
|
|
|
|
<para>Dans cet échange , 192.168.1.254 (MAC 2:0:8:e3:4c:48) veut
|
|
connaître l'adresse MAC du périphérique qui a l'adresse IP 192.168.1.19.
|
|
Le système ayant cette adresse IP répond que l'adresse MAC du
|
|
périphérique avec l'adresse IP 192.168.1.19 est 0:6:25:aa:8a:f0.</para>
|
|
|
|
<para>Afin de ne pas avoir à échanger des information
|
|
<acronym>ARP</acronym> chaque fois qu'un paquet doit être envoyé, le
|
|
système maintient un cache des correspondances IP<-> MAC. Vous
|
|
pouvez voir le contenu du cache <acronym>ARP</acronym> sur votre système
|
|
(y compris sur les systèmes <trademark>Windows</trademark>) en utilisant
|
|
la commande <command>arp</command></para>
|
|
|
|
<programlisting>[root@gateway root]# <command>arp -na</command>
|
|
? (206.124.146.177) at 00:A0:C9:15:39:78 [ether] on eth1
|
|
? (192.168.1.3) at 00:A0:CC:63:66:89 [ether] on eth2
|
|
? (192.168.1.5) at 00:A0:CC:DB:31:C4 [ether] on eth2
|
|
? (206.124.146.254) at 00:03:6C:8A:18:38 [ether] on eth0
|
|
? (192.168.1.19) at 00:06:25:AA:8A:F0 [ether] on eth2</programlisting>
|
|
|
|
<para>Les points d'interrogation au début des lignes sont le résultat de
|
|
l'utilisation de l'option <quote>n</quote> qui empêche le programme
|
|
<command>arp</command> de résoudre le noms <acronym>DNS</acronym> pour
|
|
les adresses IP (la commande <command>arp</command> <trademark>de
|
|
Windows</trademark> n'accepte pas cette option) . Si je n'avais pas
|
|
utilisé pas cette option, les points d'interrogation seraient remplacés
|
|
par les noms pleinement qualifiés (FQDN) correspondant à chaque adresse
|
|
IP. Remarquez que la dernière information dans le cache correspond à
|
|
celle que nous avons vue en utilisant <command>tcpdump</command> à
|
|
l'instant.</para>
|
|
</section>
|
|
|
|
<section id="RFC1918">
|
|
<title>RFC 1918</title>
|
|
|
|
<para>Les adresses IP sont allouées par l'<acronym>IANA</acronym>
|
|
(<ulink url="http://www.iana.org/">Internet Assigned Number
|
|
Authority</ulink>) qui délégue les allocations sur une base géographique
|
|
aux Registres Internet Régionaux (<acronym>RIR</acronym>). Par exemple,
|
|
les allocations pour les Etats-Unis et l'Afrique sub-Saharienne sont
|
|
déléguées à l'<acronym>ARIN</acronym> (<ulink
|
|
url="http://www.arin.net/">American Registry for Internet
|
|
Numbers</ulink>). Ces RIRs peuvent à leur tour déléguer à des bureaux
|
|
nationaux. La plupart d'entre nous ne traite pas avec ces autorités mais
|
|
obtient plutôt ses adresse IP de son <acronym>FAI</acronym>.</para>
|
|
|
|
<para>Dans la réalité, on ne peut en général pas se permettre d'avoir
|
|
autant d'adresses IP publiques que l'on a de périphériques en
|
|
nécessitant une. C'est cette raison qui nous amène à utiliser des
|
|
adresses IP privées. La RFC 1918 réserve plusieurs plages d'adresses à
|
|
cette 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>Les adresses réservées par la RFC 1918 sont parfois appelées
|
|
non-routables car les routeurs d'infrastructure internet ne feront pas
|
|
suivre (forward) les paquets qui ont une adresse de destination de la
|
|
RFC 1918. Cela est compréhensible puisque chacun peut choisir n'importe
|
|
laquelle ces adresses pour son usage privé. Mais le terme de
|
|
non-routable est quelque peu malencontreux car il peut amener à conclure
|
|
de manière erronée que le trafic destiné à une de ces adresses ne peut
|
|
être envoyé à travers un routeur. Ceci est faux et les routeurs privés,
|
|
dont votre firewall Shorewall, peuvent parfaitement faire suivre du
|
|
trafic avec des adresses conformes à la RFC 1918.</para>
|
|
|
|
<para>Quant on choisit des adresses dans ces plages, il faut bien avoir
|
|
à l'esprit les choses suivantes:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Comme l'espace des adresses IPv4 s'épuise, de plus en plus
|
|
d'organisation (y compris les FAI) commencent à utiliser les
|
|
adresses RFC 1918 dans leurs infrastructures.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Vous ne devez pas utiliser d'adresse IP qui soit utilisée par
|
|
votre <acronym>FAI</acronym> ou une autre organisation avec laquelle
|
|
vous souhaitez établir une liaison <acronym>VPN</acronym></para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>C'est pourquoi c'est une bonne idée de vérifier après de votre FAI
|
|
s'il n'utilise pas (ou ne prévoie pas d'utiliser) des adresses privées
|
|
avant de décider quelles adresses que vous allez utiliser.</para>
|
|
|
|
<note>
|
|
<para><emphasis role="bold">Dans ce document, les adresses IP externes
|
|
<quote>réelles</quote> sont dans la plage 192.0.2.x. Les adresses du
|
|
réseau 192.0.2.0/24 sont réservées par RFC 3330 pour l'utilisation
|
|
d'adresses IP publiques dans les exemples imprimés ainsi que dans les
|
|
réseaux de test. Ces adresses ne doivent pas être confondues avec les
|
|
adresses 192.168.0.0/16, qui comme décrit ci-dessus, sont réservées
|
|
par la RFC 1918 pour une utilisation privée.</emphasis></para>
|
|
</note>
|
|
</section>
|
|
</section>
|
|
|
|
<section id="Options">
|
|
<title>Configurer votre Réseau</title>
|
|
|
|
<para>Le choix d'une configuration pour votre réseau dépend d'abord du
|
|
nombre d'adresses IP publiques dont vous disposez et du nombre d'adresses
|
|
IP dont vous avez besoin. Quel que soit le nombre d'adresses dont vous
|
|
disposez, votre <acronym>FAI</acronym> peut vous servir ce jeu d'adresses
|
|
de deux manières:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><emphasis role="bold">Routées</emphasis> - Le trafic vers
|
|
chacune de vos adresses publiques sera routé à travers une seule
|
|
adresse de passerelle. Cela sera généralement fait si votre FAI vous
|
|
attribue un sous-réseau complet (/29 ou plus). Dans ce cas, vous
|
|
affecterez l'adresse de cette passerelle comme étant l'adresse de
|
|
l'interface externe de votre firewall/routeur.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis role="bold">Non routées</emphasis> - Votre FAI enverra
|
|
le trafic à chacune de vos adresses directement.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Dans les paragraphes qui suivent, nous étudierons chacun de ces cas
|
|
séparément.</para>
|
|
|
|
<para>Avant de commencer, il y a une chose que vous devez vérifier:</para>
|
|
|
|
<para><inlinegraphic fileref="images/BD21298_.gif" /></para>
|
|
|
|
<para>Si vous utilisez un paquetage Debian, vérifiez votre fichier
|
|
<filename>shorewall.conf</filename> afin de vous assurer que les
|
|
paramètres suivants sont convenablement fixés. Si ce n'est pas le cas,
|
|
appliquez les changements nécessaires:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>IP_FORWARDING=On</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<section id="Routed">
|
|
<title>Routé</title>
|
|
|
|
<para>Supposons que votre fournisseur d'accès vous ait assigné le
|
|
sous-réseau 192.0.2.64/28 routé par 192.0.2.65. Vous avez les adresses
|
|
IP 192.0.2.64 - 192.0.2.79 et l'adresse externe de votre firewall est
|
|
192.0.2.65. Votre FAI vous a aussi dit que vous devez utiliser le masque
|
|
de sous-réseau 255.255.255.0 (ainsi, votre /28 est un sous-ensemble du
|
|
/24, plus grand). Avec autant d'adresses IP, vous pouvez scinder votre
|
|
réseau /28 en deux sous-réseaux /29 et configurer votre réseau comme
|
|
l'indique le diagramme suivant.</para>
|
|
|
|
<graphic align="center" fileref="images/dmz4.png" />
|
|
|
|
<para>Dans l'exemple, la zone démilitarisé <acronym>DMZ</acronym> est
|
|
dans le sous-réseau 192.0.2.64/29 et le réseau local est dans
|
|
192.0.2.72/29. La passerelle par défaut pour les hôtes dans la
|
|
<acronym>DMZ</acronym> doit être configurée à 192.0.2.66 et la
|
|
passerelle par défaut pour ceux du réseau local doit être configurée à
|
|
192.0.2.73.</para>
|
|
|
|
<para>Notez que cette solution est plutôt gourmande en adresses
|
|
publiques puisqu'elle utilise 192.0.2.64 et 192.0.2.72 pour les adresses
|
|
de sous-réseau, 192.0.2.71 et 192.0.2.79 pour les adresses de diffusion
|
|
(broadcast) du réseau, et 192.0.2.66 et 168.0.2.73 pour les adresses
|
|
internes sur le firewall/routeur. Elle montre néammoins comment la
|
|
gestion en sous-réseaux peut fonctionner. Et si nous avions un réseau
|
|
/24 plutôt qu'un /28, l'utilisation de 6 adresses IP parmi les 256
|
|
disponibles serait largement justifiée par la simplicité du
|
|
paramétrage.</para>
|
|
|
|
<para>Le lecteur attentif aura peut-être remarqué que l'interface
|
|
externe du firewall/Routeur est en fait incluse dans le sous-réseau
|
|
<acronym>DMZ</acronym> (192.0.2.64/29). On peut se demander ce qui se
|
|
passe quand l'hôte DMZ 1 (192.0.2.67) essaye de communiquer avec
|
|
192.0.2.65. La table de routage sur l'hôte DMZ 1 doit ressembler à
|
|
cela:</para>
|
|
|
|
<programlisting format="linespecific">Kernel IP routing table
|
|
Destination Gateway Genmask Flags MSS Window irtt Iface
|
|
192.0.2.64 0.0.0.0 255.255.255.248 U 40 0 0 eth0
|
|
0.0.0.0 192.0.2.66 0.0.0.0 UG 40 0 0 eth0</programlisting>
|
|
|
|
<para>Donc, lorsque l'hôte DMZ 1 voudra communiquer avec 192.0.2.65, il
|
|
enverra une requête <acronym>ARP</acronym> "qui-a 192.0.2.65" alors
|
|
qu'aucune interface sur le segment ethernet DMZ n'a cette adresse IP.
|
|
Assez bizarrement, le firewall répondra à la requête avec
|
|
<emphasis><emphasis role="underlined"><emphasis
|
|
role="underline">l'adresse MAC de sa propre interface
|
|
DMZ</emphasis></emphasis> </emphasis>! DMZ 1 peut alors envoyer des
|
|
trames ethernet adressées à cette adresse <acronym>MAC</acronym> et les
|
|
trames seront reçues correctement par le firewall/routeur.</para>
|
|
|
|
<para>L'avertissement fait plus haut qui déconseille très fortement la
|
|
connexion de plusieurs interfaces du firewall/routeur à un même hub ou
|
|
switch est une conséquence directe de ce comportement plutôt inattendu
|
|
d'<acronym>ARP</acronym> de la part du noyau Linux. Quant une requête
|
|
ARP destinée à une des adresses du firewall/routeur est envoyée par un
|
|
autre système connecté au même hub ou switch, toutes les interfaces du
|
|
firewall qui y sont connectées peuvent répondre ! C'est alors la course
|
|
à savoir quelle réponse <quote>c'est-ici</quote> atteindra la première
|
|
l'émetteur de la requête.</para>
|
|
</section>
|
|
|
|
<section id="NonRouted">
|
|
<title>Non routé</title>
|
|
|
|
<para>Si vous êtes dans la situation précédente mais que votre trafic
|
|
n'est pas routé par votre <acronym>FAI</acronym>, vous pouvez configurer
|
|
votre réseau exactement comme décrit plus haut, au prix d'une légère
|
|
contorsion supplémentaire: spécifiez simplement l'option
|
|
<quote><command>proxyarp</command></quote> sur les trois interfaces du
|
|
firewall dans le fichier
|
|
<filename>/etc/shorewall/interfaces</filename>.</para>
|
|
|
|
<para>La plupart d'entre nous n'ont pas le luxe d'avoir suffisamment
|
|
d'adresses publiques IP pour configurer leur réseau comme indiqué dans
|
|
l'exemple précédent (même si la configuration est routée).</para>
|
|
|
|
<para><emphasis role="bold">Dans le reste de cette section, supposons
|
|
que notre FAI nous ait assigné la plage d'adresses IP 192.0.2.176-180,
|
|
qu'il nous ait dit d'utiliser le masque de sous-réseau 255.255.255.0 et
|
|
que la passerelle par défaut soit 192.0.2.254.</emphasis></para>
|
|
|
|
<para>De toute évidence, ce jeu d'adresses ne comprend pas de
|
|
sous-réseau et n'a pas suffisamment d'adresses pour toutes les
|
|
interfaces de notre réseau. Nous pouvons utiliser quatre techniques
|
|
différentes pour contourner ce problème.</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>La traduction d'adresses source (<emphasis>Source Network
|
|
Address Translation</emphasis> <emphasis
|
|
role="bold">SNAT</emphasis>).</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>La traduction d'adresses destination <emphasis>(Destination
|
|
Network Address Translation</emphasis> <emphasis
|
|
role="bold">DNAT</emphasis>) nommée aussi transfert ou suivi de port
|
|
<emphasis>(Port Forwarding</emphasis>).</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis role="bold"><emphasis>Le </emphasis>Proxy
|
|
ARP</emphasis>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>La traduction d'adresses réseau <emphasis>(Network Address
|
|
Translation</emphasis> <acronym>NAT</acronym>) à laquelle on fait
|
|
aussi référence sous l'appellation de un-à-un NAT (one-to-one
|
|
NAT).</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Souvent, une combinaison de ces techniques est utilisée. Chacune
|
|
d'entre elles sera détaillée dans la section suivante.</para>
|
|
|
|
<section id="SNAT">
|
|
<title>SNAT</title>
|
|
|
|
<para>Avec la <acronym>SNAT</acronym>, un segment interne du réseau
|
|
local est configuré en utilisant des adresses de la RFC 1918. Quant un
|
|
hôte <emphasis role="bold">A</emphasis> sur ce segment interne initie
|
|
une connexion vers un hôte <emphasis role="bold">B</emphasis> sur
|
|
internet, le firewall/routeur réécrit les entêtes IP de la requête
|
|
pour utiliser une de vos adresses publiques IP en tant qu'adresse
|
|
source. Quant <emphasis role="bold">B</emphasis> répond et que la
|
|
réponse est reçue par le firewall, le firewall change l'adresse
|
|
destination par celle de la RFC 1918 de <emphasis
|
|
role="bold">A</emphasis> et transfère la réponse à <emphasis
|
|
role="bold">A.</emphasis></para>
|
|
|
|
<para>Supposons que vous décidiez d'utiliser la SNAT sur votre zone
|
|
locale. Supposons également que vous utilisiez l'adresse publique
|
|
192.0.2.176 à la fois comme adresse externe du firewall et comme
|
|
adresse source des requêtes internet envoyées depuis cette
|
|
zone.</para>
|
|
|
|
<graphic align="center" fileref="images/dmz5.png" />
|
|
|
|
<para>On a assigné à la zone locale le sous-réseau 192.168.201.0/29
|
|
(masque de sous-réseau 255.255.255.248).</para>
|
|
|
|
<simplelist>
|
|
<member><inlinegraphic fileref="images/BD21298_.gif" /></member>
|
|
|
|
<member>Dans ce cas, les systèmes de la zone locale seraient
|
|
configurés avec 192.168.201.1 comme passerelle par défaut (adresse
|
|
IP de l'interface local du firewall).</member>
|
|
|
|
<member><inlinegraphic fileref="images/BD21298_.gif" /></member>
|
|
|
|
<member>La SNAT est configurée dans Shorewall avec le fichier
|
|
<filename><ulink
|
|
url="Documentation.htm#Masq">/etc/shorewall/masq</ulink></filename>.</member>
|
|
</simplelist>
|
|
|
|
<programlisting>#INTERFACE SUBNET ADDRESS
|
|
eth0 192.168.201.0/29 192.0.2.176</programlisting>
|
|
|
|
<para>Cet exemple utilise la technique normale qui assigne la même
|
|
adresse publique IP pour l'interface externe du firewall et pour la
|
|
SNAT. Si vous souhaitez utiliser une adresse IP différente, vous
|
|
pouvez soit utiliser les outils de configuration réseau de votre
|
|
distribution Linux pour ajouter cette adresse IP, soit mettre la
|
|
variable ADD_SNAT_ALIASES=Yes dans
|
|
<filename>/etc/shorewall/shorewall.conf</filename> et Shorewall
|
|
ajoutera l'adresse pour vous.</para>
|
|
</section>
|
|
|
|
<section id="dnat">
|
|
<title>DNAT</title>
|
|
|
|
<para>Quand la SNAT est utilisée, il est impossible pour les hôtes sur
|
|
internet d'initialiser une connexion avec un des systèmes internes
|
|
puisque ces systèmes n'ont pas d'adresses publiques IP. La DNAT
|
|
fournit une méthode pour autoriser des connexions sélectionnées depuis
|
|
internet.</para>
|
|
|
|
<para><inlinegraphic fileref="images/BD21298_.gif" /></para>
|
|
|
|
<para>Supposons que votre fille souhaite héberger un serveur Web sur
|
|
son système "Local 3". Vous pourriez autoriser les connexions
|
|
d'internet à son serveur en ajoutant l'entrée suivante dans le fichier
|
|
<filename><ulink
|
|
url="Documentation.htm#Rules">/etc/shorewall/rules</ulink></filename>:</para>
|
|
|
|
<programlisting>#ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL
|
|
# PORT(S) PORT(S) DEST
|
|
DNAT net loc:192.168.201.4 tcp www</programlisting>
|
|
|
|
<para>Si une des amies de votre fille avec une adresse <emphasis
|
|
role="bold">A</emphasis> veut accéder au serveur de votre fille, elle
|
|
peut se connecter à http://192.0.2.176 (l'adresse IP externe de votre
|
|
firewall). Le firewall réécrira l'adresse IP de destination à
|
|
192.168.201.4 (le système de votre fille) et lui fera suivre la
|
|
requête. Quand le serveur de votre fille répondra, le firewall
|
|
remettra l'adresse source à 192.0.2.176 et retournera la réponse à
|
|
<emphasis role="bold">A</emphasis>.</para>
|
|
|
|
<para>Cet exemple utilise l'adresse externe IP du firewall pour la
|
|
<acronym>DNAT</acronym>. Vous pouvez utiliser une autre de vos
|
|
adresses IP publiques. Pour cela, mettez-la dans la colonne ORIGINAL
|
|
DEST de la règle ci-dessus. Par contre, Shorewall n'ajoutera pas à
|
|
votre place cette adresse à l'interface externe du firewall.</para>
|
|
|
|
<important>
|
|
<para>Quand vous testez des règles <acronym>DNAT</acronym> comme
|
|
celles présentée plus haut, vous devez le faire depuis un client A
|
|
L'EXTÉRIEUR DE VOTRE FIREWALL (depuis la zone <quote>net</quote>).
|
|
Vous ne pouvez pas tester ces règles de l'intérieur !</para>
|
|
|
|
<para>Pour quelques astuces sur la résolution de problèmes avec la
|
|
DNAT, <ulink url="FAQ_fr.html#faq1a">voyez les FAQ 1a et
|
|
1b</ulink>.</para>
|
|
</important>
|
|
</section>
|
|
|
|
<section id="ProxyARP">
|
|
<title>Proxy ARP</title>
|
|
|
|
<para>Le principe du proxy <acronym>ARP</acronym> est:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>On attribue à un hôte <emphasis role="bold">H</emphasis>
|
|
derrière notre firewall une de nos adresses publiques <emphasis
|
|
role="bold">A</emphasis> et on lui donne le même masque de
|
|
sous-réseau <emphasis role="bold">M</emphasis> que celui de
|
|
l'interface externe du firewall.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Le firewall répond aux requêtes ARP
|
|
<quote>qui-a-l'adresse</quote> <emphasis
|
|
role="bold">A</emphasis><emphasis> </emphasis>émises par les hôtes
|
|
à l'extérieur du firewall.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Lorsque c'est l'hôte <emphasis role="bold">H</emphasis> qui
|
|
émet une requête <quote>qui-a-l'adresse</quote><emphasis>
|
|
</emphasis><emphasis><emphasis>pour un hôte
|
|
</emphasis></emphasis>situé à l'extérieur du firewall et
|
|
appartenant au sous-réseau défini par <emphasis
|
|
role="bold">A</emphasis> et <emphasis role="bold">M</emphasis>,
|
|
c'est le firewall qui répondra à <emphasis
|
|
role="bold">H</emphasis> avec l'adresse MAC de l'interface du
|
|
firewall à laquelle est raccordé <emphasis
|
|
role="bold">H</emphasis>.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Pour une description plus complète du fonctionnement du Proxy
|
|
ARP, vous pouvez vous référer à la <ulink
|
|
url="ProxyARP.htm">Documentation du Proxy Shorewall</ulink>.</para>
|
|
|
|
<para>Supposons que nous décidions d'utiliser le Proxy ARP sur la DMZ
|
|
de notre exemple de réseau.</para>
|
|
|
|
<graphic align="center" fileref="images/dmz6.png" />
|
|
|
|
<para>Ici, nous avons assigné les adresses IP 192.0.2.177 au système
|
|
DMZ 1 et 192.0.2.178 au système DMZ 2. Remarquez que nous avons
|
|
assigné une adresse RFC 1918 et un masque de sous-réseau arbitraires à
|
|
l'interface DMZ de notre firewall. Cette adresse et ce masque ne sont
|
|
pas pertinents - vérifiez juste que celle-ci n'est en conflit avec
|
|
aucun autre sous-réseau déjà défini.</para>
|
|
|
|
<para><inlinegraphic fileref="images/BD21298_.gif" /></para>
|
|
|
|
<para>La configuration du Proxy ARP est faite dans le fichier <ulink
|
|
url="ProxyARP.htm"><filename>/etc/shorewall/proxyarp</filename></ulink>.</para>
|
|
|
|
<programlisting>#ADDRESS INTERFACE EXTERNAL HAVE ROUTE PERSISTANT
|
|
192.0.2.177 eth2 eth0 No
|
|
192.0.2.178 eth2 eth0 No</programlisting>
|
|
|
|
<para>La variable HAVE ROUTE étant à No, Shorewall ajoutera les routes
|
|
d'hôte pour 192.0.2.177 et 192.0.2.178 par <filename
|
|
class="devicefile">eth2</filename>. Les interfaces ethernet des
|
|
machines DMZ 1 et DMZ 2 devront être configurées avec les adresses IP
|
|
données plus haut, mais elles devront avoir la même passerelle par
|
|
défaut que le firewall lui-même (192.0.2.254 dans notre exemple).
|
|
Autrement dit, elles doivent être configurées exactement comme si
|
|
elles étaient parallèles au firewall plutôt que derrière lui.</para>
|
|
|
|
<caution>
|
|
<para><emphasis role="bold">Ne pas ajouter le(s) adresse(s) traitées
|
|
par le proxy ARP (192.0.2.177 et 192.0.2.178 dans l'exemple
|
|
ci-dessus) à l'interface externe du firewall (eth0 dans cet
|
|
exemple).</emphasis></para>
|
|
</caution>
|
|
|
|
<para>Un mot de mise en garde. En général, les <acronym>FAI</acronym>
|
|
configurent leurs routeurs avec un timeout de cache
|
|
<acronym>ARP</acronym> assez élevé. Si vous déplacez un système
|
|
parallèle à votre firewall derrière le Proxy ARP du firewall, cela
|
|
peut mettre des HEURES avant que ce système ne puisse communiquer avec
|
|
internet. Il y a deux choses que vous pouvez essayer de faire:</para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>(Salutations à Bradey Honsinger) Une lecture de
|
|
<quote>TCP/IP Illustrated, Vol 1</quote> de Richard Stevens révèle
|
|
qu'un paquet ARP <quote>gratuit</quote> (gratuitous) peut amener
|
|
le routeur de votre FAI à rafraîchir son cache (section 4.7). Un
|
|
paquet ARP <quote>gratuit</quote> est simplement une requête d'un
|
|
hôte demandant l'adresse MAC associée à sa propre adresse
|
|
IP.</para>
|
|
|
|
<para>En plus de garantir que cette adresse IP n'est pas
|
|
dupliquée, <quote>si l'hôte qui envoie la commande ARP
|
|
<quote>gratuit</quote> vient juste de changer son adresse
|
|
matérielle ..., ce paquet force tous les autres hôtes...qui ont
|
|
une entrée dans leur cache ARP pour l'ancienne adresse matérielle
|
|
à mettre leurs caches à jour</quote></para>
|
|
|
|
<para>Ce qui est exactement, bien sûr, ce que vous souhaitez faire
|
|
lorsque vous basculez un hôte qui était directement exposé sur
|
|
internet vers l'arrière de votre firewall Shorewall en utilisant
|
|
le proxy ARP (ou en faisant du NAT un-à-un pour la même raison).
|
|
Heureusement, les versions récentes du paquetage
|
|
<command>iputils</command> de <trademark>Redhat</trademark>
|
|
comprennent <command>arping</command>, dont l'option "-U" fait
|
|
cela:</para>
|
|
|
|
<para><programlisting><command>arping -U -I <net if> <newly proxied IP></command><command>
|
|
|
|
arping -U -I eth0 66.58.99.83</command> # for example</programlisting>Stevens
|
|
continue en mentionnant que certains systèmes ne répondent pas
|
|
correctement à la commande ARP <quote>gratuit</quote>, mais une
|
|
recherche sur google pour <quote>arping -U</quote> semble
|
|
démontrer que cela fonctionne dans la plupart des cas.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Vous pouvez appeler votre <acronym>FAI</acronym> et lui
|
|
demander de purger l'entrée obsolète de son cache
|
|
<acronym>ARP</acronym>, mais la plupart ne voudront ou ne pourront
|
|
le faire.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
|
|
<para>Vous pouvez vérifier si le cache ARP de votre FAI est obsolète
|
|
en utilisant <command>ping</command> et <command>tcpdump</command>.
|
|
Supposez que vous pensez que la passerelle routeur a une entrée ARP
|
|
obsolète pour 192.0.2.177. Sur le firewall, lancez
|
|
<command>tcpdump</command> de cette façon:</para>
|
|
|
|
<para><programlisting><command>tcpdump -nei eth0 icmp</command></programlisting></para>
|
|
|
|
<para>Maintenant depuis 192.0.2.177, <command>ping</command>ez la
|
|
passerelle de votre FAI (que nous supposons être 192.0.2.254):</para>
|
|
|
|
<para><programlisting><command>ping 192.0.2.254</command></programlisting></para>
|
|
|
|
<para>Nous pouvons maintenant observer le résultat de
|
|
<command>tcpdump</command>:</para>
|
|
|
|
<para><programlisting>13:35:12.159321 <emphasis role="bold">0:4:e2:20:20:33</emphasis> 0:0:77:95:dd:19 ip 98:
|
|
192.0.2.177 > 192.0.2.254: icmp: echo request (DF)
|
|
13:35:12.207615 0:0:77:95:dd:19 <emphasis role="bold">0:c0:a8:50:b2:57</emphasis> ip 98:
|
|
192.0.2.254 > 192.0.2.177 : icmp: echo reply</programlisting>Remarquez
|
|
que l'adresse source <acronym>MAC</acronym> dans la requête echo est
|
|
différente de l'adresse <acronym>MAC</acronym> de destination dans la
|
|
réponse echo ! Dans ce cas, 0:4:e2:20:20:33 était l'adresse
|
|
<acronym>MAC</acronym> de l'interface réseau <filename
|
|
class="devicefile">eth0</filename> du firewall tandis que
|
|
0:c0:a8:50:b2:57 était l'adresse <acronym>MAC</acronym> de la carte
|
|
réseau de DMZ 1. En d'autre termes, le cache <acronym>ARP</acronym> de
|
|
la passerelle associe encore 192.0.2.177 avec la carte réseau de DMZ 1
|
|
plutôt qu'avec l'interface <filename class="devicefile"><filename
|
|
class="devicefile">eth0</filename></filename> du firewall.</para>
|
|
</section>
|
|
|
|
<section>
|
|
<title id="NAT">NAT un-à-un</title>
|
|
|
|
<para>Avec le NAT un-à-un (one-to-one NAT), vous attribuez des
|
|
adresses RFC 1918 à vos systèmes puis vous établissez une
|
|
correspondance un pour un de ces adresses avec les adresses IP
|
|
publiques. Pour les occurrences des connexions sortantes, la
|
|
traduction d'adresses sources (<acronym>SNAT</acronym>) sera alors
|
|
effectuée. Pour les occurrences des connexions entrantes, c'est la
|
|
traduction d'adresses destination (<acronym>DNAT</acronym>) qui sera
|
|
réalisée.</para>
|
|
|
|
<para>Voyons avec l'exemple précédent du serveur web de votre fille
|
|
tournant sur le système Local 3.</para>
|
|
|
|
<graphic align="center" fileref="images/dmz6.png" />
|
|
|
|
<para>Souvenons-nous que dans cette configuration, le réseau local
|
|
utilise la <acronym>SNAT</acronym> et qu'il partage l'IP externe du
|
|
firewall (192.0.2.176) pour les connexions sortantes. On obtient ce
|
|
résultat grâce à l'entrée suivante dans le fichier
|
|
<filename><filename>/etc/shorewall/masq</filename></filename>:</para>
|
|
|
|
<programlisting>#INTERFACE SUBNET ADDRESS
|
|
eth0 192.168.201.0/29 192.0.2.176</programlisting>
|
|
|
|
<para><inlinegraphic fileref="images/BD21298_.gif" /></para>
|
|
|
|
<para>Supposons maintenant que vous ayez décidé d'allouer à votre
|
|
fille sa propre adresse IP (192.0.2.179) pour l'ensemble des
|
|
connexions entrantes et sortantes. Vous pouvez faire cela en ajoutant
|
|
cette entrée dans le fichier<filename><ulink url="NAT.htm">
|
|
/etc/shorewall/nat</ulink></filename>.</para>
|
|
|
|
<programlisting>#EXTERNAL INTERFACE INTERNAL ALL INTERFACES LOCAL
|
|
192.0.2.179 eth0 192.168.201.4 No No</programlisting>
|
|
|
|
<para>Avec cette entrée active, votre fille a sa propre adresse IP et
|
|
les deux autres systèmes locaux partagent l'adresse IP du
|
|
firewall.</para>
|
|
|
|
<para><inlinegraphic fileref="images/BD21298_.gif" /></para>
|
|
|
|
<para>Une fois que la relation entre 192.0.2.179 et192.168.201.4 est
|
|
établie avec l'entrée ci-dessus dans le fichier
|
|
<filename>nat</filename>, l'utilisation d'une règle d'une règle DNAT
|
|
pour le serveur Web de votre fille n'est plus appropriée -- vous
|
|
devriez plutôt utiliser une simple règle ACCEPT:</para>
|
|
|
|
<programlisting>#ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL
|
|
# PORT(S) PORT(S) DEST
|
|
ACCEPT net loc:192.168.201.4 tcp www</programlisting>
|
|
|
|
<para>Un mot de mise en garde. En général, les <acronym>FAI</acronym>
|
|
configurent leurs routeurs avec un timeout de cache
|
|
<acronym>ARP</acronym> assez élevé. Si vous déplacez un système
|
|
parallèle à votre firewall derrière le Proxy ARP du firewall, cela
|
|
peut mettre des HEURES avant que ce système ne puisse communiquer avec
|
|
internet. Il y a deux choses que vous pouvez essayer de faire:</para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>(Salutations à Bradey Honsinger) Une lecture de
|
|
<quote>TCP/IP Illustrated, Vol 1</quote> de Richard Stevens révèle
|
|
qu'un paquet ARP <quote>gratuit</quote> (gratuitous) peut amener
|
|
le routeur de votre FAI à rafraîchir son cache (section 4.7). Un
|
|
paquet ARP <quote>gratuit</quote> est simplement une requête d'un
|
|
hôte demandant l'adresse MAC associée à sa propre adresse
|
|
IP.</para>
|
|
|
|
<para>En plus de garantir que cette adresse IP n'est pas
|
|
dupliquée, <quote>si l'hôte qui envoie la commande ARP
|
|
<quote>gratuit</quote> vient juste de changer son adresse
|
|
matérielle ..., ce paquet force tous les autres hôtes...qui ont
|
|
une entrée dans leur cache ARP pour l'ancienne adresse matérielle
|
|
à mettre leurs caches à jour</quote></para>
|
|
|
|
<para>Ce qui est exactement, bien sûr, ce que vous souhaitez faire
|
|
lorsque vous basculez un hôte qui était directement exposé sur
|
|
internet vers l'arrière de votre firewall Shorewall en utilisant
|
|
le proxy ARP (ou en faisant du NAT un-à-un pour la même raison).
|
|
Heureusement, les versions récentes du paquetage
|
|
<command>iputils</command> de <trademark>Redhat</trademark>
|
|
comprennent <command>arping</command>, dont l'option "-U" fait
|
|
cela:</para>
|
|
|
|
<para><programlisting><command>arping -U -I <net if> <newly proxied IP></command><command>
|
|
|
|
arping -U -I eth0 66.58.99.83</command> # for example</programlisting>Stevens
|
|
continue en mentionnant que certains systèmes ne répondent pas
|
|
correctement à la commande ARP <quote>gratuit</quote>, mais une
|
|
recherche sur google pour <quote>arping -U</quote> semble
|
|
démontrer que cela fonctionne dans la plupart des cas.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Vous pouvez appeler votre <acronym>FAI</acronym> et lui
|
|
demander de purger l'entrée obsolète de son cache
|
|
<acronym>ARP</acronym>, mais la plupart ne voudront ou ne pourront
|
|
le faire.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
|
|
<para>Vous pouvez vérifier si le cache ARP de votre FAI est obsolète
|
|
en utilisant <command>ping</command> et <command>tcpdump</command>.
|
|
Supposez que vous pensez que la passerelle routeur a une entrée ARP
|
|
obsolète pour 192.0.2.177. Sur le firewall, lancez
|
|
<command>tcpdump</command> de cette façon:</para>
|
|
|
|
<para><programlisting><command>tcpdump -nei eth0 icmp</command></programlisting></para>
|
|
|
|
<para>Maintenant depuis 192.0.2.177, <command>ping</command>ez la
|
|
passerelle de votre FAI (que nous supposons être 192.0.2.254):</para>
|
|
|
|
<para><programlisting><command>ping 192.0.2.254</command></programlisting></para>
|
|
|
|
<para>Nous pouvons maintenant observer le résultat de
|
|
<command>tcpdump</command>:</para>
|
|
|
|
<para><programlisting>13:35:12.159321 <emphasis role="bold">0:4:e2:20:20:33</emphasis> 0:0:77:95:dd:19 ip 98:
|
|
192.0.2.177 > 192.0.2.254: icmp: echo request (DF)
|
|
13:35:12.207615 0:0:77:95:dd:19 <emphasis role="bold">0:c0:a8:50:b2:57</emphasis> ip 98:
|
|
192.0.2.254 > 192.0.2.177 : icmp: echo reply</programlisting>Remarquez
|
|
que l'adresse source <acronym>MAC</acronym> dans la requête echo est
|
|
différente de l'adresse <acronym>MAC</acronym> de destination dans la
|
|
réponse echo ! Dans ce cas, 0:4:e2:20:20:33 était l'adresse
|
|
<acronym>MAC</acronym> de l'interface réseau <filename
|
|
class="devicefile">eth0</filename> du firewall tandis que
|
|
0:c0:a8:50:b2:57 était l'adresse <acronym>MAC</acronym> de la carte
|
|
réseau de DMZ 1. En d'autre termes, le cache <acronym>ARP</acronym> de
|
|
la passerelle associe encore 192.0.2.177 avec la carte réseau de DMZ 1
|
|
plutôt qu'avec l'interface <filename class="devicefile"><filename
|
|
class="devicefile">eth0</filename></filename> du firewall.</para>
|
|
</section>
|
|
</section>
|
|
|
|
<section id="Rules">
|
|
<title>Règles</title>
|
|
|
|
<para><note>
|
|
<para>Shorewall dispose d'un mécanisme de <ulink
|
|
url="Macros.html">macros</ulink> comprenant des macros pour de
|
|
nombreuses applications standard. Dans cette section nous
|
|
n'utiliserons pas de macro. mais nous définirons les règles
|
|
directement.</para>
|
|
</note><inlinegraphic fileref="images/BD21298_.gif" /></para>
|
|
|
|
<para>Avec les politiques définies plus tôt dans ce document, vos
|
|
systèmes locaux (Local 1-3) peuvent accéder à n'importe quel serveur sur
|
|
internet alors que la <acronym>DMZ</acronym> ne peut accéder à aucun
|
|
autre hôte, dont le firewall. A l'exception des règles
|
|
<acronym>NAT</acronym> qui entraînent la traduction d'adresses et
|
|
permettent aux requêtes de connexion traduites de passer à travers le
|
|
firewall, la façon d'autoriser des requêtes à travers votre firewall est
|
|
d'utiliser des règles ACCEPT.</para>
|
|
|
|
<note>
|
|
<para>Puisque les colonnes SOURCE PORT et ORIG. DEST. ne sont pas
|
|
utilisées dans cette section, elle ne seront pas affichées.</para>
|
|
</note>
|
|
|
|
<para>Vous souhaiter certainement autoriser le <command>ping</command>
|
|
entre vos zones:</para>
|
|
|
|
<programlisting>#ACTION SOURCE DEST PROTO DEST
|
|
# PORT(S)
|
|
ACCEPT net dmz icmp echo-request
|
|
ACCEPT net loc icmp echo-request
|
|
ACCEPT dmz loc icmp echo-request
|
|
ACCEPT loc dmz icmp echo-request</programlisting>
|
|
|
|
<para>Supposons que vous avez des serveurs mail et pop3 actifs sur le
|
|
système DMZ 2, et un serveur Web sur le système DMZ 1. Les règles dont
|
|
vous avez besoin sont:</para>
|
|
|
|
<programlisting>#ACTION SOURCE DEST PROTO DEST COMMENTS
|
|
# PORT(S)
|
|
ACCEPT net dmz:192.0.2.178 tcp smtp #Mail from
|
|
#Internet
|
|
ACCEPT net dmz:192.0.2.178 tcp pop3 #Pop3 from
|
|
#Internet
|
|
ACCEPT loc dmz:192.0.2.178 tcp smtp #Mail from local
|
|
#Network
|
|
ACCEPT loc dmz:192.0.2.178 tcp pop3 #Pop3 from local
|
|
#Network
|
|
ACCEPT $FW dmz:192.0.2.178 tcp smtp #Mail from the
|
|
#Firewall
|
|
ACCEPT dmz:192.0.2.178 net tcp smtp #Mail to the
|
|
#Internet
|
|
ACCEPT net dmz:192.0.2.177 tcp http #WWW from
|
|
#Internet
|
|
ACCEPT net dmz:192.0.2.177 tcp https #Secure WWW
|
|
#from Internet
|
|
ACCEPT loc dmz:192.0.2.177 tcp https #Secure WWW
|
|
#from local
|
|
#Network</programlisting>
|
|
|
|
<para>Si vous utilisez un serveur DNS public sur 192.0.2.177, vous devez
|
|
ajouter les règles suivantes:</para>
|
|
|
|
<programlisting>#ACTION SOURCE DEST PROTO DEST COMMENTS
|
|
# PORT(S)
|
|
ACCEPT net dmz:192.0.2.177 udp domain #UDP DNS from
|
|
#Internet
|
|
ACCEPT net dmz:192.0.2.177 tcp domain #TCP DNS from
|
|
#Internet
|
|
ACCEPT loc dmz:192.0.2.177 udp domain #UDP DNS from
|
|
#Local Network
|
|
ACCEPT loc dmz:192.0.2.177 tcp domain #TCP DNS from
|
|
#Local Network
|
|
ACCEPT $FW dmz:192.0.2.177 udp domain #UDP DNS from
|
|
#the Firewall
|
|
ACCEPT $FW dmz:192.0.2.177 tcp domain #TCP DNS from
|
|
#the Firewall
|
|
ACCEPT dmz:192.0.2.177 net udp domain #UDP DNS to
|
|
#the Internet
|
|
ACCEPT dmz:192.0.2.177 net tcp domain #TCPP DNS to
|
|
#the Internet</programlisting>
|
|
|
|
<para>Vous souhaiterez probablement communiquer depuis votre réseau
|
|
local avec votre firewall et les systèmes en <acronym>DMZ</acronym> --
|
|
Je recommande <acronym>SSH</acronym> qui, grâce à son utilitaire
|
|
<command>scp</command> peut aussi faire de la diffusion et de la mise à
|
|
jour de logiciels.</para>
|
|
|
|
<programlisting>#ACTION SOURCE DEST PROTO DEST COMMENTS
|
|
# PORT(S)
|
|
ACCEPT loc dmz tcp ssh #SSH to the DMZ
|
|
ACCEPT net $FW tcp ssh #SSH to the
|
|
#Firewall</programlisting>
|
|
</section>
|
|
|
|
<section id="OddsAndEnds">
|
|
<title>D'autres petites choses</title>
|
|
|
|
<para>La discussion précédente reflète ma préférence personnelle pour
|
|
l'utilisation d'un Proxy ARP associé à mes serveurs en DMZ et de
|
|
SNAT/NAT pour les systèmes locaux. Je préfère utiliser la NAT seulement
|
|
dans le cas ou un système qui fait partie d'un sous-réseau RFC 1918 à
|
|
besoin d'avoir sa propre adresse IP publique.</para>
|
|
|
|
<para><inlinegraphic fileref="images/BD21298_.gif" /></para>
|
|
|
|
<para>Si vous ne l'avez déjà fait, ce serait une bonne idée de parcourir
|
|
le fichier <ulink
|
|
url="Documentation.htm#Config"><filename>/etc/shorewall/shorewall.conf</filename></ulink>
|
|
juste pour voir si autre chose pourrait vous intéresser. Vous pouvez
|
|
aussi regarder les autres fichiers de configuration que vous n'avez pas
|
|
touchés pour avoir un aperçu des autres possibilités de
|
|
Shorewall.</para>
|
|
|
|
<para>Dans le cas ou vous auriez perdu le fil, vous trouverez ci-dessous
|
|
un jeu final des fichiers de configuration pour le réseau de notre
|
|
exemple. Seuls les fichiers de la configuration initiale qui ont été
|
|
modifiés sont présentés.</para>
|
|
|
|
<para><filename>/etc/shorewall/interfaces</filename> (Les "options" sont
|
|
très dépendantes des sites).</para>
|
|
|
|
<programlisting>#ZONE INTERFACE BROADCAST OPTIONS
|
|
net eth0 detect rfc1918,routefilter
|
|
loc eth1 detect
|
|
dmz eth2 detect</programlisting>
|
|
|
|
<para>La configuration décrite ici nécessite que votre réseau soit
|
|
démarré avant que Shorewall ne puisse se lancer. Ceci laisse un petit
|
|
intervalle de temps durant lequel vous n'avez pas la protection d'un
|
|
firewall.</para>
|
|
|
|
<para>Si vous remplacez le <quote>detect</quote> dans les entrées
|
|
ci-dessus par la valeurs des adresses de diffusion (broadcoast) réelles,
|
|
vous pouvez activer Shorewall avant de monter vos interfaces
|
|
réseau.</para>
|
|
|
|
<programlisting>#ZONE INTERFACE BROADCAST OPTIONS
|
|
net eth0 192.0.2.255 rfc1918
|
|
loc eth1 192.168.201.7
|
|
dmz eth2 192.168.202.7</programlisting>
|
|
|
|
<para><filename>/etc/shorewall/masq</filename> - Réseau Local</para>
|
|
|
|
<programlisting>#INTERFACE SUBNET ADDRESS
|
|
eth0 192.168.201.0/29 192.0.2.176</programlisting>
|
|
|
|
<para><filename>/etc/shorewall/proxyarp</filename> - DMZ</para>
|
|
|
|
<programlisting>#ADDRESS EXTERNAL INTERFACE HAVE ROUTE
|
|
192.0.2.177 eth2 eth0 No
|
|
192.0.2.178 eth2 eth0 No</programlisting>
|
|
|
|
<para><filename>/etc/shorewall/nat</filename>- Le système de ma
|
|
fille</para>
|
|
|
|
<programlisting>#EXTERNAL INTERFACE INTERNAL ALL INTERFACES LOCAL
|
|
192.0.2.179 eth0 192.168.201.4 No No</programlisting>
|
|
|
|
<para><filename>/etc/shorewall/rules</filename><programlisting>#ACTION SOURCE DEST PROTO DEST COMMENTS
|
|
# PORT(S)
|
|
ACCEPT net dmz icmp echo-request
|
|
ACCEPT net loc icmp echo-request
|
|
ACCEPT dmz loc icmp echo-request
|
|
ACCEPT loc dmz icmp echo-request
|
|
ACCEPT net loc:192.168.201.4 tcp www #Daughter's
|
|
#Server
|
|
ACCEPT net dmz:192.0.2.178 tcp smtp #Mail from
|
|
#Internet
|
|
ACCEPT net dmz:192.0.2.178 tcp pop3 #Pop3 from
|
|
#Internet
|
|
ACCEPT loc dmz:192.0.2.178 tcp smtp #Mail from local
|
|
#Network
|
|
ACCEPT loc dmz:192.0.2.178 tcp pop3 #Pop3 from local
|
|
#Network
|
|
ACCEPT $FW dmz:192.0.2.178 tcp smtp #Mail from the
|
|
#Firewall
|
|
ACCEPT dmz:192.0.2.178 net tcp smtp #Mail to the
|
|
#Internet
|
|
ACCEPT net dmz:192.0.2.177 tcp http #WWW from
|
|
#Internet
|
|
ACCEPT net dmz:192.0.2.177 tcp https #Secure WWW
|
|
#from Internet
|
|
ACCEPT loc dmz:192.0.2.177 tcp https #Secure WWW
|
|
#from local
|
|
#Network
|
|
ACCEPT net dmz:192.0.2.177 udp domain #UDP DNS from
|
|
#Internet
|
|
ACCEPT net dmz:192.0.2.177 tcp domain #TCP DNS from
|
|
#Internet
|
|
ACCEPT loc dmz:192.0.2.177 udp domain #UDP DNS from
|
|
#Local Network
|
|
ACCEPT loc dmz:192.0.2.177 tcp domain #TCP DNS from
|
|
#Local Network
|
|
ACCEPT $FW dmz:192.0.2.177 udp domain #UDP DNS from
|
|
#the Firewall
|
|
ACCEPT $FW dmz:192.0.2.177 tcp domain #TCP DNS from
|
|
#the Firewall
|
|
ACCEPT dmz:192.0.2.177 net udp domain #UDP DNS to
|
|
#the Internet
|
|
ACCEPT dmz:192.0.2.177 net tcp domain #TCPP DNS to
|
|
#the Internet
|
|
ACCEPT loc dmz tcp ssh #SSH to the DMZ
|
|
ACCEPT net $FW tcp ssh #SSH to the
|
|
#Firewall</programlisting></para>
|
|
</section>
|
|
</section>
|
|
|
|
<section id="DNS">
|
|
<title>DNS</title>
|
|
|
|
<para>Compte tenu des adresses RFC 1918 et des adresses publiques
|
|
utilisées dans cette configuration, la seule façon logique de faire est
|
|
d'avoir des serveurs <acronym>DNS</acronym> interne et externe séparés.
|
|
Vous pouvez combiner les deux dans un unique serveur BIND 9 utilisant les
|
|
vues (Views). Si vous n'êtes pas intéressé par les vues BIND 9, vous
|
|
pouvez allez à la section suivante.</para>
|
|
|
|
<para>Supposons que votre domaine est foobar.net. Vous voulez que les deux
|
|
systèmes en <acronym>DMZ</acronym> s'appellent www.foobar.net et
|
|
mail.foobar.net, et vous voulez que les trois systèmes locaux s'appellent
|
|
winken.foobar.net, blinken.foobar.net et nod.foobar.net. Vous voulez que
|
|
le firewall soit connu à l'extérieur sous le nom de firewall.foobar.net,
|
|
que son interface vers le réseau local soit nommée gateway.foobar.net et
|
|
que son interface vers la <acronym>DMZ</acronym> soit dmz.foobar.net.
|
|
Mettons le serveur DNS sur 192.0.2.177 qui sera aussi connu sous le nom de
|
|
ns1.foobar.net.</para>
|
|
|
|
<para>Le fichier <filename>/etc/named.conf</filename> devrait ressembler à
|
|
cela:</para>
|
|
|
|
<programlisting>
|
|
|
|
options {
|
|
directory "/var/named";
|
|
listen-on { 127.0.0.1 ; 192.0.2.177; };
|
|
transfer-format many-answers;
|
|
max-transfer-time-in 60;
|
|
|
|
allow-transfer {
|
|
// Servers allowed to request zone tranfers
|
|
<secondary NS IP>; };
|
|
};
|
|
|
|
logging {
|
|
channel xfer-log {
|
|
file "/var/log/named/bind-xfer.log";
|
|
print-category yes;
|
|
print-severity yes;
|
|
print-time yes;
|
|
severity info;
|
|
};
|
|
|
|
category xfer-in { xfer-log; };
|
|
category xfer-out { xfer-log; };
|
|
category notify { xfer-log; };
|
|
};
|
|
|
|
#
|
|
# This is the view presented to our internal systems
|
|
#
|
|
|
|
view "internal" {
|
|
#
|
|
# These are the clients that see this view
|
|
#
|
|
match-clients { 192.168.201.0/29;
|
|
192.168.202.0/29;
|
|
127.0.0.0/8;
|
|
192.0.2.176/32;
|
|
192.0.2.178/32;
|
|
192.0.2.179/32;
|
|
192.0.2.180/32; };
|
|
#
|
|
# If this server can't complete the request, it should use
|
|
# outside servers to do so
|
|
#
|
|
recursion yes;
|
|
|
|
zone "." in {
|
|
type hint;
|
|
file "int/root.cache";
|
|
};
|
|
|
|
zone "foobar.net" in {
|
|
type master;
|
|
notify no;
|
|
allow-update { none; };
|
|
file "int/db.foobar";
|
|
};
|
|
|
|
zone "0.0.127.in-addr.arpa" in {
|
|
type master;
|
|
notify no;
|
|
allow-update { none; };
|
|
file "int/db.127.0.0";
|
|
};
|
|
|
|
zone "201.168.192.in-addr.arpa" in {
|
|
type master;
|
|
notify no;
|
|
allow-update { none; };
|
|
file "int/db.192.168.201";
|
|
};
|
|
|
|
zone "202.168.192.in-addr.arpa" in {
|
|
type master;
|
|
notify no;
|
|
allow-update { none; };
|
|
file "int/db.192.168.202";
|
|
};
|
|
|
|
zone "176.2.0.192.in-addr.arpa" in {
|
|
type master;
|
|
notify no;
|
|
allow-update { none; };
|
|
file "db.192.0.2.176";
|
|
};
|
|
|
|
zone "177.2.0.192.in-addr.arpa" in {
|
|
type master;
|
|
notify no;
|
|
allow-update { none; };
|
|
file "db.192.0.2.177";
|
|
};
|
|
|
|
zone "178.2.0.192.in-addr.arpa" in {
|
|
type master;
|
|
notify no;
|
|
allow-update { none; };
|
|
file "db.192.0.2.178";
|
|
};
|
|
|
|
zone "179.2.0.192.in-addr.arpa" in {
|
|
type master;
|
|
notify no;
|
|
allow-update { none; };
|
|
file "db.206.124.146.179";
|
|
};
|
|
|
|
};
|
|
#
|
|
# This is the view that we present to the outside world
|
|
#
|
|
view "external" {
|
|
match-clients { any; };
|
|
#
|
|
# If we can't answer the query, we tell the client so
|
|
#
|
|
recursion no;
|
|
|
|
zone "foobar.net" in {
|
|
type master;
|
|
notify yes;
|
|
allow-update {none; };
|
|
file "ext/db.foobar";
|
|
};
|
|
|
|
zone "176.2.0.192.in-addr.arpa" in {
|
|
type master;
|
|
notify yes;
|
|
allow-update { none; };
|
|
file "db.192.0.2.176";
|
|
};
|
|
|
|
zone "177.2.0.192.in-addr.arpa" in {
|
|
type master;
|
|
notify yes;
|
|
allow-update { none; };
|
|
file "db.192.0.2.177";
|
|
};
|
|
|
|
zone "178.2.0.192.in-addr.arpa" in {
|
|
type master;
|
|
notify yes;
|
|
allow-update { none; };
|
|
file "db.192.0.2.178";
|
|
};
|
|
|
|
zone "179.2.0.192.in-addr.arpa" in {
|
|
type master;
|
|
notify yes;
|
|
allow-update { none; };
|
|
file "db.192.0.2.179";
|
|
};
|
|
};</programlisting>
|
|
|
|
<para>Voici les fichiers du répertoire <filename
|
|
class="directory">/var/named</filename> (ceux qui ne sont pas présentés
|
|
font en général partie de votre distribution BIND).</para>
|
|
|
|
<para><filename>db.192.0.2.176</filename> - Zone inverse (reverse) pour
|
|
l'interface externe du firewall</para>
|
|
|
|
<programlisting>; ############################################################
|
|
; Start of Authority (Inverse Address Arpa) for 192.0.2.176/32
|
|
; Filename: db.192.0.2.176
|
|
; ############################################################
|
|
@ 604800 IN SOA ns1.foobar.net. netadmin.foobar.net. (
|
|
2001102303 ; serial
|
|
10800 ; refresh (3 hour)
|
|
3600 ; retry (1 hour)
|
|
604800 ; expire (7 days)
|
|
86400 ) ; minimum (1 day)
|
|
;
|
|
; ############################################################
|
|
; Specify Name Servers for all Reverse Lookups (IN-ADDR.ARPA)
|
|
; ############################################################
|
|
@ 604800 IN NS ns1.foobar.net.
|
|
@ 604800 IN NS <name of secondary ns>.
|
|
;
|
|
; ############################################################
|
|
; Iverse Address Arpa Records (PTR's)
|
|
; ############################################################
|
|
176.2.0.192.in-addr.arpa. 86400 IN PTR firewall.foobar.net.</programlisting>
|
|
|
|
<para><filename>db.192.0.2.177</filename> - Zone inverse pour le serveur
|
|
www</para>
|
|
|
|
<programlisting>; ############################################################
|
|
; Start of Authority (Inverse Address Arpa) for 192.0.2.177/32
|
|
; Filename: db.192.0.2.177
|
|
; ############################################################
|
|
@ 604800 IN SOA ns1.foobar.net. netadmin.foobar.net. (
|
|
2001102303 ; serial
|
|
10800 ; refresh (3 hour)
|
|
3600 ; retry (1 hour)
|
|
604800 ; expire (7 days)
|
|
86400 ) ; minimum (1 day)
|
|
;
|
|
; ############################################################
|
|
; Specify Name Servers for all Reverse Lookups (IN-ADDR.ARPA)
|
|
; ############################################################
|
|
@ 604800 IN NS ns1.foobar.net.
|
|
@ 604800 IN NS <name of secondary ns>.
|
|
;
|
|
; ############################################################
|
|
; Iverse Address Arpa Records (PTR's)
|
|
; ############################################################
|
|
177.2.0.192.in-addr.arpa. 86400 IN PTR www.foobar.net.</programlisting>
|
|
|
|
<para><filename>db.192.0.2.178</filename> - Zone inverse du serveur
|
|
mail</para>
|
|
|
|
<programlisting>; ############################################################
|
|
; Start of Authority (Inverse Address Arpa) for 192.0.2.178/32
|
|
; Filename: db.192.0.2.178
|
|
; ############################################################
|
|
@ 604800 IN SOA ns1.foobar.net. netadmin.foobar.net. (
|
|
2001102303 ; serial
|
|
10800 ; refresh (3 hour)
|
|
3600 ; retry (1 hour)
|
|
604800 ; expire (7 days)
|
|
86400 ) ; minimum (1 day)
|
|
;
|
|
; ############################################################
|
|
; Specify Name Servers for all Reverse Lookups (IN-ADDR.ARPA)
|
|
; ############################################################
|
|
@ 604800 IN NS ns1.foobar.net.
|
|
@ 604800 IN NS <name of secondary ns>.
|
|
;
|
|
; ############################################################
|
|
; Iverse Address Arpa Records (PTR's)
|
|
; ############################################################
|
|
178.2.0.192.in-addr.arpa. 86400 IN PTR mail.foobar.net.</programlisting>
|
|
|
|
<para><filename>db.192.0.2.179</filename> - Zone inverse du serveur web
|
|
public de votre fille</para>
|
|
|
|
<programlisting>; ############################################################
|
|
; Start of Authority (Inverse Address Arpa) for 192.0.2.179/32
|
|
; Filename: db.192.0.2.179
|
|
; ############################################################
|
|
@ 604800 IN SOA ns1.foobar.net. netadmin.foobar.net. (
|
|
2001102303 ; serial
|
|
10800 ; refresh (3 hour)
|
|
3600 ; retry (1 hour)
|
|
604800 ; expire (7 days)
|
|
86400 ) ; minimum (1 day)
|
|
;
|
|
; ############################################################
|
|
; Specify Name Servers for all Reverse Lookups (IN-ADDR.ARPA)
|
|
; ############################################################
|
|
@ 604800 IN NS ns1.foobar.net.
|
|
@ 604800 IN NS <name of secondary ns>.
|
|
;
|
|
; ############################################################
|
|
; Iverse Address Arpa Records (PTR's)
|
|
; ############################################################
|
|
179.2.0.192.in-addr.arpa. 86400 IN PTR nod.foobar.net.</programlisting>
|
|
|
|
<para><filename>int/db.127.0.0</filename> - Zone inverse pour
|
|
localhost</para>
|
|
|
|
<programlisting>; ############################################################
|
|
; Start of Authority (Inverse Address Arpa) for 127.0.0.0/8
|
|
; Filename: db.127.0.0
|
|
; ############################################################
|
|
@ 604800 IN SOA ns1.foobar.net. netadmin.foobar.net. (
|
|
2001092901 ; serial
|
|
10800 ; refresh (3 hour)
|
|
3600 ; retry (1 hour)
|
|
604800 ; expire (7 days)
|
|
86400 ) ; minimum (1 day)
|
|
; ############################################################
|
|
; Specify Name Servers for all Reverse Lookups (IN-ADDR.ARPA)
|
|
; ############################################################
|
|
@ 604800 IN NS ns1.foobar.net.
|
|
|
|
; ############################################################
|
|
; Iverse Address Arpa Records (PTR's)
|
|
; ############################################################
|
|
1 86400 IN PTR localhost.foobar.net.</programlisting>
|
|
|
|
<para><filename>int/db.192.168.201</filename> - Zone inverse pour le
|
|
réseau local. Cela ne sera visible que depuis les clients internes</para>
|
|
|
|
<programlisting>; ############################################################
|
|
; Start of Authority (Inverse Address Arpa) for 192.168.201.0/29
|
|
; Filename: db.192.168.201
|
|
; ############################################################
|
|
@ 604800 IN SOA ns1.foobar.net netadmin.foobar.net. (
|
|
2002032501 ; serial
|
|
10800 ; refresh (3 hour)
|
|
3600 ; retry (1 hour)
|
|
604800 ; expire (7 days)
|
|
86400 ) ; minimum (1 day)
|
|
|
|
; ############################################################
|
|
; Specify Name Servers for all Reverse Lookups (IN-ADDR.ARPA)
|
|
; ############################################################
|
|
@ 604800 IN NS ns1.foobar.net.
|
|
; ############################################################
|
|
; Iverse Address Arpa Records (PTR's)
|
|
; ############################################################
|
|
1 86400 IN PTR gateway.foobar.net.
|
|
2 86400 IN PTR winken.foobar.net.
|
|
3 86400 IN PTR blinken.foobar.net.
|
|
4 86400 IN PTR nod.foobar.net.</programlisting>
|
|
|
|
<para><filename>int/db.192.168.202</filename> - Zone inverse de
|
|
l'interface DMZ du firewall</para>
|
|
|
|
<programlisting>; ############################################################
|
|
; Start of Authority (Inverse Address Arpa) for 192.168.202.0/29
|
|
; Filename: db.192.168.202
|
|
; ############################################################
|
|
@ 604800 IN SOA ns1.foobar.net netadmin.foobar.net. (
|
|
2002032501 ; serial
|
|
10800 ; refresh (3 hour)
|
|
3600 ; retry (1 hour)
|
|
604800 ; expire (7 days)
|
|
86400 ) ; minimum (1 day)
|
|
|
|
; ############################################################
|
|
; Specify Name Servers for all Reverse Lookups (IN-ADDR.ARPA)
|
|
; ############################################################
|
|
@ 604800 IN NS ns1.foobar.net.
|
|
|
|
; ############################################################
|
|
; Iverse Address Arpa Records (PTR's)
|
|
; ############################################################
|
|
1 86400 IN PTR dmz.foobar.net.</programlisting>
|
|
|
|
<para><filename>int/db.foobar </filename>- Forward zone pour les clients
|
|
internes.</para>
|
|
|
|
<programlisting>;##############################################################
|
|
; Start of Authority for foobar.net.
|
|
; Filename: db.foobar
|
|
;##############################################################
|
|
@ 604800 IN SOA ns1.foobar.net. netadmin.foobar.net. (
|
|
2002071501 ; serial
|
|
10800 ; refresh (3 hour)
|
|
3600 ; retry (1 hour)
|
|
604800 ; expire (7 days)
|
|
86400 ); minimum (1 day)
|
|
;############################################################
|
|
; foobar.net Nameserver Records (NS)
|
|
;############################################################
|
|
@ 604800 IN NS ns1.foobar.net.
|
|
|
|
;############################################################
|
|
; Foobar.net Office Records (ADDRESS)
|
|
;############################################################
|
|
localhost 86400 IN A 127.0.0.1
|
|
|
|
firewall 86400 IN A 192.0.2.176
|
|
www 86400 IN A 192.0.2.177
|
|
ns1 86400 IN A 192.0.2.177
|
|
mail 86400 IN A 192.0.2.178
|
|
|
|
gateway 86400 IN A 192.168.201.1
|
|
winken 86400 IN A 192.168.201.2
|
|
blinken 86400 IN A 192.168.201.3
|
|
nod 86400 IN A 192.168.201.4
|
|
|
|
dmz 86400 IN A 192.168.202.1</programlisting>
|
|
|
|
<para><filename>ext/db.foobar </filename>- Forward zone pour les clients
|
|
externes</para>
|
|
|
|
<programlisting>;##############################################################
|
|
; Start of Authority for foobar.net.
|
|
; Filename: db.foobar
|
|
;##############################################################
|
|
@ 86400 IN SOA ns1.foobar.net. netadmin.foobar.net. (
|
|
2002052901 ; serial
|
|
10800 ; refresh (3 hour)
|
|
3600 ; retry (1 hour)
|
|
604800 ; expire (7 days)
|
|
86400 ); minimum (1 day)
|
|
;############################################################
|
|
; Foobar.net Nameserver Records (NS)
|
|
;############################################################
|
|
@ 86400 IN NS ns1.foobar.net.
|
|
@ 86400 IN NS <secondary NS>.
|
|
;############################################################
|
|
; Foobar.net Foobar Wa Office Records (ADDRESS)
|
|
;############################################################
|
|
localhost 86400 IN A 127.0.0.1
|
|
;
|
|
; The firewall itself
|
|
;
|
|
firewall 86400 IN A 192.0.2.176
|
|
;
|
|
; The DMZ
|
|
;
|
|
ns1 86400 IN A 192.0.2.177
|
|
www 86400 IN A 192.0.2.177
|
|
mail 86400 IN A 192.0.2.178
|
|
;
|
|
; The Local Network
|
|
;
|
|
nod 86400 IN A 192.0.2.179
|
|
|
|
;############################################################
|
|
; Current Aliases for foobar.net (CNAME)
|
|
;############################################################
|
|
|
|
;############################################################
|
|
; foobar.net MX Records (MAIL EXCHANGER)
|
|
;############################################################
|
|
foobar.net. 86400 IN A 192.0.2.177
|
|
86400 IN MX 0 mail.foobar.net.
|
|
86400 IN MX 1 <backup MX>.</programlisting>
|
|
</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 ver 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 faire 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_fr.html">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>Modifiez <filename
|
|
class="directory">/etc/shorewall/</filename><filename><ulink
|
|
url="Documentation.htm#Routestopped">routestopped</ulink></filename> pour
|
|
y configurer les hôtes auxquels vous voulez accéder lorsque le firewall
|
|
est arrêté. <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>
|
|
</article> |