Chapter 16. iptables

Avec Red Hat Linux sont installés des outils permettant le filtrage de paquets réseau — le processus contrôlant les paquets réseau lorsqu'ils entrent, traversent et sortent de la pile réseau dans le noyau. Les noyaux antérieurs à la version 2.4 utilisaient ipchains pour le filtrage de paquets et faisaient appel à des listes de règles appliquées aux paquets à chaque étape du processus de filtrage. Avec le noyau version 2.4 a été mis service iptables (aussi appelé netfilter), qui est 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 paquets.

Ce chapitre décrit en détail les principes des techniques de filtrage de paquets 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.

Pour obtenir des instructions sur la construction de règles iptables ou sur la configuration d'un pare-feu basé sur ces règles, reportez-vous à Section 16.5 Sources d'informations supplémentaires.

WarningAvertissement
 

Le mécanisme de pare-feu par défaut dans le noyau 2.4 est iptables, mais iptables ne peut pas être utilisé si ipchains est déjà à mis en oeuvre. Si ipchains sont présentes au démarrage, le noyau annoncera une erreur et ne pourra pas lancer iptables.

Ces messages d'erreur lors du démarrage n'affectent pas la fonctionnalité d'ipchains.

16.1. Filtrage de paquets

Les informations se déplacent à l'intérieur d'un réseau sous la forme de paquets. Un paquets réseau représente un ensemble de données de dimension et format particuliers. Afin de transmettre un fichier sur un réseau, l'ordinateur faisant l'envoi doit d'abord diviser le fichier en paquets en fonction des règles du protocole réseau. Chacun de ces paquets contient une petite partie des données du fichier. À la réception de la transmission l'ordinateur cible reconstruit le fichier à l'aide des paquets.

Chaque paquet dispose de ses propres informations de navigation lui permettant de se déplacer sur le réseau jusqu'à sa destination finale. Le paquet est capable d'indiquer entre autres sa provenance, sa destination et son identité aux ordinateurs rencontrés tout au long de son parcours, ainsi qu'à l'ordinateur vers lequel il se dirige. La plupart des paquets servent au transport de données, bien que certains protocoles les utilisent pour des tâches particulières. Par exemple, le protocole de transmission connu sous l'abréviation TCP ('Transmission Control Protocol'), utilise un paquet nommé SYN qui ne contient aucune donnée et sert à établir une communication entre deux systèmes.

Parmi ses nombreux rôles, le noyau Linux à la possibilité de filtrer des paquets 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 les trois tables ou listes de règles suivantes:

Chacune de ces tables comporte à son tour un groupe de chaînes qui correspondent aux actions effectuées par netfilter sur le paquet.

Les chaînes de la table filter sont les suivantes:

Les chaînes pour la table nat sont les suivantes:

Les chaînes pour la table mangle sont les suivantes:

Chaque paquet de réseau reçu ou expédié par un système Linux est soumis à au moins une table.

Chaque paquet, avant de sortir 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 à identifier un paquet en provenance ou à destination d'une adresse IP donnée ou d'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 paquets correspondent à une règle précise d'une des tables, ils se voient assigner une cible font l'objet d'une certaine action. Si la règle spécifie une cible de type ACCEPT, un paquet est accepté après avoir été contrôlé avec succès, et peut procéder vers sa destination en évitant le reste des contrôles de la règle. Si une règle spécifie une cible de type DROP le paquet est abandonné et se voit refuser l'accès au système; rien n'est donc renvoyé à l'hôte qui a expédié le paquet. Si une règle spécifie une cible de type QUEUE, le paquet est mis en attente dans l'espace-utilisateur (ou 'user-space'). Finalement, si une règle spécifie une cible de type REJECT, le paquet est "abandonné" mais par rejet et dans ce cas, un "paquet d'erreur" est renvoyé à l'expéditeur.

Chaque chaîne dispose d'une politique par défaut pour accepter (ACCEPT), abandonner (DROP), rejeter (REJECT) ou mettre en attente (QUEUE). 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 permet de configurer ces tables et d'en créer de nouvelles si nécessaire.