Iptables - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Fonctionnement

Xtables permet à l'administrateur système de créer des tableaux, lesquels contiennent des « chaînes », elles-mêmes composées d'un ensemble de règles de traitement des paquets. Chaque tableau est associé à un type de traitement des paquets (cf. Netfilter). Les paquets suivent séquentiellement chaque règle des chaînes. Une règle dans une chaîne peut provoquer un saut à une autre chaîne (goto ou jump), et ce processus peut être renouvelé autant qu'il le faut, quel que soit le niveau d'imbrication atteint.

Chaque paquet réseau, entrant ou sortant, traverse donc au moins une chaîne.

L'origine du paquet détermine la première chaîne qu'il traverse. Il existe cinq chaînes prédéfinies (associées aux cinq hooks de Netfilter), cependant leur utilisation n'est pas obligatoire dans chaque tableau. Les chaînes prédéfinies ont une politique (par exemple DROP), qui est appliquée au paquet s'il arrive à la fin de la chaîne. L'administrateur système peut créer autant d'autres chaînes qu'il le souhaite. Ces chaînes n'ont pas de politique : si un paquet arrive à la fin de la chaîne, il est renvoyé à la chaîne qui a appelé. Une chaîne peut même être vide (n'avoir aucune règle).

Les cinq chaînes prédéfinies sont les suivantes :

  • "PREROUTING" : Les paquets vont entrer dans cette chaîne avant qu'une décision de routage ne soit prise.
  • "INPUT" : Le paquet va être livré sur place (N.B. : la livraison sur place ne dépend pas d'un processus ayant un socket ouvert ; la livraison est contrôlée par le tableau « local » de routage : ip route show table local).
  • "FORWARD" : Tous les paquets qui ont été acheminés et ne sont pas livrés sur place parcourent la chaîne.
  • "OUTPUT" : Les paquets envoyés à partir de la machine elle-même se rendront à cette chaîne.
  • "POSTROUTING" : La décision de routage a été prise. Les paquets entrent dans cette chaîne, juste avant qu'ils ne soient transmis vers le matériel.

Chaque règle d'une chaîne contient la spécification (en anglais : matches) des paquets qui lui correspondent. Elle peut également contenir une action (en anglais : target) (utilisée pour les extensions) ou un jugement (une de plusieurs décisions intégrées). Quand un paquet traverse une chaîne, chaque règle, à son tour, est examinée. Si une règle ne correspond pas au paquet, le paquet est passé à la règle suivante. Si une règle correspond au paquet, elle prend les mesures indiquées par l'action/le jugement, ce qui peut conduire à autoriser le paquet à continuer dans la chaîne ou, à l'inverse, à l'exclure. Les spécifications constituent la grande partie des règles, car elles contiennent les conditions selon lesquelles les paquets sont testés. Ces spécifications peuvent fournir pour toute couche du modèle OSI, comme par exemple les paramètres --mac-source et -p tcp --dport, et il y a aussi des specs indépendantes du protocole, par exemple -m time.

Le paquet continue à parcourir la chaîne jusqu'à ce que :

  • soit une règle corresponde au paquet et décide du sort ultime du paquet (par exemple en appelant l'un des jugements ACCEPT ou DROP);
  • soit une règle appelle le jugement RETURN et, dans ce cas, le traitement revient à la chaîne d'appel;
  • soit la fin de la chaîne est atteinte. Actions aussi rend un verdict comme ACCEPT (les modules NAT feront cela) ou DROP (en général le module REJECT), mais aussi peut impliquer CONTINUE (nom interne) pour continuer avec la règle suivante, comme si aucun action/jugement n'avait été précisé.
Page générée en 0.083 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales
Version anglaise | Version allemande | Version espagnole | Version portugaise