Chapitre 17. iptables

Avec Red Hat Enterprise Linux sont installés des outils avancés 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 en 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 disponibles lors du filtrage de paquets réseau.

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 à la Section 17.7.

AvertissementAvertissement
 

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.

17.1. Filtrage de paquets

Parmi ses nombreux rôles, le noyau Linux a 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. Le netfilter de la version 2.4 du noyau contient les trois tables ou listes de règles suivantes :

TuyauAstuce
 

Outre ses tables intégrées, des tables spécifiques peuvent être créées et enregistrées dans le répertoire /lib/modules/<version-du-noyau>/kernel/net/ipv4/netfilter/<version-du-noyau> correspond au numéro de version du noyau.

Chacune de ces tables comporte à son tour un groupe de chaînes intégrées 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 réseau, reçu ou envoyé par un système Linux, peut être soumis à un minimum d'une règle. Cependant, un paquet peut être soumis à plusieursrègles à l'intérieur de chaque table avant de ressortir à la fin de la chaîne. 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 contenue dans une des tables, ils se voient assigner une cible ou font l'objet d'une certaine action. Si la règle spécifie une cible de type ACCEPT pour un paquet vérifié, il évite les autres contrôles de règles et peut procéder vers sa destination. En revanche, 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 envoyé en retour à 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 (aussi appelé user-space). Finalement, si une règle spécifie une cible facultative de type REJECT, le paquet est "abandonné" par rejet et dans ce cas, un "paquet d'erreur" est envoyé en retour à 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.