7.5. IP Pare-feu (Firewall) (pour Linux-2.0)

Le pare-feu IP et les publications le concernant sont traités de manière plus approfondie dans le Firewall-HOWTO. Le pare-feu IP vous permet de sécuriser votre machine contre les accès réseau non-autorisés en filtrant, ou acceptant, des datagrammes venant de, ou allant vers, des adresses IP de votre choix. Il y a différentes règles : le filtrage en entrée, le filtrage en sortie, et le filtrage en retransmission. Les règles en entrée s'appliquent aux datagrammes qui sont reçus par un dispositif réseau. Les règles en sortie s'appliquent aux datagrammes qui sont émis par un dispositif réseau. Les règles en retransmission s'appliquent aux datagrammes qui ne sont pas pour cette machine, c'est à dire les datagrammes qui seront reroutés.

Options de compilation noyau :
Networking options  --->
 [*] Network firewalls
 ....
 [*] IP: forwarding/gatewaying
 ....
 [*] IP: firewalling
 [ ] IP: firewall packet logging

La configuration du pare-feu IP est réalisée en utilisant la commande ipfwadm. Comme mentionné plus haut, la sécurité n'est pas ma spécialité, aussi, bien que je vous présente un exemple utilisable par vous-même, faites des recherches et mettez au point vos propres règlages si la sécurité est importante pour vous.

Utiliser votre machine Linux comme routeur et passerelle pare-feu pour protéger votre réseau local contre les accès non autorisés (venant de l'extérieur) est vraisemblablement l'utilisation la plus courante d'un pare-feu IP.

La configuration suivante est due à Arnt Gulbrandsen, <agulbra@troll.no>.

L'exemple décrit une configuration de pare-feu pour une machine Linux /pare-feu/routeur illustrée par ce diagramme :

-                                   -
 \                                  | 172.16.37.0
 \                                 |   /255.255.255.0
 \                 - - - - -      |
 |  172.16.174.30 | Linux |      |
NET =================|  f/w  |- - - |    ..37.19
 |    PPP         | router|      |   - - - -
 /                 - - - - -      |--| Mail  |
 /                                 |  | /DNS  |
 /                                  |   - - - -
-                                   -

Les commandes suivantes doivent être normalement placées dans un fichier rc de telle sorte qu'elles seront démarrées automatiquement à chaque redémarrage du système. Pour une sécurité maximum, elles devront être effectuées après la configuration des interfaces réseau, mais avant le montage de ces interfaces pour éviter que quelqu'un puisse se connecter pendant que la machine pare-feu redémarre.

        #!/bin/sh
 # Nettoie la table des règles de 'Forwarding'
 # Change le réglage par défaut en 'accept'
 #
 /sbin/ipfwadm -F -f
 /sbin/ipfwadm -F -p accept
 #
 # .. et pour 'Incoming'
 #
 /sbin/ipfwadm -I -f
 /sbin/ipfwadm -I -p accept
 # En premier, dévérouille l'interface PPP
 # J'aimerais bien utiliser '-a deny' au lieu de '-a reject -y' mais
 # il serait alors impossible d'établir des connexions également sur
 # cette interface. L'utilisation de -o fait en sorte que tous
 # les datagrammes rejetés sont enregistrés. Cela occupe de l'espace
 # disque avec pour compensation la connaissance sur l'attaque due
 # à une erreur de configuration.
 #
 /sbin/ipfwadm -I -a reject -y -o -P tcp -S 0/0 -D 172.16.174.30
 # Rejette certains types de paquets visiblement faux:
 # Rien ne doit venir des adresses multicast/anycast/broadcast s
 #
 /sbin/ipfwadm -F -a deny -o -S 224.0/3 -D 172.16.37.0/24
 #
 # et aucune chose venant du réseau loopback ne doit être vu sur l'air
 #
 /sbin/ipfwadm -F -a deny -o -S 127.0/8 -D 172.16.37.0/24
 # accepte les connexions entrantes SMTP et DNS, mais seules pour
 # le serveur  de courrier et le serveur de noms
 #
 /sbin/ipfwadm -F -a accept -P tcp -S 0/0 -D 172.16.37.19 25 53
 #
 # DNS utilise UDP aussi bien que TCP, ce qui l'autorise donc quand
 # le serveur de noms est interrogé
 #
 /sbin/ipfwadm -F -a accept -P udp -S 0/0 -D 172.16.37.19 53
 #
 # mais pas de "réponses" arrivant sur les ports dangereux tels que
 # NFS et l'extension NFS de Larry McVoy. Si vous utilisez squid
 # ajoutez son port ici.
 #
 /sbin/ipfwadm -F -a deny -o -P udp -S 0/0 53 \
 -D 172.16.37.0/24 2049 2050
 # les réponses aux autres ports utilisateurs sont autorisées
 #
 /sbin/ipfwadm -F -a accept -P udp -S 0/0 53 \
 -D 172.16.37.0/24 53 1024:65535
 # Rejette les connexions entrantres vers identd
 # Nous utilisons 'reject' dans ce cas en sorte qu'il soit dit à l'hôte
 # entrant de ne pas persévérer, sinon nous devrons attendre que
 # identd s'arrête.
 #
 /sbin/ipfwadm -F -a reject -o -P tcp -S 0/0 -D 172.16.37.0/24 113
 # Accepte des connexions sur des services en provenance des réseaux
 # 192.168.64 et 192.168.65, qui sont des amis de confiance.
 #
 /sbin/ipfwadm -F -a accept -P tcp -S 192.168.64.0/23 \
 -D 172.16.37.0/24 20:23
 # accepte et laisse passer tout ce qui vient de l'intérieur
 #
 /sbin/ipfwadm -F -a accept -P tcp -S 172.16.37.0/24 -D 0/0
 # rejette la plupart des autres connexions TCP entrantes et les
 # enregistre (ajoutez 1:1023 si ftp ne fonctionne pas)
 #
 /sbin/ipfwadm -F -a deny -o -y -P tcp -S 0/0 -D 172.16.37.0/24
 # ... pour UDP également
 #
 /sbin/ipfwadm -F -a deny -o -P udp -S 0/0 -D 172.16.37.0/24

De bonnes configurations pare-feu sont difficiles à faire. Cet exemple peut être un bon point de départ pour vous. La page de manuel ipfwadm vous aidera pour savoir comment utiliser cet outil. Si vous voulez configurer un pare-feu, demandez autour de vous et recueillez des avis venant de sources de confiance et prenez contact avec quelqu'un qui est à l'extérieur pour tester votre configuration et en vérifier la fiabilité.

7.5.1. Pare-feu IP (pour Linux-2.2)

On accède au nouveau code d'enregistrement par des ``chaînes pare-feu IP''. Voir La page d'accueil des chaînes IP pour plus d'informations. Entre autres vous devrez utiliser ipchains/ au lieu de ipfwadm/ pour configurer vos filtres. (D'après Documentations/Changes dans les sources du dernier noyau).

Nous sommes conscients du fait que ce n'est malheureusement plus d'actualité et nous oeuvrons actuellement pour que cette section soit plus à jour. Vous pouvez en espérer une en 1999.