mirror of
https://gitlab.com/shorewall/code.git
synced 2024-11-30 19:43:45 +01:00
a44e4a46f8
git-svn-id: https://shorewall.svn.sourceforge.net/svnroot/shorewall/trunk@1143 fbd18981-670d-0410-9b5c-8dc0c1a9a2bb
1127 lines
40 KiB
XML
1127 lines
40 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
|
|
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
|
|
<article id="IPIP">
|
|
<articleinfo>
|
|
<title>Basic Two-Interface Firewall</title>
|
|
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Tom</firstname>
|
|
|
|
<surname>Eastep</surname>
|
|
</author>
|
|
</authorgroup>
|
|
|
|
<pubdate>2003-12-30</pubdate>
|
|
|
|
<copyright>
|
|
<year>2001-2003</year>
|
|
|
|
<holder>Thomas M. Eastep</holder>
|
|
</copyright>
|
|
|
|
<legalnotice>
|
|
<para>Permission is granted to copy, distribute and/or modify this
|
|
document under the terms of the GNU Free Documentation License, Version
|
|
1.2 or any later version published by the Free Software Foundation; with
|
|
no Invariant Sections, with no Front-Cover, and with no Back-Cover
|
|
Texts. A copy of the license is included in the section entitled "<ulink
|
|
url="GnuCopyright.htm">GNU Free Documentation License</ulink>".</para>
|
|
</legalnotice>
|
|
</articleinfo>
|
|
|
|
<note>
|
|
<para><emphasis role="underline">Notes du traducteur :</emphasis> Je ne
|
|
prétends pas être un vrai traducteur dans le sens ou mon travail n'est
|
|
pas des plus précis (loin de là...). Je ne me suis pas attaché à une
|
|
traduction exacte du texte, mais plutôt à en faire une version française
|
|
intelligible par tous (et par moi). Les termes techniques sont la plupart
|
|
du temps conservés sous leur forme originale et mis entre parenthèses car
|
|
vous pouvez les retrouver dans le reste des documentations ainsi que dans
|
|
les fichiers de configuration. N'hésitez pas à me contacter afin
|
|
d'améliorer ce document <ulink url="mailto:vetsel.patrice@wanadoo.fr">VETSEL
|
|
Patrice</ulink> (merci à JMM pour sa relecture et ses commentaires
|
|
pertinents, ainsi qu'à Tom EASTEP pour son formidable outil et sa
|
|
disponibilité).</para>
|
|
</note>
|
|
|
|
<section id="Documentation">
|
|
<title>Introduction</title>
|
|
|
|
<para>Mettre en place un système Linux en tant que firewall pour un petit
|
|
réseau est une chose assez simple, si vous comprenez les bases et suivez
|
|
la documentation. Ce guide ne veut pas vous apprendre tous les rouages de
|
|
Shorewall. Il se focalise sur ce qui est nécessaire pour configurer
|
|
Shorewall, dans son utilisation la plus courante :</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Un système Linux utilisé en tant que firewall/routeur pour un
|
|
petit réseau local.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Une seule adresse IP publique.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Une connexion Internet par le biais d'un modem câble, ADSL,
|
|
ISDN, "Frame Relay", RTC ...</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Voici un schéma d'une installation typique.</para>
|
|
|
|
<graphic align="center" fileref="images/basics.png" />
|
|
|
|
<para><emphasis role="bold">Si vous faites tourner Shorewall sous Mandrake
|
|
9.0 ou plus récent, vous pouvez facilement réaliser la configuration
|
|
ci-dessus en utilisant l'applet Mandrake "Internet Connection
|
|
Sharing". Depuis le "Mandrake Control Center", sélectionnez
|
|
"Network & Internet" et "Connection Sharing". Vous ne
|
|
devriez pas avoir besoin de vous référer à ce guide.</emphasis></para>
|
|
|
|
<para>Ce guide suppose que vous avez le paquet iproute/iproute2
|
|
d'installé. Vous pouvez voir si le paquet est installé en vérifiant la
|
|
présence du programme ip sur votre système de firewall. Sous root,
|
|
utilisez la commande 'which' pour rechercher le programme :</para>
|
|
|
|
<programlisting> [root@gateway root]# which ip
|
|
/sbin/ip
|
|
[root@gateway root]#
|
|
</programlisting>
|
|
|
|
<para>Je vous recommande dans un premier temps de parcourir tout le guide
|
|
pour vous familiariser avec ce qu'il va se passer, et de revenir au
|
|
début en effectuant le changements dans votre configuration. Les points,
|
|
où les changements dans la configuration sont recommandées, sont signalés
|
|
par une <inlinegraphic fileref="images/BD21298_.gif" /></para>
|
|
|
|
<caution>
|
|
<para>Si vous éditez vos fichiers de configuration sur un système
|
|
Windows, vous devez les sauver comme des fichiers Unix si votre éditeur
|
|
supporte cette option sinon vous devez les faire passer par dos2unix
|
|
avant d'essayer de les utiliser. De la même manière, si vous copiez
|
|
un fichier de configuration depuis votre disque dur Windows vers une
|
|
disquette, vous devez lancer dos2unix sur la copie avant de
|
|
l'utiliser avec Shorewall.</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><ulink url="http://www.simtel.net/pub/pd/51438.html">Windows
|
|
Version of dos2unix</ulink></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink url="http://www.megaloman.com/%7Ehany/software/hd2u/">Linux
|
|
Version of dos2unix</ulink></para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</caution>
|
|
</section>
|
|
|
|
<section>
|
|
<title>Les Concepts de Shorewall</title>
|
|
|
|
<para><inlinegraphic fileref="images/BD21298_.gif" />Les fichiers de
|
|
configuration pour Shorewall sont situés dans le répertoire /etc/shorewall
|
|
-- pour de simples paramétrages, vous n'avez à faire qu'avec
|
|
quelques un d'entre eux comme décris dans ce guide. Après avoir <ulink
|
|
url="Install.htm">installé Shorewall</ulink>, <emphasis role="bold">téléchargez
|
|
<ulink url="http://www1.shorewall.net/pub/shorewall/Samples/">le
|
|
two-interface sample</ulink>, un-tarez le (tar -zxvf two-interface.tgz) et
|
|
copiez les fichiers vers /etc/shorewall (Ils remplaceront les fichiers de
|
|
même nom déjà existant dans /etc/shorewall installés lors de
|
|
l'installation de Shorewall)</emphasis>.</para>
|
|
|
|
<para>Parallèlement à la description, 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 tourne, comme un ensemble de zones.
|
|
Dans une configuration avec deux interfaces, les noms des zones suivantes
|
|
sont utilisés:</para>
|
|
|
|
<table>
|
|
<title>Zones</title>
|
|
|
|
<tgroup cols="2">
|
|
<tbody>
|
|
<row>
|
|
<entry align="left"><emphasis role="bold">Zone</emphasis></entry>
|
|
|
|
<entry align="left" role="underline"><emphasis role="bold">Descriptions</emphasis></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>net</entry>
|
|
|
|
<entry>Internet</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>loc</entry>
|
|
|
|
<entry>Votre réseau local</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>Les zones de Shorewall sont définies dans /etc/shorewall/zones.</para>
|
|
|
|
<para>Shorewall reconnaît aussi le système de firewall comme sa propre
|
|
zone - par défaut, le firewall est connu comme fw. Les règles à propos de
|
|
quel trafic autoriser, et de quel trafic interdire sont exprimées en terme
|
|
de zones.</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Vous exprimez votre politique par défaut pour les connexions
|
|
d'une zone vers une autre zone dans le fichier <ulink
|
|
url="Documentation.htm#Policy">/etc/shorewall/policy</ulink> .</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Vous définissez les exceptions à ces politiques pas défaut dans
|
|
le fichier <ulink url="Documentation.htm#Rules">/etc/shorewall/rules</ulink>.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Pour chaque connexion demandant à entrer dans le firewall, la
|
|
requête est en premier lieu comparée par rapport au fichier
|
|
/etc/shorewall/rules. Si aucune règle dans ce fichier ne correspond à la
|
|
demande de connexion alors la première politique dans le fichier
|
|
/etc/shorewall/policy qui y correspond sera appliquée. Si cette politique
|
|
est REJECT ou DROP la requête est dans un premier temps comparée par
|
|
rapport aux règles contenues dans /etc/shorewall/common. Le fichier
|
|
/etc/shorewall/policy inclue dans l'archive d'exemple
|
|
(two-interface) a les politiques suivantes:</para>
|
|
|
|
<table>
|
|
<title>/etc/shorewall/policy</title>
|
|
|
|
<tgroup cols="5">
|
|
<tbody>
|
|
<row>
|
|
<entry><emphasis role="bold">SOURCE ZONE</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">DESTINATION ZONE</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">POLICY</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">LOG LEVEL</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">LIMIT:BURST</emphasis></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>fw</entry>
|
|
|
|
<entry>net</entry>
|
|
|
|
<entry>ACCEPT</entry>
|
|
|
|
<entry></entry>
|
|
|
|
<entry></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>net</entry>
|
|
|
|
<entry>all</entry>
|
|
|
|
<entry>DROP</entry>
|
|
|
|
<entry>info</entry>
|
|
|
|
<entry></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>all</entry>
|
|
|
|
<entry>all</entry>
|
|
|
|
<entry>REJECT</entry>
|
|
|
|
<entry>info</entry>
|
|
|
|
<entry></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>Dans le fichier d'exemple (two-interface), la ligne suivante est
|
|
inclue mais elle est commentée. Si vous voulez que votre firewall puisse
|
|
avoir un accès complet aux serveurs sur Internet, décommentez la ligne.</para>
|
|
|
|
<table>
|
|
<title>/etc/shorewall/policy</title>
|
|
|
|
<tgroup cols="5">
|
|
<tbody>
|
|
<row>
|
|
<entry><emphasis role="bold">SOURCE ZONE</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">DESTINATION ZONE</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">POLICY</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">LOG LEVEL</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">LIMIT:BURST</emphasis></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>fw</entry>
|
|
|
|
<entry>net</entry>
|
|
|
|
<entry>accept</entry>
|
|
|
|
<entry></entry>
|
|
|
|
<entry></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>Ces politiques vont :</para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>permettre toutes demandes de connexion depuis le firewall vers
|
|
l'Internet</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>drop (ignorer) toutes les demandes de connexion depuis
|
|
l'Internet vers votre firewall</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Facultativement accepter toutes les demandes de connexion de
|
|
votre firewall vers l'Internet (si vous avez dé commenté la
|
|
politique additionnelle)</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>rejeter toutes les autres requêtes de connexion (Shorewall à
|
|
besoin de cette politique).</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
|
|
<para><inlinegraphic fileref="images/BD21298_.gif" />A ce point, éditez
|
|
votre /etc/shorewall/policy et faites y les changements que vous désirez.</para>
|
|
</section>
|
|
|
|
<section>
|
|
<title>Network Interfaces</title>
|
|
|
|
<graphic align="center" fileref="images/basics.png" />
|
|
|
|
<para>Le firewall a deux interfaces réseau. Lorsque la connexion Internet
|
|
passe par un modem câble ou par un routeur ADSL (pas un simple modem),
|
|
l'External Interface (interface externe) sera l'adaptateur
|
|
ethernet (<emphasis role="bold">eth0</emphasis>) qui y est connecté à
|
|
moins que vous vous connectiez par Point-to-Point Protocol over Ethernet
|
|
(PPPoE) ou Point-to-Point TunnelingProtocol(PPTP) dans ce cas
|
|
l'interface externe sera <emphasis role="bold">ppp0</emphasis>. Si
|
|
vous vous connectez par un simple modem (RTC), votre interface externe
|
|
sera aussi <emphasis role="bold">ppp0</emphasis>. Si vous vous connectez
|
|
en utilisant l'ISDN (numéris), votre interface externe sera <emphasis
|
|
role="bold">ippp0</emphasis>.</para>
|
|
|
|
<para>Si votre interface vers l'extérieur est <emphasis role="bold">ppp0</emphasis>
|
|
ou <emphasis role="bold">ippp0 </emphasis> alors vous mettrez CLAMPMSS=yes
|
|
dans /etc/shorewall/shorewall.conf.</para>
|
|
|
|
<para>Votre <emphasis>Internal Interface</emphasis> (interface vers votre
|
|
réseau local -> LAN) sera un adaptateur Ethernet (eth1 ou eth0) et
|
|
sera connectée à un hub ou switch (ou un PC avec un câble croisé). Vos
|
|
autres ordinateurs seront connectés à ce même hub/switch.</para>
|
|
|
|
<caution>
|
|
<para>Ne connectez pas l'interface interne et externe sur le même
|
|
hub ou switch (même pour tester). Cela ne fonctionnera pas et ne croyez
|
|
pas que ce soit shorewall qui ne marche pas.</para>
|
|
</caution>
|
|
|
|
<para><inlinegraphic fileref="images/BD21298_.gif" />Le fichier de
|
|
configuration d'exemple pour deux interfaces suppose que votre
|
|
interface externe est eth0et que l'interne est eth1. Si votre
|
|
configuration est différente, vous devrez modifier le fichier
|
|
/etc/shorewall/interfaces en conséquence. Tant que vous y êtes, vous
|
|
pourriez parcourir la liste des options qui sont spécifiées pour les
|
|
interfaces. Quelques trucs:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Si votre interface vers l'extérieur est <emphasis
|
|
role="bold">ppp0</emphasis> ou <emphasis role="bold">ippp0</emphasis>,
|
|
vous pouvez remplacer le "detect" dans la seconde colonne par
|
|
un "-".</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Si votre interface vers l'extérieur est <emphasis
|
|
role="bold">ppp0</emphasis> ou <emphasis role="bold">ippp0</emphasis>
|
|
ou si vous avez une adresse IP statique, vous pouvez enlever
|
|
"dhcp" dans la liste des options.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</section>
|
|
|
|
<section>
|
|
<title>Adresses IP</title>
|
|
|
|
<para>Avant d'aller plus loin, nous devons dire quelques mots au sujet
|
|
de Internet Protocol (IP) addresses. Normalement, votre fournisseur
|
|
Internet (ISP) vous assignera une seule adresse IP (single PublicIP
|
|
address). Cette adresse peut être assignée par le Dynamic Host
|
|
Configuration Protocol(DHCP) ou lors de l'établissement de votre
|
|
connexion lorsque vous vous connectez (modem standard) ou établissez votre
|
|
connexion PPP. Dans de rares cas , votre provider peut vous assigner une
|
|
adresse statique (staticIP address); cela signifie que vous devez
|
|
configurer l'interface externe de votre firewall afin d'utiliser
|
|
cette adresse de manière permanente. Votre adresse externe assignée, elle
|
|
va être partagée par tous vos systèmes lors de l'accès à Internet.
|
|
Vous devrez assigner vos propres adresses dans votre réseau local (votre
|
|
interface interne sur le firewall ainsi que les autres ordinateurs). La
|
|
RFC 1918 réserve plusieurs plages d'IP (PrivateIP address ranges) à
|
|
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><inlinegraphic fileref="images/BD21298_.gif" /> Avant de lancer
|
|
Shorewall, vous devriez regarder l'adresse IP de votre interface
|
|
externe, et si elle est dans les plages précédentes, vous devriez enlever
|
|
l'option 'norfc1918' dans la ligne concernant l'interface
|
|
externe dans le fichier /etc/shorewall/interfaces. Vous devrez assigner
|
|
vos adresses depuis le même sous-réseau (sub-network/subnet). Pour ce
|
|
faire, nous pouvons considérer un sous-réseau dans une plage
|
|
d'adresses x.y.z.0 - x.y.z.255. Chaque sous-réseau aura un masque
|
|
(Subnet Mask) de 255.255.255.0. L'adresse x.y.z.0 est réservée comme
|
|
l'adresse de sous-réseau (Subnet Address) et x.y.z.255 est réservée en
|
|
tant qu'adresse de broadcast (Subnet Broadcast Address). Dans
|
|
Shorewall, un sous-réseau est décrit en utilisant <ulink
|
|
url="shorewall_setup_guide.htm#Subnets">la notation Classless InterDomain
|
|
Routing (CIDR)</ulink> qui consiste en l'adresse du sous-réseau suivie
|
|
par "/24". Le "24" se réfère au nombre consécutif de bits
|
|
marquant "1" dans la partie gauche du masque de sous-réseau.</para>
|
|
|
|
<table>
|
|
<title>Un exemple de sous-réseau (sub-network) :</title>
|
|
|
|
<tgroup cols="2">
|
|
<tbody>
|
|
<row>
|
|
<entry><emphasis role="bold">Plage:</emphasis></entry>
|
|
|
|
<entry>10.10.10.0 - 10.10.10.255</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><emphasis role="bold">Subnet Address:</emphasis></entry>
|
|
|
|
<entry>10.10.10.0</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><emphasis role="bold">Broadcast Address:</emphasis></entry>
|
|
|
|
<entry>10.10.10.255</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><emphasis role="bold">CIDR Notation:</emphasis></entry>
|
|
|
|
<entry>10.10.10.0/24</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>Il est de mise d'assigner l'interface interne (LAN) à la
|
|
première adresse utilisable du sous-réseau (10.10.10.1 dans l'exemple
|
|
précédent) ou la dernière adresse utilisable (10.10.10.254). L'un des
|
|
buts d'un sous-réseau est de permettre à tous les ordinateurs dans le
|
|
sous-réseau de savoir avec quels autres ordinateurs ils peuvent
|
|
communiquer directement. Pour communiquer avec des systèmes en dehors du
|
|
sous-réseau, les ordinateurs envoient des paquets à travers le gateway
|
|
(routeur).</para>
|
|
|
|
<para><inlinegraphic fileref="images/BD21298_.gif" />Vos ordinateurs en
|
|
local (ordinateur 1 et ordinateur 2 dans le diagramme) devraient être
|
|
configurés avec leur passerelle par défaut (default gateway) pointant sur
|
|
l'adresse IP de l'interface interne du firewall.</para>
|
|
|
|
<para>The foregoing short discussion barely scratches the surface
|
|
regarding subnetting and routing. If you are interested in learning more
|
|
about IP addressing and routing, I highly recommend "IP Fundamentals:
|
|
What Everyone Needs to Know about Addressing & Routing", Thomas A.
|
|
Maufer, Prentice-Hall, 1999, ISBN 0-13-975483-0.</para>
|
|
|
|
<para>Le reste de ce guide assumera que vous avez configuré votre réseau
|
|
comme montré ci-dessous :</para>
|
|
|
|
<graphic align="center" fileref="images/basics1.png" />
|
|
|
|
<para>La passerelle par défaut pour les ordinateurs 1 et 2 devrait être
|
|
10.10.10.254.</para>
|
|
</section>
|
|
|
|
<section>
|
|
<title>IP Masquerading (SNAT)</title>
|
|
|
|
<para>Les adresses réservées par la RFC 1918 sont parfois désignées comme
|
|
non-routables car les routeurs Internet (backbone) ne font pas circuler
|
|
les paquets qui ont une adresse de destination appartenant à la RFC-1918.
|
|
Lorsqu'un de vos systèmes en local (supposons l'ordinateur1)
|
|
demande une connexion à un serveur par Internet, le firewall doit
|
|
appliquer un NAT (Network Address Translation). Le firewall ré écrit
|
|
l'adresse source dans le paquet, et l'a remplace par l'adresse
|
|
de l'interface externe du firewall; en d'autres mots, le firewall
|
|
fait croire que c'est lui même qui initie la connexion. Ceci est
|
|
nécessaire afin que l'hôte de destination soit capable de renvoyer les
|
|
paquets au firewall (souvenez vous que les paquets qui ont pour adresse de
|
|
destination, une adresse réservée par la RFC 1918 ne pourront pas être
|
|
routés à travers Internet, donc l'hôte Internet ne pourra adresser sa
|
|
réponse à l'ordinateur 1). Lorsque le firewall reçoit le paquet de
|
|
réponse, il remet l'adresse de destination à 10.10.10.1 et fait passer
|
|
le paquet vers l'ordinateur 1. Sur les systèmes Linux, ce procédé est
|
|
souvent appelé de l'IP Masquerading mais vous verrez aussi le terme de
|
|
Source Network Address Translation (SNAT) utilisé. Shorewall suit la
|
|
convention utilisée avec Netfilter:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><emphasis>Masquerade</emphasis> désigne le cas ou vous laissez
|
|
votre firewall détecter automatiquement l'adresse de
|
|
l'interface externe.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis>SNAT</emphasis> désigne le cas où vous spécifiez
|
|
explicitement l'adresse source des paquets sortant de votre réseau
|
|
local.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Sous Shorewall, autant le Masquerading que le SNAT sont configuré
|
|
avec des entrés dans le fichier /etc/shorewall/masq. Vous utiliserez
|
|
normalement le Masquerading si votre adresse IP externe est dynamique, et
|
|
SNAT si elle est statique.</para>
|
|
|
|
<para><inlinegraphic fileref="images/BD21298_.gif" />Si votre interface
|
|
externe du firewall est eth0, vous n'avez pas besoin de modifier le
|
|
fichier fourni avec l'exemple. Dans le cas contraire, éditez
|
|
/etc/shorewall/masq et changez la première colonne par le nom de votre
|
|
interface externe, et la seconde colonne par le nom de votre interface
|
|
interne.</para>
|
|
|
|
<para><inlinegraphic fileref="images/BD21298_.gif" />Si votre IP externe
|
|
est statique, vous pouvez la mettre dans la troisième colonne dans
|
|
/etc/shorewall/masq si vous le désirez, de toutes façons votre firewall
|
|
fonctionnera bien si vous laissez cette colonne vide. Le fait de mettre
|
|
votre IP statique dans la troisième colonne permet un traitement des
|
|
paquets sortant un peu plus efficace.</para>
|
|
|
|
<para><inlinegraphic fileref="images/BD21298_.gif" />Si vous utilisez les
|
|
paquets Debian, vérifiez que votre fichier de configuration shorewall.conf
|
|
contient bien les valeurs suivantes, si elles n'y sont pas faite les
|
|
changements nécessaires:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>NAT_ENABLED=Yes</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>IP_FORWARDING=On</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</section>
|
|
|
|
<section>
|
|
<title>Port Forwarding (DNAT)</title>
|
|
|
|
<para>Un de nos buts est de , peut être, faire tourner un ou plusieurs
|
|
serveurs sur nos ordinateurs locaux. Parce que ces ordinateurs on une
|
|
adresse RFC-1918, il n' est pas possible pour les clients sur Internet
|
|
de se connecter directement à eux. Il est nécessaire à ces clients
|
|
d'adresser leurs demandes de connexion au firewall qui ré écrit
|
|
l'adresse de destination de votre serveur, et fait passer le paquet à
|
|
celui-ci. Lorsque votre serveur répond, le firewall applique
|
|
automatiquement un SNAT pour ré écrire l'adresse source dans la
|
|
réponse.</para>
|
|
|
|
<para>Ce procédé est appelé Port Forwarding ou Destination Network Address
|
|
Translation(DNAT). Vous configurez le port forwarding en utilisant les
|
|
règles DNAT dans le fichier /etc/shorewall/rules.</para>
|
|
|
|
<para>La forme générale d'une simple règle de port forwarding dans
|
|
/etc/shorewall/rules est:</para>
|
|
|
|
<table>
|
|
<title>/etc/shorewall/rules</title>
|
|
|
|
<tgroup cols="7">
|
|
<tbody>
|
|
<row>
|
|
<entry><emphasis role="bold">ACTION</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">SOURCE</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">DESTINATION</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">PROTOCOL</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">PORT</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">SOURCE PORT</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">ORIGINAL DEST</emphasis></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>DNAT</entry>
|
|
|
|
<entry>net</entry>
|
|
|
|
<entry>loc:<emphasis><server local ip address>
|
|
[:<server port>]</emphasis></entry>
|
|
|
|
<entry><emphasis><protocol></emphasis></entry>
|
|
|
|
<entry><emphasis><port></emphasis></entry>
|
|
|
|
<entry></entry>
|
|
|
|
<entry></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>Exemple - vous faites tourner un serveur Web sur l'ordinateur 2
|
|
et vous voulez faire passer les requêtes TCP sur le port 80 à ce système :</para>
|
|
|
|
<table>
|
|
<title>/etc/shorewall/rules</title>
|
|
|
|
<tgroup cols="7">
|
|
<tbody>
|
|
<row>
|
|
<entry><emphasis role="bold">ACTION</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">SOURCE</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">DESTINATION</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">PROTOCOL</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">PORT</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">SOURCE PORT</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">ORIGINAL DEST</emphasis></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>DNAT</entry>
|
|
|
|
<entry>net</entry>
|
|
|
|
<entry>loc:10.10.10.2</entry>
|
|
|
|
<entry>tcp</entry>
|
|
|
|
<entry>80</entry>
|
|
|
|
<entry></entry>
|
|
|
|
<entry></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>Deux points importants à garder en mémoire :</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Vous devez tester la règle précédente depuis un client à
|
|
l'extérieur de votre réseau local (c.a.d., ne pas tester depuis un
|
|
navigateur tournant sur l'ordinateur 1 ou 2 ou sur le firewall).
|
|
Si vous voulez avoir la possibilité d'accéder à votre serveur web
|
|
en utilisant l'adresse IP externe de votre firewall, regardez
|
|
<ulink url="FAQ.htm#faq2">Shorewall FAQ #2</ulink>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Quelques fournisseurs Internet (Provider/ISP) bloquent les
|
|
requêtes entrantes de connexion sur le port 80. Si vous avez des
|
|
problèmes à vous connecter à votre serveur web, essayez la règle
|
|
suivante et connectez vous sur le port 5000.</para>
|
|
|
|
<table>
|
|
<title>/etc/shorewall/rules</title>
|
|
|
|
<tgroup cols="7">
|
|
<tbody>
|
|
<row>
|
|
<entry><emphasis role="bold">ACTION</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">SOURCE</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">DESTINATION</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">PROTOCOL</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">PORT</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">SOURCE PORT</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">ORIGINAL DEST</emphasis></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>DNAT</entry>
|
|
|
|
<entry>net</entry>
|
|
|
|
<entry>loc:10.10.10.2:80</entry>
|
|
|
|
<entry>tcp</entry>
|
|
|
|
<entry>5000</entry>
|
|
|
|
<entry></entry>
|
|
|
|
<entry></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para><inlinegraphic fileref="images/BD21298_.gif" />A ce point, modifiez
|
|
/etc/shorewall/rules pour ajouter les règles DNAT dont vous avez besoin.</para>
|
|
</section>
|
|
|
|
<section>
|
|
<title>Domain Name Server (DNS)</title>
|
|
|
|
<para>Normalement, quand vous vous connectez à votre fournisseur (ISP),
|
|
une partie consiste à obtenir votre adresse IP, votre DNS pour le firewall
|
|
(Domain Name Service) est configuré automatiquement (c.a.d.,le fichier
|
|
/etc/resolv.conf a été écrit). Il arrive que votre provider vous donne une
|
|
paire d'adresse IP pour les DNS (name servers) afin que vous
|
|
configuriez manuellement votre serveur de nom primaire et secondaire. La
|
|
manière dont le DNS est configuré sur votre firewall est de votre
|
|
responsabilité. Vous pouvez procéder d'une de ses deux façons :</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Vous pouvez configurer votre système interne pour utiliser les
|
|
noms de serveurs de votre provider. Si votre fournisseur vous donne
|
|
les adresses de leurs serveurs ou si ces adresses sont disponibles sur
|
|
leur site web, vous pouvez configurer votre système interne afin de
|
|
les utiliser. Si cette information n' est pas disponible, regardez
|
|
dans /etc/resolv.conf sur votre firewall -- les noms des serveurs sont
|
|
donnés dans l'enregistrement "nameserver" dans ce fichier.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><inlinegraphic fileref="images/BD21298_.gif" />Vous pouvez
|
|
configurer un cache dns (Caching Name Server) sur votre firewall. Red
|
|
Hat a un RPM pour mettre en cache un serveur de nom (le RPM requis
|
|
aussi le RPM 'bind') et pour les utilisateurs de Bering, il y
|
|
a dnscache.lrp. Si vous adoptez cette approche, vous configurez votre
|
|
système interne pour utiliser le firewall lui même comme étant le seul
|
|
serveur de nom primaire. Vous pouvez utiliser l'adresse IP interne
|
|
du firewall (10.10.10.254 dans l'exemple) pour l'adresse de
|
|
serveur de nom. Pour permettre à vos systèmes locaux de discuter avec
|
|
votre serveur cache de nom, vous devez ouvrir le port 53 (UDP ET TCP)
|
|
sur le firewall vers le réseau local; vous ferez ceci en ajoutant les
|
|
règles suivantes dans /etc/shorewall/rules.</para>
|
|
|
|
<table>
|
|
<title>/etc/shorewall/rules</title>
|
|
|
|
<tgroup cols="7">
|
|
<tbody>
|
|
<row>
|
|
<entry><emphasis role="bold">ACTION</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">SOURCE</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">DESTINATION</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">PROTOCOL</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">PORT</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">SOURCE PORT</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">ORIGINAL DEST</emphasis></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>ACCEPT</entry>
|
|
|
|
<entry>loc</entry>
|
|
|
|
<entry>fw</entry>
|
|
|
|
<entry>udp</entry>
|
|
|
|
<entry>53</entry>
|
|
|
|
<entry></entry>
|
|
|
|
<entry></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>ACCEPT</entry>
|
|
|
|
<entry>loc</entry>
|
|
|
|
<entry>fw</entry>
|
|
|
|
<entry>tcp</entry>
|
|
|
|
<entry>53</entry>
|
|
|
|
<entry></entry>
|
|
|
|
<entry></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</section>
|
|
|
|
<section>
|
|
<title>Autres connexions</title>
|
|
|
|
<para>Les fichiers exemples inclus dans l'archive (two-interface)
|
|
contiennent les règles suivantes :</para>
|
|
|
|
<table>
|
|
<title>/etc/shorewall/rules</title>
|
|
|
|
<tgroup cols="7">
|
|
<tbody>
|
|
<row>
|
|
<entry><emphasis role="bold">ACTION</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">SOURCE</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">DESTINATION</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">PROTOCOL</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">PORT</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">SOURCE PORT</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">ORIGINAL DEST</emphasis></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>ACCEPT</entry>
|
|
|
|
<entry>fw</entry>
|
|
|
|
<entry>net</entry>
|
|
|
|
<entry>udp</entry>
|
|
|
|
<entry>53</entry>
|
|
|
|
<entry></entry>
|
|
|
|
<entry></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>ACCEPT</entry>
|
|
|
|
<entry>fw</entry>
|
|
|
|
<entry>net</entry>
|
|
|
|
<entry>tcp</entry>
|
|
|
|
<entry>53</entry>
|
|
|
|
<entry></entry>
|
|
|
|
<entry></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>Ces règles autorisent l'accès DNS à partir de votre firewall et
|
|
peuvent être enlevées si vous avez dé commenté la ligne dans
|
|
/etc/shorewall/policy autorisant toutes les connexions depuis le firewall
|
|
vers Internet. Les exemples contiennent aussi :</para>
|
|
|
|
<table>
|
|
<title>/etc/shorewall/rules</title>
|
|
|
|
<tgroup cols="7">
|
|
<tbody>
|
|
<row>
|
|
<entry><emphasis role="bold">ACTION</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">SOURCE</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">DESTINATION</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">PROTOCOL</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">PORT</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">SOURCE PORT</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">ORIGINAL DEST</emphasis></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>ACCEPT</entry>
|
|
|
|
<entry>loc</entry>
|
|
|
|
<entry>fw</entry>
|
|
|
|
<entry>tcp</entry>
|
|
|
|
<entry>22</entry>
|
|
|
|
<entry></entry>
|
|
|
|
<entry></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>SCette règle vous autorise à faire tourner un serveur SSH sur votre
|
|
firewall et à vous y connecter depuis votre réseau local. Si vous voulez
|
|
permettre d'autres connexions entre votre firewall et d'autres
|
|
systèmes, la forme générale est :</para>
|
|
|
|
<table>
|
|
<title>/etc/shorewall/rules</title>
|
|
|
|
<tgroup cols="7">
|
|
<tbody>
|
|
<row>
|
|
<entry><emphasis role="bold">ACTION</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">SOURCE</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">DESTINATION</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">PROTOCOL</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">PORT</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">SOURCE PORT</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">ORIGINAL DEST</emphasis></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>ACCEPT</entry>
|
|
|
|
<entry><emphasis><source zone></emphasis></entry>
|
|
|
|
<entry><emphasis><destination zone></emphasis></entry>
|
|
|
|
<entry><emphasis><protocol></emphasis></entry>
|
|
|
|
<entry><emphasis><port></emphasis></entry>
|
|
|
|
<entry></entry>
|
|
|
|
<entry></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>Exemple - Vous voulez faire tourner un serveur Web sur votre
|
|
firewall :</para>
|
|
|
|
<table>
|
|
<title>/etc/shorewall/rules</title>
|
|
|
|
<tgroup cols="7">
|
|
<tbody>
|
|
<row>
|
|
<entry><emphasis role="bold">ACTION</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">SOURCE</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">DESTINATION</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">PROTOCOL</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">PORT</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">SOURCE PORT</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">ORIGINAL DEST</emphasis></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>ACCEPT</entry>
|
|
|
|
<entry>loc</entry>
|
|
|
|
<entry>fw</entry>
|
|
|
|
<entry>tcp</entry>
|
|
|
|
<entry>80</entry>
|
|
|
|
<entry></entry>
|
|
|
|
<entry></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>ACCEPT</entry>
|
|
|
|
<entry>net</entry>
|
|
|
|
<entry>fw</entry>
|
|
|
|
<entry>tcp</entry>
|
|
|
|
<entry>80</entry>
|
|
|
|
<entry></entry>
|
|
|
|
<entry></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>Ces deux règles bien sûr viennent s'ajouter aux règles décrites
|
|
précédemment dans "Vous pouvez configurer un cache dns (Caching Name
|
|
Server) sur votre firewall"</para>
|
|
|
|
<para>Si vous ne savez pas quel port et quel protocole une application
|
|
particulière utilise, regardez <ulink url="ports.htm">ici</ulink>.</para>
|
|
|
|
<para>Important: Je ne vous recommande pas de permettre le telnet depuis
|
|
ou vers Internet car il utilise du texte en clair (même pour le login et
|
|
le mot de passe!). Si vous voulez un accès au shell sur votre firewall
|
|
depuis Internet, utilisez SSH :</para>
|
|
|
|
<table>
|
|
<title>/etc/shorewall/rules</title>
|
|
|
|
<tgroup cols="7">
|
|
<tbody>
|
|
<row>
|
|
<entry><emphasis role="bold">ACTION</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">SOURCE</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">DESTINATION</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">PROTOCOL</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">PORT</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">SOURCE PORT</emphasis></entry>
|
|
|
|
<entry><emphasis role="bold">ORIGINAL DEST</emphasis></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>ACCEPT</entry>
|
|
|
|
<entry>net</entry>
|
|
|
|
<entry>fw</entry>
|
|
|
|
<entry>tcp</entry>
|
|
|
|
<entry>22</entry>
|
|
|
|
<entry></entry>
|
|
|
|
<entry></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para><inlinegraphic fileref="images/BD21298_.gif" /> Maintenant éditez
|
|
votre fichier /etc/shorewall/rules pour ajouter ou supprimer les
|
|
connexions voulues.</para>
|
|
</section>
|
|
|
|
<section>
|
|
<title>Lancer et Arrêter son Firewall</title>
|
|
|
|
<para>La <ulink url="Install.htm">procédure d'installation</ulink>
|
|
configure votre système pour lancer Shorewall au boot du système, mais au
|
|
début avec la version 1.3.9 de Shorewall le lancement est désactivé,
|
|
n'essayer pas de lancer Shorewall avec que la configuration soit
|
|
finie. Une fois que vous en aurez fini avec la configuration du firewall,
|
|
vous pouvez permettre le lancement de Shorewall en supprimant le fichier
|
|
/etc/shorewall/startup_disabled.</para>
|
|
|
|
<para><emphasis role="bold">IMPORTANT: Les utilisateurs des paquets .deb
|
|
doivent éditer /etc/default/shorewall et mettre 'startup=1'.</emphasis></para>
|
|
|
|
<para>Le firewall est activé en utilisant la commande "shorewall
|
|
start" et arrêté avec "shorewall stop". Lorsque le firewall
|
|
est stoppé, le routage est autorisé sur les hôtes qui possèdent une entrée
|
|
dans <ulink url="Documentation.htm#Routestopped">/etc/shorewall/routestopped</ulink>.
|
|
Un firewall qui tourne peut être relancé en utilisant la commande
|
|
"shorewall restart". Si vous voulez enlever toutes traces de
|
|
Shorewall sur votre configuration de Netfilter, utilisez "shorewall
|
|
clear".</para>
|
|
|
|
<para><inlinegraphic fileref="images/BD21298_.gif" /> Les exemples
|
|
(two-interface) supposent que vous voulez permettre le routage depuis ou
|
|
vers eth1 (le réseau local) lorsque Shorewall est stoppé. Si votre réseau
|
|
local n' est pas connecté à eth1 ou si vous voulez permettre
|
|
l'accès depuis ou vers d'autres hôtes, changez
|
|
/etc/shorewall/routestopped en conséquence.</para>
|
|
|
|
<para><emphasis role="bold">ATTENTION:</emphasis> Si vous êtes connecté à
|
|
votre firewall depuis Internet, n'essayez pas une commande
|
|
"shorewall stop" tant que vous n'avez pas ajouté une entrée
|
|
pour votre adresse IP (celle à partir de laquelle vous êtes connectée)
|
|
dans<ulink url="Documentation.htm#Routestopped">
|
|
/etc/shorewall/routestopped</ulink>. De la même manière, je ne vous
|
|
recommande pas d'utiliser "shorewall restart"; 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
|
|
"<ulink url="starting_and_stopping_shorewall.htm">shorewall try</ulink>".</para>
|
|
</section>
|
|
</article> |