logo banniere

S'il n'y a pas de solution c'est qu'il n'y a pas de problème!


Partage et pare_feu



NB: Une version "iptables" de ce pare_feu existe chez www.suse.de/~marc
La plupart des explications ci dessous sont valables.

En guise d'introduction

Plutôt que de re-expliquer une n-ième fois (ce qui est très bien fait par ailleurs) l'utilisation de IPCHAINS, (voir par exemple www.funix.org), je propose à l'usage des "moins gourous" le script de marc at suse.de.
Téléchargez la version 5.0 développée par Marc (version du 26 Juin 2001).
Ce script a des tas d'avantages, comme par exemple de disposer d'un script d'intallation, d'être utilisable sur toutes les distributions à condition qu'elles disposent d'un processus de démarrage du type SysV , et de permettre des configurations assez complètes, avec quelques mots clés, entre le pare-feu, réseaux internes, réseaux "domestiques" ou "démilitarisés" (traductions variées de DMZ network), internet, et des réseaux "sûrs" bien qu'externes.
Vérifiez les mises à jour sur www.suse.de/~marc.


Installation

Détarez le fichier (tar -zxf SuSEfirewall-5.0.tar.gz), allez dans le répertoire obtenu, lisez la doc (oui AVANT d'installer!) et lancez ./install (tout ça sous root).Ci dessous figurent quelques explications des principaux mots clés. Si vous coinciez, un mail tnka at linux-sottises.net est toujours possible!

Autres packages nécessaires

Vous avez besoin de:

  • bash
  • perl
  • lsof
  • ipchains

que vous devriez trouver sans mal sur votre distribution.

Configuration du noyau

Options valables pour noyau 2.2.12...
Il est nécessaire d'avoir un noyau compilé avec les options suivantes (en plus de vos autres options "standard")

  • General setup
    • Networking support
    • Sysclt support
  • Networking
    • Packet socket
    • Kernel/User network link driver
    • Network firewalling
    • Netlink device emulation
    • Unix domains sockets
    • TCP/IP networking
    • IP firewalling
    • IP firewall packet netlink device
    • IP transparent proxying
    • IP masquerading
    • IP ICMP masquerading
    • IP optimize as router not host
    • IP SYN flood protection (c'est plus prudent)
    • IP allow large windows
  • Filesystems (en plus de tout ce qui vous est nécessaire
    • /proc

Faire aussi : echo "1" > /proc/sys/net/ipv4/ip_forward depuis un terminal

Contenu du package

Les fichiers suivants sont installés:

  • Log du firewall : fichier /var/log/firewall
  • Test des ports : fichier /usr/sbin/openports
  • Fichier de configuration de base : fichier /etc/rc.config.d/firewall.rc.config
  • Fichier d'extension de configuration "personnelle" (pour "experts") :fichier /etc/rc.config.d/firewall-custom.rc.config
  • Script Firewall proprement dit : fichier /sbin/SuSEfirewall
  • .....

Quel fichier allez vous devoir lire et configurer : uniquement /etc/rc.config.d/firewall.rc.config et déclarer le démarrage du firewall dans /etc/rc.config (en fait le script d'installation fait cette dernière opération lui même)
Quel fichier allez vous devoir (éventuellement) utiliser : /sbin/SuSEfirewall (pour relancer ou arrêter le firewall)
Autre fichier auquel il faudra donner un coup d'oeil : /etc/services

Réseau interne - Réseau domestique - Internet - Firewall - Réseau de confiance

Le package firewals permet de définir 5 "réseaux" (ne paniquez pas, c'est simple)

  • Le firewall proprement dit (la machine sur laquelle vous installez firewals et qui sert aussi de passerelle par masquerade)
  • Un (ou des) réseau interne qui accède à Internet par l'intermédiaire de votre passerelle-firewall mais depuis lequel aucun service (web, mail ou autre) n'est disponible depuis internet
  • Un réseau "domestique" connecté à votre -passerelle-firewall et qui lui délivre des services vers Internet
  • Internet, le grand méchant, pour lequel vous allez pouvoir définir ce qu'il a le droit de faire "chez vous"
  • Un réseau de confiance, extérieur et donc sur Internet à qui vous "faites confiance" et à qui vous donnez plus "d'autorisations"

Vous n'êtes pas obligé d'utiliser tout ça, mais uniquement ce dont vous avez besoin!

Quelques mots sur les ports

Votre machine communique avec l'extérieur par des ports (sortes de canaux virtuels) qui sont numérotés de 1 à 65536.
Par exemple, lorsque vous accédez à une page web sur un ordinateur, cet accès se fait par le port 80, le mail smtp passe par le port 25 et telnet par le port 23.
Quand quelqu'un frappe à la porte de votre machine, c'est à l'un des ports qu'il s'adresse.
Chacun des ports demande en quelque sorte une "pièce d'identité" aux paquets qui essaient de rentrer dans votre machine et leur permettent ou non de "rentrer". Votre machine peut par ailleurs déclarer des ports inaccessibles, ou accessibles sous certaines conditions.
Il est facile d'imaginer que tous ces ports ne doivent pas avoir les mêmes "privilèges": ce n'est pas la même chose de demander une simple réponse à votre machine que de lui demander l'autorisation d'écrire sur son disque dur!
Ainsi, les ports de 1 à 1024 sont dits "privilégiés" (mail, telnet, ftp, web,...), il faut faire attention à leur ouverture sur l'extérieur.
Au delà, les ports s'appellent "ports hauts", et à moins que vous ne décidiez d'y associer des services "spéciaux" (comme webmin :( sur le port 10000), ils permettent "normalement" peu de choses sur votre machine.
Il existe en plus deux modes d'accès à ces ports tcp et udp, mais ce n'est pas la peine d'aller aussi loin pour configurer un pare-feu.

La liste des ports et le nom du service associé (21 telnet, 25 smtp, 80 www, etc) se trouve dans le fichier /etc/services.

Comme vous allez devoir décider quels services (et donc ports) sont disponibles depuis votre réseau interne ou depuis internet, il va bien falloir jeter un coup d'oeil à /etc/services.

Configuration

Première chose pour que le firewall-masquerade soit proprement lancé au démarrage, il faut que la ligne:

START_FW="yes"

figure dans le fichier /etc/rc.config, le script d'installation fait normalement ça pour vous. Si vous décidez de désinstaller il faudra enlever ça!

Toutes les options qui suivent doivent être déclarées dans le fichier /etc/rc.config.d/firewall.rc.config.
Pour chacune des options, vous pouvez soit la laisser vide ("") soit lui donner une valeur. Ci dessous, je "laisserai tomber" quelques options possibles et commentées dans le fichier installé, qui sont destinés, à mon avis, à un public un peu plus "spécialiste"...Vous serez à même de configurer vous même ces options quand vous aurez assimilé les (déjà nombreuses) options ci-dessous.

Interface(s) qui pointe vers Internet

FW_DEV_WORLD="ppp0 ppp1 sl0"

Dans cet exemple, on a déclaré que les interfaces ppp0, ppp1 et sl0 étaient des connexions internet (pour 99.9% d'entre vous il s'agira sans doute uniquement de ppp0)

Interface(s) qui pointe vers le réseau interne (supposé "sûr", qui accède à Internet, mais n'est pas accédé)

FW_DEV_INT="eth0 eth1"

eth0 ou eth1 devrait suffire à la majorité d'entre vous

Interface(s) qui pointe vers le réseau domestique (qui accède à Internet et est accédé)

FW_DEV_DMZ=" "

même syntaxe

La machine sert-elle de passerelle? (oui si vous voulez partager votre connexion)

FW_ROUTE="yes"

Le contraire est "no"...

Voulez vous maquiller votre réseau interne? (partager votre connexion avec le réseau interne)

FW_MASQUERADE="yes"

Quels machines et/ou masques de réseaux internes autorisez vous à partager votre connexion?

FW_MASQ_NETS="192.168.1.0/24 10.0.0.0/24 192.168.2.1"

(0/0 est interdit!) Si vous avez une connexion adsl, n'oubliez pas d'indiquer le réseau de la carte ethernet correspondante (10.0.0.0/24 en général)

Quelles sont les interfaces connectées à Internet qui vont effectuer le maquillage du réseau interne?

FW_MASQ_DEV="ppp0"

Le firewall doit -il se protéger du réseau interne?

FW_PROTECT_FROM_INTERNAL="no"

Si oui vous devrez plus loin donner la liste des services sur le firewall auxquels le réseau interne à accès, si non le réseau interne aura accès à tous les services disponibles sur le firewall)

Voulez vous que seuls les services indentifiés dans /etc/services soient accessibles?

FW_AUTOPROTECT_GLOBAL_SERVICES="yes"

répondez yes, c'est plus simple et plus sûr)

Pour chacun des réseaux internes (internal), domestique (dmz) ou internet (external), et pour chaque type tcp ou udp, donnez la liste des services autorisés.

FW_SERVICES_EXTERNAL-TCP="www smtp"
FW_SERVICES_EXTERNAL-UDP="www smtp"

FW_SERVICES_INTERNAL-TCP=" "
FW_SERVICES_INTERNAL-UDP=" "
FW_SERVICES_DMZ-TCP="www"
FW_SERVICES_DMZ-UDP=" www"

Pour vous simplifier la vie, donnez les mêmes services pour tcp et udp. Ces services sont donnés soit par leur nom (smtp par exemple), par leur port (25) ou par une plage de ports (617:642). Vous pouvez mélanger ces types de description dans chacune des options ci dessous. Si vous ne vous êtes pas protégé du réseau interne, tout lui sera accessible, il ,est donc inutile dans ce cas de remplir les rubriques correspondantes. Dans l'exemple ci dessous, "internet" peut accéder à votre serveur web et vous envoyer du courrier (il faut naturellement installer les logiciels correspondants!). Le réseau domestique ne peut être accéder que par ses pages web.

Y a-t-il un réseau et/ou une machine sur internet à qui vous faites confiance (une autre machine à vous "ailleurs" par exemple)

FW_TRUSTED_NETS="152.125.114.0/24 154.124.123.1"

Quels services autorisez vous ce morceau "internet sûr" à accéder

FW_SERVICES_TRUSTED_TCP="telnet ftp ftp-data 137:139"
FW_SERVICES_TRUSTED_UDP="telnet ftp ftp-data 137:139"

Qui a accès à vos ports hauts?

FW-ALLOW_INCOMING_HIGHPORTS_TCP="yes"
FW-ALLOW_INCOMING_HIGHPORTS_UDP="yes"

N'importe qui:yes, vos dns:dns personne:no, des ports identifiés. Il n'y a pas de problème à laisser l'accès à n'importe qui, cela n'est pas un trou de sécurité (à moins d'être très parano) et vous allez être gêné sans un grand gain de sécurité (si certains d'entre vous ne sont pas d'accord, je veux bien changer d'avis face à une argumentation solide)

Si votre firewall fait office de dns, ou de serveur dhcp ou qu'il utilise un client dhcp pour obtenir son adresse ip, vous devez répondre yes aux variables ci dessous

FW_SERVICE_DNS="no"
FW_SERVICE_DHCPD="no"
FW_SERVICE_DHCLIENT="no"

Niveau de log (fichiers traces).

FW_LOG_DENY_CRIT="yes"
FW_LOG_DENY_ALL="no"
FW_LOG_ACCEPT_CRIT="no"
FW_LOG_ACCEPT_ALL="no"

On trace, au choix, tous les accès (pour débugguer!), les accès "critiques", tous les refus, les refus critiques (bon choix, une fois que l'on a tout vérifié)

Il y a d'autres options que je vous laisse découvrir dans le fichier tel qu'il est installé initialement.

A chaque fois que vous modifiez ce fichier, il faut relancer le firewall par /etc/rc.d/SuSEfirewall_final restart.

IMPORTANT

Il faut rappeler le firewall à chaque fois que vous vous avez une nouvelle connexion. Pour cela rajouter à /etc/ppp/ip-up tout de suite sous la première ligne: /sbin/SuSEfirewall. Il y a un script ip-up (SuSE) dans les fichiers fournis.

Masquerade

Après avoir correctement configuré les options de masquerade dans le firewall, n'oubliez pas de charger les modules ip_masq_xxx (xxx=user raudio quake irc ftp cuseeme,... voir la page d'accueil pour netmeeting) qui existent normalement dans toutes les distributions...

Tous les commentaires, suggestions ou demandes d'aide sont les bienvenues à tnka@linux-sottises.net. J'utilise moi même ce firewall/masquerade, avec réseau interne mais sans réseau domestique. Pour cette configuration, j'utilise toutes les options disponibles sans avoir eu de grosses difficultés à mettre au point le fichier de configuration.


Dernière modification le jeudi 17 avril 2003 à 00:40:21 Paris
Webmaster: TNK
Valid HTML 4.01! Valid CSS! quanta anybrowser suse powered by

linux apache mod_gzip php mysql openssl modssl