États de l'espace utilisateur

Comme vous l'avez vu, les paquets peuvent prendre différents états à l'intérieur du noyau, en fonction du protocole considéré. Cependant, à l'extérieur du noyau, seuls 4 états sont disponibles, comme c'est expliqué précédemment. Ces états peuvent être associés à la correspondance state qui est capable de sélectionner les paquets à partir de l'état actuel du traçage de connexion. Les états valides sont NEW, ESTABLISHED, RELATED et INVALID. Le tableau suivant décrit brièvement chacun d'eux.

Tableau 1. États de l'espace utilisateur

ÉtatExplication
NEWL'état NEW indique que le paquet est le premier de la connexion. Cela signifie que, pour une connexion donnée, le premier paquet que le module conntrack aperçoit est sélectionné. Par exemple, si on rencontre un paquet SYN et que c'est le premier paquet d'une connexion, on établit la correspondance. Cependant, le paquet peut aussi ne pas être de type SYN et considéré tout de même dans l'état NEW. Ceci peut s'avérer problématique dans certaines situations, mais peut aussi être extrêmement utile quand on doit récupérer les connexions perdues issues d'autres pare-feux, ou quand une connexion a dépassé son temps de survie, mais n'est pas réellement fermée.
ESTABLISHEDL'état ESTABLISHED résulte de l'observation d'un trafic dans les deux sens, et donc établit une correspondance avec ce type de paquets. Les connexions établies (ESTABLISHED) sont particulièrement simple à comprendre. La seule condition pour entrer dans l'état ESTABLISHED est qu'un hôte ayant envoyé un paquet reçoive plus tard une réponse de l'hôte destinataire de ce paquet. A la réception du paquet de réponse, l'état NEW est transformé en ESTABLISHED. Les messages d'erreur et de redirection ICMP peuvent aussi être considérés comme ESTABLISHED, si on a généré un paquet qui en retour génère le message ICMP.
RELATEDL'état RELATED est un des états les plus astucieux. Une connexion est considérée comme RELATED quand elle est liée à une autre connexion déjà établie, donc dans l'état ESTABLISHED. Ainsi, pour qu'une connexion soit identifiée comme RELATED, on doit tout d'abord disposer d'une autre dans l'état ESTABLISHED. La connexion ESTABLISHED crée alors une connexion extérieure à la connexion principale. La nouvelle connexion créée est donc considérée comme RELATED, si le module conntrack l'identifie comme en relation avec l'autre. Les exemples suivants peuvent être considérés comme RELATED : les connexions FTP-data sont liées au port FTP control, et les connexions DCC interviennent par l'intermédiaire de IRC. Ceci permet d'utiliser des réponses ICMP, des transferts FTP et des DCC pour travailler convenablement à travers un pare-feu. Remarquez que la plupart des protocoles TCP et certains protocoles UDP qui reposent sur ce mécanisme sont particulièrement complexes. Ils envoient des informations de connexion à l'intérieur des données utiles, qui par conséquent requièrent des modules helper spécifiques pour être correctement interprétées.
INVALIDL'état INVALID signifie que le paquet ne peut pas être identifié ou qu'il n'a aucun état connu. Il peut y avoir plusieurs raisons à cela : par exemple, un système en dépassement de mémoire ou des messages d'erreur ICMP ne répondant à aucune connexion connue. Généralement, il est préférable de détruire tout ce qui se trouve dans cet état.

Ces états peuvent être utilisés avec la correspondance --state pour sélectionner des paquets à partir de leur état de traçage de connexion. C'est ce qui rend la machine d'état si puissante et efficace pour votre pare-feu. Auparavant, nous devions souvent ouvrir tous les ports supérieurs à 1024 pour permettre le trafic inverse à destination de notre réseau local. Avec la machine d'état à l'oeuvre, ce n'est plus nécessaire, puisqu'il est possible d'ouvrir le pare-feu pour les réponses sans l'ouvrir pour le reste du trafic.