Standalone Firewall
Tom
Eastep
2003-12-08
2001-2003
Thomas M. Eastep
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 "GNU Free Documentation License".
Notes du traducteur : 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 VETSEL
Patrice (merci à JMM pour sa relecture et ses commentaires
pertinents, ainsi qu'à Tom EASTEP pour son formidable outil et sa
disponibilité).
Introduction
Mettre en place un système Linux en tant que firewall (écluse) 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 :
Un système Linux
Une seule adresse IP externe
Une connexion passant par un modem câble, ADSL, ISDN, Frame
Relay, rtc...
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 :
[root@gateway root]# which ip
/sbin/ip
[root@gateway root]#
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
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.
Windows
Version of dos2unix
Linux
Version of dos2unix
Les Concepts de Shorewall
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 installé Shorewall, téléchargez
le
one-interface sample, un-tarez le (tar -zxvf one-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).
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.
Shorewall voit le réseau où il tourne comme composé par un ensemble
de zones. Dans les fichiers de configuration fournis pour une unique
interface, une seule zone est définie :
Zones
Zone
Description
net
Internet
Les zones de Shorewall sont définies dans /etc/shorewall/zones.
Shorewall reconnaît aussi le système de firewall comme sa propre
zone - par défaut, le firewall lui-même est connu en tant que fw.
Les règles concernant le trafic à autoriser ou à interdire sont
exprimées en utilisant les termes de zones.
/etc/shorewall/policy
SOURCE ZONE
DESTINATION ZONE
POLICY
LOG LEVEL
LIMIT:BURST
fw
net
ACCEPT
net
all
DROP
info
all
all
REJECT
info
Ces politiques vont :
permettre toutes demandes de connexion depuis le firewall vers
l'Internet
drop (ignorer) toutes les demandes de connexion depuis
l'Internet vers votre firewall
rejeter toutes les autres requêtes de connexion (Shorewall à
besoin de cette politique).
A ce point, éditez
votre /etc/shorewall/policy et faites y les changements que vous désirez.
Interface Externe
Le firewall possède une seule interface 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 (eth0) 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 ppp0. Si
vous vous connectez par un simple modem (RTC), votre interface externe
sera aussi ppp0. Si vous vous connectez
en utilisant l'ISDN (numéris), votre interface externe sera ippp0.
L'exemple de
configuration de Shorewall pour une interface suppose que votre interface
externe est eth0. Si votre configuration
est différente, vous devrez modifier le fichier d'exemple
/etc/shorewall/interfaces en conséquence. Puisque vous y êtes, vous
pourriez parcourir la liste d'options qui sont spécifiées pour
l'interface. Quelques astuces :
Si votre interface externe est ppp0
ou ippp0, vous pouvez remplacer le
"detect" dans la seconde colonne par un "-".
Si votre interface externe est ppp0
ou ippp0 ou bien si vous avez une
adresse IP statique, vous pouvez enlever le "dhcp" de la liste
d'option.
Adresse IP
La RFC 1918 définie plusieurs plage d'adresses IP privée
(PrivateIP) pour l'utilisation dans des réseaux privés :
10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255
Ces adresses sont parfois désignées comme étant non-routables car
les routeurs sur les backbones Internet ne font pas passer les paquets
dont les adresses de destinations sont définies dans la RFC 1918. Dans
certains cas, les fournisseurs (provider ou ISP) utilisent ces adresses et
utilisent le Network Address Translation afin de récrire les entêtes des
paquets lorsqu'ils les font circuler depuis ou vers l'Internet.
Avant de lancer
Shorewall, vous devriez regarder l'adresse de votre interface externe
et si elle est comprise dans une des plages précédentes, vous devriez
enlever l'option 'norfc1918' dans le fichier
/etc/shorewall/interfaces.
Permettre d'autres connexions
Si vous désirez autoriser d'autres connexions depuis
l'Internet vers votre firewall, le format général est :/etc/shorewall/rulesACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL
DEST
ACCEPTnetfw<protocol><port>
Exemple - Vous voulez faire tourner un serveur Web et un serveur
POP3 sur votre système de firewall :
/etc/shorewall/rules
ACTION
SOURCE
DESTINATION
PROTOCOL
PORT
SOURCE PORT
ORIGINAL DEST
ACCEPT
net
fw
tcp
80
ACCEPT
net
fw
tcp
110
Si vous ne savez pas quel port ou protocole une application
particulière utilise, regardez ici.
Important: Je ne vous recommande pas
d'autoriser le telnet depuis ou vers l'Internet car il utilise du
texte en clair (même pour le login et le mot de passe !). Si vous voulez
avoir un accès au shell de votre firewall depuis Internet, utilisez SSH :
/etc/shorewall/rules
ACTION
SOURCE
DESTINATION
PROTOCOL
PORT
SOURCE PORT
ORIGINAL DEST
ACCEPT
net
fw
tcp
22
A ce point, éditez
/etc/shorewall/rules pour rajouter les autres connexions désirées.
Lancer et Arrêter son Firewall
La procédure d'installation
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.
IMPORTANT: Les utilisateurs des paquets .deb
doivent éditer /etc/default/shorewall et mettre 'startup=1'.
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 /etc/shorewall/routestopped.
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".
ATTENTION: 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
/etc/shorewall/routestopped. De la même manière, je ne vous
recommande pas d'utiliser "shorewall restart"; il est plus
intéressant de créer une
configuration alternative et de la tester en utilisant la commande
"shorewall try".