Chapitre 18. Techniques de mise en oeuvre de pare-feu avec iptables

Le noyau Linux contient une série d'outils de filtrage de paquetages. On appelle filtrage de paquetages le contrôle de paquetages se déplaçant à l'intérieur d'un système, qu'ils tentent d'y entrer, d'en sortir ou qu'ils se déplacent tout simplement à l'intérieur de celui-ci. Avant la version 2.4, les noyaux offraient la possibilité de gérer ces paquetages en utilisant la commande ipchains, qui faisait appel à une liste de règles relatives à chaque étape du processus de filtrage. L'introduction du noyau 2.4 signifie l'entrée en service de iptables, semblable à la commande ipchains, si ce n'est qu'elle multiplie les potentialités et le degré de contrôle disponible lors du filtrage de paquetages.

Ce chapitre décrit en détail les principes des techniques de filtrage de paquetages en expliquant les différences entre ipchains et iptables, en présentant les différentes options disponibles avec iptables et en montrant comment maintenir l'intégrité des règles de filtrage entre chaque démarrage de votre système.

Reportez-vous au Guide de personnalisation Red Hat Linux officiel pour une aide sur l'écriture de règles utilisant iptables ou sur la mise en place d'un pare-feu fonctionnant avec ces règles.

Filtrage de paquetages

Les informations se déplacent à l'intérieur d'un réseau sous la forme de paquetages, qui représentent un ensemble de données de dimension particulière. Un fichier échangé via réseau par deux ordinateurs peut être constitué de plusieurs paquetages, chacun d'entre eux renfermant des éléments dudit fichier. L'ordinateur émetteur décompose ce fichier en plusieurs paquetages pour l'envoyer via le réseau en se conformant aux règles du protocole réseau employé. L'ordinateur qui reçoit ces paquetages les rassemble ensuite à l'aide de la méthode spécifiée par le protocole pour reformer le fichier.

Chaque paquetage dispose de ses propres informations de navigation lui consentant de se déplacer sur le réseau jusqu'à sa destination finale. Il est capable d'informer les autres systèmes informatiques rencontrés tout au long de son parcours, ainsi que l'ordinateur vers lequel il se dirige, de sa provenance, sa destination et son identité, entre autres choses. La plupart des paquetages servent au transport de données, bien que certains protocoles les utilisent autrement. Par exemple, le protocole de transmission connu sous l'appellation de TCP (Transmission Control Protocol), utilise un paquetage dénommé SYN qui ne contient aucune donnée, mais sert au lancement des communications entre deux systèmes.

Le noyau Linux possède une fonction intrinsèque lui permettant de filtrer des paquetages en choisissant de laisser pénétrer certains d'entre eux dans le système et de bloquer les autres. La version 2.4 du noyau contient trois tables de chaînes ; nous décrirons dans ce chapitre le fonctionnement de la table de filtrage. La table de filtrage est constituée de trois groupes de listes de règles par défaut appelés chaînes INPUT, OUTPUT et FORWARD. Chaque paquetage qui entre ou sort de l'ordinateur est sujet à l'une de ces listes de règles. Lorsqu'un paquetage pénètre à l'intérieur du système par le biais d'une interface réseau, le noyau décide s'il est destiné au système local (chaîne INPUT) ou bien à une autre destination (chaîne FORWARD), dans le but de déterminer quel type de liste de règles utiliser. De la même façon, si un paquetage originaire du système cherche à le quitter, le noyau procède à son contrôle grâce à la chaîne OUTPUT.

Chaque paquetage avant sa sortie d'une chaîne peut être soumis à un très grand nombre de règles. La structure et le rôle de ces règles peuvent changer, mais elles visent généralement à l'identification de paquetages en provenance ou à destination d'une adresse IP donnée ou à un groupe d'adresses lors de l'utilisation d'un protocole ou d'un service de réseau particulier.

Indépendamment de leur destination, lorsque les paquetages satisfont à une règle précise d'une liste de règles donnée, ils se voient désigner une cible, ou mission à accomplir. Si la règle spécifie la cible ACCEPT pour un paquetage contrôlé, celui-ci évite le reste des contrôles de la règle et se voit octroyé l'autorisation de procéder vers sa destination. Si une règle indique la cible DROP, le paquetage est "abandonné", ce qui revient à dire qu'il se voit refuser l'accès au système et que rien n'est retourné à l'hôte qui a expédié le paquetage. Si une règle indique la cible de REJECT, le paquetage est "abandonné", mais, dans ce cas, un "paquetage d'erreur" est renvoyé à l'expéditeur.

Chaque chaîne dispose de sa propre politique par défaut pour accepter (ACCEPT), abandonner (DROP) ou rejeter (REJECT) un paquetage, ou bien, si possible, mettre en attente (QUEUE) un paquetage qui doit être passé à l'espace utilisateur. Si aucune des règles présentes dans la chaîne ne s'applique au paquetage, celui-ci est traité en fonction de la politique par défaut de la chaîne.

La commande iptables vous permet de configurer ces listes de règles et de créer également de nouvelles chaînes et tables à utiliser en fonction de votre situation spécifique.