shorewall_code/docs-fr/bridge_fr.xml

653 lines
21 KiB
XML
Raw Normal View History

<?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 lang="fr">
<!--$Id$-->
<articleinfo>
<title>Shorewall et pont filtrant</title>
<subtitle>Version Fran<61>aise de <foreignphrase lang="en"><ulink
url="http://www.shorewall.net/bridge.html">Shorewall and Bridged
Firewalls</ulink></foreignphrase></subtitle>
<authorgroup>
<author>
<firstname>Tom</firstname>
<surname>Eastep</surname>
</author>
<othercredit role="translator">
<firstname>Guy</firstname>
<surname>Marcenac</surname>
<contrib>Adaptation fran<61>aise</contrib>
</othercredit>
</authorgroup>
<pubdate>2005-01-08</pubdate>
<copyright>
<year>2004-2006</year>
<holder>Thomas M. Eastep</holder>
<holder>Guy Marcenac</holder>
</copyright>
<legalnotice>
<para>Permission est accord<72>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<6C>rieure
publi<6C>e par la Free Software Foundation ; sans section Invariables, sans
premi<6D>re de Couverture, et sans texte de quatri<72>me de couverture. Une
copie de la pr<70>sente Licence est incluse dans la section intitul<75>e. Une
traduction fran<61>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<61>aise pour aider <20> votre compr<70>hension. Seul le texte
original en anglais pr<70>sent<6E> 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> Si vous
trouvez des erreurs ou si vous avez des am<61>liorations <20> apporter <20> cette
documentation vous pouvez <ulink url="mailto:guy@posteurs.com">me
contacter</ulink>.</para>
</note>
<caution>
<para><emphasis role="bold">Cet article s'applique <20> Shorewall 3.0 et <20>
ses versions ult<6C>rieures. Si vous utilisez une version plus ancienne de
Shorewall, r<>f<EFBFBD>rez-vous <20> la documentation s'appliquant <20> votre
version.</emphasis></para>
</caution>
<section>
<title>Contexte</title>
<para>Les syst<73>mes sur lesquels tourne Shorewall fonctionnent en g<>n<EFBFBD>ral
comme des routeurs. Dans le mod<6F>le de r<>f<EFBFBD>rence OSI (Open System
Interconnect), un routeur op<6F>re au niveau 3. Shorewall peut <20>galement <20>tre
d<>ploy<6F> sur un syst<73>me GNU Linux se comportant comme un pont (bridge). Les
ponts sont des <20>quipements de niveau 2 dans le mod<6F>le OSI (pensez <20> un
pont comme <20> un switch ethernet).</para>
<para>Voici quelques-unes des diff<66>rences entre les routeurs et les
ponts:</para>
<orderedlist>
<listitem>
<para>Les routeurs d<>terminent la destination d'un paquet en fonction
de l'adresse IP de destination alors que les ponts routent le trafic
en fonction de l'adresse MAC de destination de la trame
ethernet.</para>
</listitem>
<listitem>
<para>Par cons<6E>quent, les routeurs peuvent <20>tre connect<63>s <20> plusieurs
r<>seaux IP alors qu'un pont ne peut appartenir qu'<27> un seul
r<>seau.</para>
</listitem>
<listitem>
<para>Dans la plupart des configurations, les routeurs ne font pas
suivre les paquets de diffusion (broadcast) alors que les ponts le
font.</para>
<note>
<para>Les conditions dans lesquelles un routeur peut ou doit faire
suivre les paquets de diffusion sont d<>crites dans la section 4 de
la RFC 1812.</para>
</note>
</listitem>
</orderedlist>
</section>
<section>
<title>Pr<EFBFBD>-requis syst<73>me</title>
<para>N'importe quelle version de Shorewall fera l'affaire si vous avez
besoin d'un pont mais que vous n'avez pas besoin de restreindre le trafic
<20> travers ce pont. Pour plus de d<>tails, reportez vous <20> la <ulink
url="SimpleBridge.html">Documentation pour un pont simple</ulink>.</para>
<para>Pour utiliser Shorewall comme pont filtrant:</para>
<itemizedlist>
<listitem>
<para>Votre noyau doit <20>tre compil<69> avec le support pour les ponts
(CONFIG_BRIDGE=m ou CONFIG_BRIDGE=y).</para>
</listitem>
<listitem>
<para>Votre noyau doit <20>tre compil<69> avec le support pour les
correspondances physdev de Netfilter (CONFIG_IP_NF_MATCH_PHYSDEV=m ou
CONFIG_IP_NF_MATCH_PHYSDEV=y). Le support des correspondances physdev
est en standard dans le noyau 2.6 mais doit <20>tre patch<63> dans les
noyaux 2.4 (voir <ulink
url="http://linux-net.osdl.org/index.php/Bridge">icit</ulink>). Les
utilisateurs de Bering et de Bering uCLibc doivent trouver et
installer ipt_physdev.o pour leur distribution puis ajouter
<quote>ipt_physdev</quote> au fichier
<filename>/etc/modules</filename>.</para>
</listitem>
<listitem>
<para>Votre version d'<command>iptables</command> doit offrir le
support pour les correspondances physdev. Ceci est le cas avec
iptables 1.2.9 et toutes ses versions ult<6C>rieures.</para>
</listitem>
<listitem>
<para>Vous devez avoir install<6C> le paquetage des utilitaires pour les
ponts (bridge-utils).</para>
</listitem>
</itemizedlist>
</section>
<section>
<title>Application</title>
<para>Le diagramme au dessous pr<70>sente une application classique d'un
pont/firewall. Il y a d<>j<EFBFBD> un routeur install<6C> qui supporte un r<>seau
local sur son interface interne et vous voulez ins<6E>rer un firewall entre
ce routeur et les syst<73>mes de ce r<>seau local. Dans notre exemple, le
r<>seau local utilise des adresses de la RFC 1918 mais ceci n'est pas
obligatoire. Le pont marcherait de la m<>me fa<66>on si on utilisait des
adresses IP publiques (n'oubliez pas qu'un pont ne s'occupe pas d'adresses
IP).</para>
<graphic fileref="images/bridge.png" />
<para>Il existe des diff<66>rences cl<63> entre cette configuration et une
configuration normale de Shorewall:</para>
<itemizedlist>
<listitem>
<para>Le syst<73>me Shorewall Pont/Firewall ne poss<73>de qu'une seule
adresse IP m<>me si il dispose de deux interfaces ethernet ! Cette
adresse IP est configur<75>e sur le pont m<>me au lieu de l'<27>tre sur l'une
des cartes r<>seau.</para>
</listitem>
<listitem>
<para>Les syst<73>mes connect<63>s au LAN sont configur<75>s avec l'adresse du
routeur IP (192.168.1.254 dans notre exemple) comme passerelle par
d<>faut.</para>
</listitem>
<listitem>
<para><command>traceroute</command> ne d<>tectera pas le Pont/Firewall
comme un routeur interm<72>diaire</para>
</listitem>
<listitem>
<para>Si le routeur ex<65>cute un serveur DHCP, les h<>tes connect<63>s au
r<>seau local peuvent utiliser ce serveur sans avoir <20> ex<65>cuter
<command>dhcrelay</command> sure le Pont/Firewal.</para>
</listitem>
</itemizedlist>
<para>Voici d'autres possibilit<69>s -- Il pourrait y avoir un hub ou un
switch entre le routeur et le Pont/Firewall, et il pourrait y avoir
d'autres syst<73>mes connect<63>s <20> ce hub ou ce switch. Tous les syst<73>mes du
cot<6F> local du routeur devraient toujours <20>tre configur<75>s avec des adresses
IP prises dans 192.168.1./24.<graphic
fileref="images/bridge3.png" /></para>
</section>
<section>
<title>Configuration du pont</title>
<para>Configure le pont est une chose assez simple. On se sert de
l'utilitaire <command>brctl</command> issu du paquetage bridge-utils. Vous
trouverez des informations sur la configuration d'un pont <20> <ulink
url="http://linux-net.osdl.org/index.php/Bridge">http://linux-net.osdl.org/index.php/Bridge</ulink>.</para>
<para>Malheureusement peu de distributions Linux ont de bons outils de
configuration pour un pont et les outils de configuration r<>seau
graphiques ne d<>tectent pas la pr<70>sence d'un pont. Voici l'extrait d'un
fichier de configuration Debian pour un pont <20> deux interfaces et ayant
une adresse IP statique:</para>
<blockquote>
<programlisting>auto br0
iface br0 inet static
address 192.168.1.253
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
pre-up /sbin/ip link set eth0 up
pre-up /sbin/ip link set eth1 up
pre-up /usr/sbin/brctl addbr br0
pre-up /usr/sbin/brctl addif br0 eth0
pre-up /usr/sbin/brctl addif br0 eth1</programlisting>
</blockquote>
<para>Bien qu'il ne soit pas obligatoire de donner une adresse IP <20> un
pont, le faire permet au Pont/Firewall d'acc<63>der <20> d'autres syst<73>mes et
permet <20>galement l'administration distante du pont. Le pont doit aussi
avoir une adresse IP pour que les politiques et les r<>gles REJECT
fonctionnent correctement - sinon les r<>gles REJECT se comporteront
exactement de la m<>me mani<6E>re que des r<>gles DROP. Enfin, si un pont fait
partie d'un <link linkend="bridge-router">Pont/Routeur</link>, il est
<20>galement indispensable de lui donner une adresse IP.</para>
<important>
<para>Avant de configurer Shorewall, assurerez-vous d'avoir un pont qui
fonctionne et qui se lance au boot.</para>
</important>
<para>On peut attribuer une adresse IP au pont par DHCP.</para>
<para>Voici un fichier
<filename>/etc/sysconfig/network/ifcfg-br0</filename> issu d'un syst<73>me
<trademark>SUSE</trademark>:</para>
<blockquote>
<programlisting>BOOTPROTO='dhcp'
REMOTE_IPADDR=''
STARTMODE='onboot'
UNIQUE='3hqH.MjuOqWfSZ+C'
WIRELESS='no'
MTU=''</programlisting>
</blockquote>
<para>Voici un fichier
/<filename>etc/sysconfig/network-scripts/ifcfg-br0</filename> issu d'un
syst<73>me <trademark>Mandriva</trademark>:</para>
<blockquote>
<programlisting>DEVICE=br0
BOOTPROTO=dhcp
ONBOOT=yes</programlisting>
</blockquote>
<para>Aussi bien sur les syst<73>mes SUSE que sur les syst<73>mes Mandriva, il
faudra un script s<>par<61> pour configurer le pont.</para>
<para>Voil<EFBFBD> les scripts dont je me sers sur un syst<73>me
<trademark>Suse</trademark> 9.1.</para>
<blockquote>
<para><filename>/etc/sysconfig/network/ifcfg-br0</filename></para>
<programlisting>BOOTPROTO='dhcp'
REMOTE_IPADDR=''
STARTMODE='onboot'
UNIQUE='3hqH.MjuOqWfSZ+C'
WIRELESS='no'
MTU=''</programlisting>
<para><filename>/etc/init.d/bridge</filename><programlisting>#!/bin/sh
################################################################################
# Script to create a bridge
#
# (c) 2004 - Tom Eastep (teastep@shorewall.net)
#
# Modify the following variables to match your configuration
#
#### BEGIN INIT INFO
# Provides: bridge
# Required-Start: coldplug
# Required-Stop:
# Default-Start: 2 3 5
# Default-Stop: 0 1 6
# Description: starts and stops a bridge
### END INIT INFO
#
# chkconfig: 2345 05 89
# description: GRE/IP Tunnel
#
################################################################################
PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin
INTERFACES="eth1 eth0"
BRIDGE="br0"
MODULES="tulip"
do_stop() {
echo "Stopping Bridge $BRIDGE"
brctl delbr $BRIDGE
for interface in $INTERFACES; do
ip link set $interface down
done
}
do_start() {
echo "Starting Bridge $BRIDGE"
for module in $MODULES; do
modprobe $module
done
sleep 5
for interface in $INTERFACES; do
ip link set $interface up
done
brctl addbr $BRIDGE
for interface in $INTERFACES; do
brctl addif $BRIDGE $interface
done
}
case "$1" in
start)
do_start
;;
stop)
do_stop
;;
restart)
do_stop
sleep 1
do_start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0</programlisting></para>
</blockquote>
<para>Voici une contribution de Axel Westerhold qui propose cet exemple de
configuration d'un pont ayant une adresse statique sur un syst<73>me Fedora
(Core 1 and Core 2 Test 1). Remarquez que ces fichiers configurent
<20>galement le pont ce qui <20>vite d'avoir <20> <20>crire un script de configuration
s<>par<61>.</para>
<blockquote>
<para><filename>/etc/sysconfig/network-scripts/ifcfg-br0:</filename></para>
<programlisting>DEVICE=br0
TYPE=Bridge
IPADDR=192.168.50.14
NETMASK=255.255.255.0
ONBOOT=yes</programlisting>
<para><filename>/etc/sysconfig/network-scripts/ifcfg-eth0:</filename><programlisting>DEVICE=eth0
TYPE=ETHER
BRIDGE=br0
ONBOOT=yes</programlisting><filename>/etc/sysconfig/network-scripts/ifcfg-eth1:</filename><programlisting>DEVICE=eth1
TYPE=ETHER
BRIDGE=br0
ONBOOT=yes</programlisting></para>
</blockquote>
<para>Florin Grad de <trademark>Mandriva</trademark> fournit ce script
pour configurer un pont:</para>
<blockquote>
<programlisting>#!/bin/sh
# chkconfig: 2345 05 89
# description: Layer 2 Bridge
#
[ -f /etc/sysconfig/bridge ] &amp;&amp; . /etc/sysconfig/bridge
PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin
do_stop() {
echo "Stopping Bridge"
for i in $INTERFACES $BRIDGE_INTERFACE ; do
ip link set $i down
done
brctl delbr $BRIDGE_INTERFACE
}
do_start() {
echo "Starting Bridge"
for i in $INTERFACES ; do
ip link set $i up
done
brctl addbr br0
for i in $INTERFACES ; do
ip link set $i up
brctl addif br0 $i
done
ifup $BRIDGE_INTERFACE
}
case "$1" in
start)
do_start
;;
stop)
do_stop
;;
restart)
do_stop
sleep 1
do_start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0</programlisting>
<para>Le fichier <filename>/etc/sysconfig/bridge</filename>:</para>
<programlisting>BRIDGE_INTERFACE=br0 #The name of your Bridge
INTERFACES="eth0 eth1" #The physical interfaces to be bridged</programlisting>
</blockquote>
<para>Andrzej Szelachowski a propos<6F> la contribution suivante:</para>
<blockquote>
<programlisting>Here is how I configured bridge in Slackware:
1) I had to compile bridge-utils (It's not in the standard distribution)
2) I've created rc.bridge in /etc/rc.d:
#########################
#! /bin/sh
ifconfig eth0 0.0.0.0
ifconfig eth1 0.0.0.0
#ifconfig lo 127.0.0.1 #this line should be uncommented if you don't use rc.inet1
brctl addbr most
brctl addif most eth0
brctl addif most eth1
ifconfig most 192.168.1.31 netmask 255.255.255.0 up
#route add default gw 192.168.1.1 metric 1 #this line should be uncommented if
#you don't use rc.inet1
#########################
3) I made rc.brige executable and added the following line to /etc/rc.d/rc.local
/etc/rc.d/rc.bridge </programlisting>
</blockquote>
<para>Joshua Schmidlkofer a <20>crit:</para>
<blockquote>
<programlisting>Bridge Setup for Gentoo
#install bridge-utils
emerge bridge-utils
## create a link for net.br0
cd /etc/init.d
ln -s net.eth0 net.br0
# Remove net.eth*, add net.br0 and bridge.
rc-update del net.eth0
rc-update del net.eth1
rc-update add net.br0 default
rc-update add bridge boot
/etc/conf.d/bridge:
#bridge contains the name of each bridge you want created.
bridge="br0"
# bridge_&lt;bridge&gt;_devices contains the devices to use at bridge startup.
bridge_br0_devices="eth0 eth1"
/etc/conf.d/net
iface_br0="10.0.0.1 broadcast 10.0.0.255 netmask 255.255.255.0"
#for dhcp:
#iface_br0="dhcp"
#comment this out if you use dhcp.
gateway="eth0/10.0.0.1" </programlisting>
</blockquote>
<para>Les utilisateurs qui r<>ussissent dans la configuration d'un pont sur
d'autres distributions que celles pr<70>sent<6E>es plus haut, sont encourag<61>s <20>
<ulink url="mailto:webmaster@shorewall.net">m'envoyer</ulink> leurs
configurations afin que je puisse les publier ici.</para>
</section>
<section>
<title>Configuration de Shorewall</title>
<para>Dans Shorewall, on active le mode Pont avec l'option BRIDGING du
fichier <filename>/etc/shorewall/shorewall.conf</filename>:</para>
<programlisting>BRIDGING=Yes</programlisting>
<para>Dans le sc<73>nario pr<70>sent<6E> plus haut, il y aurait probablement deux
zones d<>finies. - une pour internet et une pour le r<>seau local, ce qui
donnerait un fichier <filename>/etc/shorewall/zones</filename> comme
celui-ci:</para>
<programlisting>#ZONE TYPE OPTIONS
fw firewall
net ipv4
loc ipv4
#LAST LINE - ADD YOUR ENTRIES ABOVE THIS ONE - DO NOT REMOVE</programlisting>
<para>Une politique habituelle <20> deux zones est parfaitement adapt<70>e <20> ce
cas &mdash; <filename>/etc/shorewall/policy</filename>:</para>
<programlisting>#SOURCE DEST POLICY LOG LIMIT:BURST
loc net ACCEPT
net all DROP info
all all REJECT info
#LAST LINE - ADD YOUR ENTRIES ABOVE THIS ONE - DO NOT REMOVE</programlisting>
<para>Puisque c'est le pont lui-m<>me qui est configur<75> avec une adresse
IP, seul ce dispositif doit <20>tre d<>fini pour Shorewall dans
<filename>/etc/shorewall/interfaces</filename>:</para>
<programlisting>#ZONE INTERFACE BROADCAST OPTIONS
- br0 192.168.1.255
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE</programlisting>
<para>Les zones sont d<>finies en utilisant le fichier
<filename>/etc/shorewall/hosts</filename>. En supposant que le routeur est
connect<63> <20> <filename class="devicefile">eth0</filename> et que le switch
est connect<63> <20> <filename class="devicefile">eth1</filename>:</para>
<programlisting>#ZONE HOST(S) OPTIONS
net br0:eth0
loc br0:eth1
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS LINE -- DO NOT REMOVE</programlisting>
<para>M<EFBFBD>me lorsque Shorewall est arr<72>t<EFBFBD>, vous voudrez probablement
autoriser le trafic <20> transiter par le pont &mdash;
<filename><filename>/etc/shorewall/routestopped</filename></filename>:</para>
<programlisting>#INTERFACE HOST(S) OPTIONS
br0 192.168.1.0/24 routeback
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE</programlisting>
<para>Pour la d<>finition de votre jeu de r<>gles pour votre firewall, vous
pouvez prendre comme point de d<>part le fichier
<filename>/etc/shorewall/rules</filename> pr<70>sent<6E> dans l'exemple de
Firewall <20> Deux Interfaces.</para>
</section>
<section id="bridge-router">
<title>Combinaison Pont/Routeur</title>
<para>Un syst<73>me Shorewall n'a pas <20> s'ex<65>cuter exclusivement comme un
pont ou bien comme un routeur -- il peut parfaitement faire les deux.
Voici un exemple:<graphic fileref="images/bridge2.png" /></para>
<para>Il s'agit quasiment de la m<>me configuration que celle pr<70>sent<6E>e
dans le <ulink url="shorewall_setup_guide_fr.htm">Guide de Configuration
de Shorewall</ulink> si ce n'est que la DMZ utilise un pont plut<75>t qu'un
Proxy ARP. Les modifications <20> apporter <20> la configuration pr<70>sent<6E>e dans
le Guide de Configuration sont les suivants:</para>
<orderedlist>
<listitem>
<para>Le fichier <filename>/etc/shorewall/proxyarp</filename> doit
<20>tre vide dans cette configuration.</para>
</listitem>
<listitem>
<para>Le fichier <filename>/etc/shorewall/interfaces</filename>
ressemble <20> ceci:<programlisting>#ZONE INTERFACE BROADCAST OPTIONS
- br0 detect routefilter
loc eth1 detect</programlisting></para>
</listitem>
<listitem>
<para>Le fichier <filename>/etc/shorewall/hosts</filename> devrait
avoir:</para>
<programlisting>#ZONE HOSTS OPTIONS
net br0:eth0
dmz br0:eth2</programlisting>
</listitem>
<listitem>
<para>Les syst<73>mes en DMZ ont besoin d'avoir une route par 192.0.2.176
vers le r<>seau 192.168.201.0/24 afin qu'ils puissent communiquer avec
le r<>seau local.</para>
</listitem>
</orderedlist>
</section>
<section>
<title>Limites</title>
<para>Avec certaines cartes sans fil, le mode pont ne fonctionne pas
&mdash; vous pouvez regarder <20> <ulink
url="http://linux-net.osdl.org/index.php/Bridge">http://linux-net.osdl.org/index.php/Bridge</ulink>.</para>
</section>
<section>
<title>Liens</title>
<itemizedlist>
<listitem>
<para><ulink
url="http://wiki.buenosaireslibre.org/HowTos_2fBridgedFirewall">Vous
trouverez ici un article en Espagnol</ulink> qui pr<70>sente de mani<6E>re
d<>taill<6C>e comment <quote>ponter</quote> un r<>seau public et un r<>seau
local avec Shorewall. Il s'agit d'une autre configuration en
Pont/Routeur.</para>
</listitem>
</itemizedlist>
</section>
</article>