Un filtre à paquets est un programme qui examine l'en-tête des paquets qui passent, et décide du sort du paquet entier. Il peut choisir de DÉTRUIRE (`DROP') le paquet (i.e. faire comme s'il n'avait jamais été reçu), d'ACCEPTER (`ACCEPT') le paquet (i.e. le laisser passer) ou quelque chose de plus compliqué.
Sous Linux, le filtrage de paquets s'effectue au niveau du noyau (avec un module ou directement intégré dedans), et permet des choses plus astucieuses encore avec les paquets, mais le principe de base reste toujours d'examiner les en-têtes et de décider du sort du paquet.
Contrôle. Sécurité. Vigilance.
quand vous utilisez une machine sous Linux pour connecter votre propre réseau (interne) à un autre réseau (externe, disons Internet), vous avez la possibilité d'autoriser certains types de trafic et d'en interdire d'autres. Par exemple, comme l'en-tête d'un paquet contient son adresse de destination, vous pouvez l'empêcher d'aller vers une certaine partie du réseau externe. Comme autre exemple, j'utilise Netscape pour accéder aux archives de Dilbert. Il y a des publicités de doubleclick.net sur la page, et Netscape me fait perdre du temps à les télécharger. Préciser au filtre de n'autoriser aucun paquet de et vers doubleclick.net résout ce problème (même s'il y a de meilleures façons de faire ça : voir Junkbuster).
quand votre machine sous Linux est le seul intermédiaire entre le chaos d'Internet et votre beau réseau bien ordonné, il est bon de savoir que vous pouvez en restreindre l'accès suivant ce qui frappe à votre porte. Par exemple, vous pouvez permettre toute connexion vers l'extérieur de votre réseau, mais vous pouvez être embêté par le célèbre `Ping de la Mort' venant d'étrangers malicieux. Comme autre exemple, vous ne voudriez pas qu'un inconnu se connecte par `telnet' sur votre machine, même si tous vos comptes sont protégés par un mot de passe. Peut-être voulez-vous (comme la plupart des gens) être un observateur sur Internet et non un serveur (désiré ou non). Pour cela, ne laissez tout simplement personne se connecter chez vous grâce au filtrage de paquets, en refusant les paquets entrants employés pour établir des connexions.
parfois, une machine mal configurée sur le réseau local décidera d'envoyer des paquets au monde extérieur. Il est intéressant de demander au filtrage de paquets de vous avertir si quelque chose d'inhabituel se produit; peut-être voulez-vous en tenir compte ou simplement êtes-vous curieux de nature.
Les noyaux Linux ont connu le filtrage de paquets depuis la série des 1.1. La première génération, basée sur Ipfw de BSD, a été adaptée par Alan Cox fin 1994. Elle a été amélioré par Jos Vos et d'autres pour Linux 2.0; l'outil de configuration `Ipfwadm' contrôlait les règles de filtrage du noyau. À la mi-1998, pour Linux 2.2, j'ai méchamment retravaillé le noyau, avec l'aide de Michael Neuling, et j'ai commencé l'outil appelé `Ipchains'. Finalement, l'outil de 4ème génération `Iptables' et une autre réécriture du noyau sont arrivés à la mi-1999 pour Linux 2.4. C'est sur Iptables que se concentre ce Guide Pratique.
Vous avez besoin d'un noyau qui inclut l'infrastructure de Netfilter : Netfilter est un architecture générale à l'intérieur du noyau sur laquelle d'autres choses (comme le module Iptables) viennent se greffer. Cela signifie que vous avez besoin d'un noyau 2.3.15 ou plus, et de répondre `Y' à CONFIG_NETFILTER lors de la compilation du noyau.
L'outil Iptables
communique avec le noyau et lui indique les paquets à filtrer.
A moins que vous ne soyez un programmeur ou bien excessivement curieux, c'est
ainsi que vous contrôlerez le filtrage des paquets.
L'outil Iptables
insère et retire des règles de la table
de filtrage des paquets du noyau. Donc peu importe ce que vous configurez,
tout sera perdu au redémarrage; voyez
Construire des Règles Permanentes pour vous assurer que vos règles seront rétablies au
prochain amorçage.
Iptables
est un successeur d'Ipfwadm
et
d'Ipchains
: voyez
Utiliser Ipchains et Ipfwadm pour éviter de
peiner sur Iptables si vous utilisez déjà un des ces deux outils.
Votre configuration actuelle de pare-feu est stockée dans le noyau, et donc sera perdue au redémarrage. Vous pouvez essayer les scripts `iptables-save' et `iptables-restore' pour la sauvegarder et la restituer à partir d'un fichier.
L'autre méthode consiste à mettre les commandes de configuration requises dans un script d'initialisation. Soyez sûr de faire quelque chose d'intelligent si l'une des commandes venait à échouer (habituellement `exec /sbin/sulogin').