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.
![]() | Avertissement |
---|---|
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. |
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 :
filter — table par défaut pour le traitement des paquets réseau.
nat — table utilisée pour modifier les paquets qui créent une nouvelle connexion et utilisée pour la translation d'adresse (ou NAT de l'anglais Network Address Translation).
mangle — table utilisée pour la modification de types spécifiques de paquets.
![]() | Astuce |
---|---|
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/ où <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 :
INPUT — cette chaîne s'applique aux paquets reçus via une interface réseau.
OUTPUT — cette chaîne s'applique aux paquets expédiés par la même interface réseau qui a reçu les paquets.
FORWARD — cette chaîne s'applique aux paquets reçus par une interface réseau et expédiés par une autre interface.
Les chaînes pour la table nat sont les suivantes :
PREROUTING — cette chaîne modifie les paquets reçus via une interface réseau lorsqu'ils arrivent.
OUTPUT — modifie des paquets réseau générés localement avant qu'ils ne soient envoyés.
POSTROUTING — cette chaîne modifie les paquets avant qu'ils ne soient expédiés par une interface de réseau.
Les chaînes pour la table mangle sont les suivantes :
INPUT — modifie des paquets réseau destinés à l'hôte.
OUTPUT — modifie des paquets réseau générés localement avant qu'ils ne soient envoyés.
FORWARD — modifie des paquets réseau provenant de l'hôte.
PREROUTING — cette chaîne modifie les paquets reçus par une interface de réseau avant qu'ils ne soient routés.
POSTROUTING — cette chaîne modifie les paquets avant qu'ils ne soient expédiés par une interface de réseau.
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.
Précédent | Sommaire | Suivant |
Ressources supplémentaires | Niveau supérieur | Différences entre iptables et ipchains |