Correspondances explicites

Les correspondances explicites ont besoin d'être chargés spécifiquement à l'aide de l'option -m ou --match. Par exemple, les correspondances d'état requiert la directive -m state avant d'entrer la véritable correspondance à prendre en compte. Certaines de ces correspondances sont spécifiques à un protocole. Certaines peuvent aussi être détachées de tout protocole spécifique - par exemple les états de connexion. Ils sont identifiés par NEW (pour le premier paquet d'une connexion non encore établie), ESTABLISHED (pour une connexion déjà enregistrée dans le noyau), RELATED (pour une nouvelle connexion créée par une connexion plus ancienne et déjà établie), etc. Parmi ces correspondances explicites, quelques-une peuvent avoir évolué pour des questions de test ou d'expérimentation, ou simplement pour mettre en évidence les capacités d'iptables. Par conséquent, ceci signifie que l'intégralité de ces correspondances n'est pas à première vue indispensable. Néanmoins, il y a de grandes chances que vous trouviez certaines des ces correspondances explicites particulièrement utiles. Et de nouvelles apparaissent en permanence, lors de chaque nouvelle version d'iptables. Que vous leur découvriez ou non une utilisation dépend de votre imagination et de vos besoins. Pour comprendre la différence entre une correspondance chargée implicitement et une chargée explicitement, il faut savoir que la première est chargée automatiquement quand par exemple vous établissez une correspondance avec une propriété des paquets TCP, alors que la seconde n'est jamais chargée automatiquement - c'est à vous de révéler et d'activer une correspondance explicite.

Correspondance AH/ESP

Ces correspondances sont utilisées pour les protocoles IPSEC AH et ESP. IPSEC sert à créer des tunnels sécurisés par dessus une connexion Internet non sécurisée. Les protocoles AH et ESP sont utilisés par IPSEC pour créer ces connexions sécurisées. Les correspondances AH et ESP sont deux correspondances séparées, mais elles sont toutes les deux décrites ici car elles se ressemblent beaucoup, et toutes les deux ont le même usage.

Je ne rentrerai pas dans les détails d'IPSEC ici, regardez les pages suivantes pour plus d'information :

Il existe aussi des tonnes de documentation sur l'Internet à ce sujet.

Pour utiliser les correspondances AH/ESP, vous devrez vous servir de -m ah pour charger les correspondances AH, et -m esp pour charger les correspondances ESP.

Note

Dans les noyaux 2.2 et 2.4, Linux utilise une chose appelée FreeS/WAN pour l'implémentation de IPSEC, mais à partir des noyaux 2.5.47 et supérieurs, ceux-ci ont une implémentation directe de IPSEC et donc ne nécessitent pas de patcher le noyau. C'est une réécriture complète de l'implémentation de IPSEC dans Linux.

Tableau 5. Options des correspondances AH

Correspondance--ahspi
Noyau2.5 et 2.6
Exempleiptables -A INPUT -p 51 -m ah --ahspi 500
ExplicationCeci vérifie le numéro de l'Index du Paramètre de Sécurité (SPI) des paquets AH. Notez que vous devez spécifier le protocole, car AH s'exécute sur un protocole différent des standards TCP, UDP et ICMP. Le numéro SPI est utilisé en conjonction avec les adresses source et destination et les clés secrètes pour créer une association de sécurité (SA). SA identifie chacun des tunnels IPSEC pour tous les hôtes. SPI est utilisé uniquement pour distinguer chaque tunnel IPSEC connecté entre deux identiques. Utiliser la correspondance --ahspi, nous permet de vérifier un paquet basé sur le SPI des paquets. Cette correspondance peut vérifier une chaîne complète de valeur SPI en utilisant un signe :, comme 500:520, qui vérifiera toute la chaîne des SPI.

Tableau 6. Options des correspondances ESP

Correspondance--espspi
Noyau2.5 et 2.6
Exempleiptables -A INPUT -p 50 -m esp --espspi 500
ExplicationLa contrepartie de l'Index des Paramètres de Sécurité (SPI) est utilisée de la même façon que la variante AH. La correspondance semble exactement la même, avec seulement la différence esp/ah. Bien sûr, cette correspondance peut apparier un ensemble complet de numéros SPI de la même façon que la variante AH de la correspondance SPI, comme --espi 200:250 qui apparie la totalité de la chaîne des SPI.

Correspondance conntrack

La correspondance conntrack est une version étendue de la correspondance état, qui rend possible l'appariement des paquets de façon un peu plus grossière. Ce qui vous permet d'avoir l'information directement disponible dans un système de traçage de connexion, sans applications frontales, comme dans la correspondance état. Pour plus de détails sur le système de traçage de connexion, regardez le chapitre La machine d'état.

Il existe nombre de différents appariements dans la correspondance conntrack, pour différents champs dans le système de traçage de connexion. Ils sont indiqués ensemble dans la liste ci-dessous. Pour charger ces correspondances, vous devez spécifier -m conntrack.

Tableau 7. Options de correspondance conntrack

Correspondance--ctstate
Noyau2.5 et 2.6
Exempleiptables -A INPUT -p tcp -m conntrack --ctstate RELATED
Explication

Cette correspondance est utilisée pour apparier l'état d'un paquet, selon l'état conntrack. Elle est utilisée pour apparier plus finement les mêmes états que dans la correspondance state d'origine. Les entrées valides pour cette correspondance sont :

  • INVALID

  • ESTABLISED

  • NEW

  • RELATED

  • SNAT

  • DNAT

Les entrées peuvent être utilisées l'une avec l'autre en les séparant par une virgule. Par exemple, -m conntrack --ctstate ESTABLISHED,RELATED. Elles peuvent aussi être interverties en mettant un ! avant --ctstate. Exemple : -m conntrack ! --ctstate ESTABLISHED,RELATED, qui apparie tout sauf les états ESTABLISHED et RELATED.

Correspondance--ctproto
Noyau2.5 et 2.6
Exempleiptables -A INPUT -p tcp -m conntrack --ctproto TCP
Explication

Ceci apparie le protocole, de la même façon que le fait --protocol. Il peut prendre les mêmes types de valeurs, et on peut l'intervertir en utilisant le signe !. Exemple, -m conntrack ! --ctproto TCP apparie tous les protocoles sauf TCP.

Correspondance--ctorigsrc
Noyau2.5 et 2.6
Exempleiptables -A INPUT -p tcp -m conntrack --ctorigsrc 192.168.0.0/24
Explication

--ctorigsrc est une correspondance basée sur la spécification de la source IP d'origine de l'entrée conntrack en rapport avec le paquet. La correspondance peut être inversée en utilisant le ! entre le --ctorigsrc et la spécification IP, comme --ctorigsrc ! 192.168.0.1. Elle peut aussi prendre un masque de réseau de forme CIDR, comme --ctorigsrc 192.168.0.0/24.

Correspondance--ctorigdst
Noyau2.5 et 2.6
Exempleiptables -A INPUT -p tcp -m conntrack --ctorigdst 192.168.0.0/24
Explication

Cette correspondance est utilisée de la même façon que --ctorigsrc, sauf qu'elle apparie sur le champ destination de l'entrée conntrack. Elle possède la même syntaxe.

Correspondance--ctreplsrc
Noyau2.5 et 2.6
Exempleiptables -A INPUT -p tcp -m conntrack --ctreplysrc 192.168.0.0/24
Explication

La correspondance --ctreplysrc est utilisée pour l'appariement basé sur la réponse source du conntrack d'origine du paquet. C'est à peu près la même chose que le --ctorigsrc, mais nous apparions la réponse source attendue des paquets envoyés. Cette cible peut, bien sûr, être inversée et adresser une chaîne complète d'adresses, de la même façon que la cible précédente dans cette classe.

Correspondance--ctrepldst
Noyau2.5 et 2.6
Exempleiptables -A INPUT -p tcp -m conntrack --ctreplydst 192.168.0.0/24
Explication

La correspondance --ctreplydst est la même que --ctreplysrc, avec la différence qu'elle apparie la réponse de destination de l'entrée conntrack qui a apparié la paquet. Elle peut être inversée, et accepte les chaînes, comme la correspondance --ctreplysrc.

Correspondance--ctstatus
Noyau2.5 et 2.6
Exempleiptables -A INPUT -p tcp -m conntrack --ctstatus RELATED
Explication

Ceci apparie les statuts de la connexion, comme décrit dans la chapitre La machine d'état. Ces statuts sont les suivants :

  • NONE - La connexion ne possède aucun statut.

  • EXPECTED - Cette connexion est en attente et a été ajoutée par les gestionnaires d'attente.

  • SEEN_REPLY - La connexion a vu une réponse mais n'en est cependant pas assurée.

  • ASSURED - La connexion est certaine et ne sera pas supprimée tant que le délai d'attente ne sera pas atteint ou qu'elle sera interrompue d'une autre façon.

Elle peut aussi être inversée par le signe !. Exemple, -m conntrack ! --ctstatus ASSURED qui apparie tout sauf le statut ASSURED.

Correspondance--ctexpire
Noyau2.5 et 2.6
Exempleiptables -A INPUT -p tcp -m conntrack --ctexpire 100:150
Explication

Cette correspondance sert à apparier les paquets basés sur la longueur du temps d'expiration de l'entrée conntrack, mesuré en secondes. Elle peut soit prendre une seule valeur, ou une chaîne comme dans l'exemple au-dessus. Elle peut aussi être inversée avec le signe !, comme -m conntrack ! --ctexpire 100. Ceci apparie chaque temps d'expiration, qui n'est pas exactement de 100 secondes.

Correspondance DSCP

Cette correspondance est utilisée pour apparier les paquets basés sur leur champ DSCP (Differentiated Services Code Point). C'est documenté dans la RFC RFC 2638 - A Two-bit Differentiated Services Architecture for the Internet. La correspondance est chargée en spécifiant -m dscp. Elle peut prendre deux options mutuellement incompatibles, décrites ci-dessous.

Tableau 8. Options de correspondance DSCP

Correspondance--dscp
Noyau2.5 et 2.6
Exempleiptables -A INPUT -p tcp -m dscp --dscp 32
Explication

Cette option prend une valeur DSCP soit en décimal soit en hexadécimal. Si la valeur de l'option est en décimal, elle sera écrite comme 32 ou 16, etc. Si elle est écrite en hexadécimal, elle pourrait être préfixée avec des 0x, comme ça : 0x20. Elle peut aussi être inversée par le signe !, comme : -m dscp ! --dscp 32.

Correspondance--dscp-class
Noyau2.5 et 2.6
Exempleiptables -A INPUT -p tcp -m dscp --dscp-class BE
Explication

La correspondance --dscp-class sert à l'appariement d'une classe Diffserv d'un paquet. Les valeurs peuvent être l'une des classes BE, EF, AFxx ou CSxx comme spécifié dans les diverses RFC. Elle peut être inversée de la même façon qu'avec l'option --dscp.

Note

Notez que les options de classes --dscp et dscp-class sont mutuellement exclusives et ne peuvent pas être utilisées conjointement l'une avec l'autre.

Correspondance ECN

ECN est utilisé pour l'appariement sur les différents champs ECN dans les en-têtes TCP et IPv4. ECN est décrit en détail dans la RFC RFC 3168 - The Addition of Explicit Congestion Notification (ECN) to IP. La correspondance est chargée par -m ecn dans la ligne de commande. Elle prend trois options différentes, comme décrit ci-dessous.

Tableau 9. Options de la correspondance ECN

Correspondance--ecn
Noyau2.4, 2.5 et 2.6
Exempleiptables -A INPUT -p tcp -m ecn --ecn-tcp-cwr
Explication

Cette correspondance est utilisée pour apparier le bit CWR (Congestion Window Received), s'il a été placé. Le fanion CWR est placé pour notifier l'autre point limite de la connexion reçu (ECE), et qui a été réactivé. Par défaut elle vérifie si le bit CWR est placé, mais la correspondance peut aussi être inversée par le signe !.

Correspondance--ecn-tcp-ece
Noyau2.4, 2.5 et 2.6
Exempleiptables -A INPUT -p tcp -m ecn --ecn-tcp-ece
Explication

Cette correspondance peut être utilisée pour apparier le bit ECE (ECN-Echo). Le ECE est placé une fois que les points limite aient reçu un paquet avec un bit CE placé par un routeur. Le point limite place alors le ECE en renvoyant la paquet ACK, pour le notifier à l'autre point limite. Cet autre point limite envoie alors un paquet CWR comme décrit dans l'explication de --ecn-tcp-cwr. C'est le comportement par défaut si le bit ECE est placé, mais peut être interverti par le signe !.

Correspondance--ecn-ip-ect
Noyau2.4, 2.5 et 2.6
Exempleiptables -A INPUT -p tcp -m ecn --ecn-ip-ect 1
Explication

--ecn-ip-ect est utilisée pour apparier les codes caractères ECT (ECN Capable Transport). Les codes caractères ECT possèdent plusieurs types. Principalement, ils sont utilisés pour savoir si la connexion a les possibilités ECN en plaçant un des deux bits à 1. ECT est aussi utilisé par les routeurs pour indiquer qu'ils sont en processus d'engorgement, en plaçant les deux points limite ECT à 1. les valeurs ECT sont toutes disponibles dans la table Champ ECN dans IP ci-dessous.

La correspondance peut être inversée par un !, exemple ! --ecn-ip-ect 2 qui va apparier toutes les valeurs ECN sauf le point limite ECT(0). la chaîne de valeur correcte dans Iptables est de 0 à 3. Voir ci-dessous pour les valeurs :

Tableau 10. Champ ECN dans IP

Valeur IptablesECTCE[Obsolète] Noms RFC 2481 pour les bits ECN
000Not-ECT, ie. pas de possibilité de connexion non-ECN
101ECT(1), nouvelle convention de nommage des points limite ECT dans la RFC 3168
210ECT(0), nouvelle convention de nommage des points limite ECT dans la RFC 3168
311CE (Congestion Experienced), utilisé pour notifier les points limite pour l'engorgement.

Correspondance Helper

C'est plutôt une correspondance pas très orthodoxe en comparaison des autres, dans ce sens qu'elle utilise une syntaxe spécifique de bit. Elle est utilisée pour apparier les paquets, basés sur l'assistant conntrack en relation avec le paquet. Par exemple, regardons une session FTP. La session Contrôle est ouverte, et les ports/connexion sont négociés pour la session Données dans la session Contrôle. Le module assistant ip_conntrack_ftp va trouver cette information, et créer une entrée dans la table conntrack. Maintenant, quand un paquet entre, nous pouvons voir quel protocole est en relation, et pouvons apparier le paquet dans nos propres tables de règles basées sur l'assistant qui a été utilisé.

Tableau 11. Options de correspondance Helper

Correspondance--helper
Noyau2.4, 2.5 et 2.6
Exempleiptables -A INPUT -p tcp -m helper --helper ftp-21
Explication

L'option --helper est utilisée pour spécifier une valeur de chaîne, indiquant à la correspondance quelle assistant conntrack apparier. Dans sa forme basique, elle peut ressembler à --helper irc. C'est l'endroit où la syntaxe démarre en variant par rapport à la syntaxe normale. Nous pouvons aussi choisir d'apparier seulement les paquets basés sur tel port que l'original a pris. Exemple, la session Contrôle FTP est normalement transférée sur le port 21, mais il peut aussi bien être sur le port 954 ou un autre. Nous pouvons alors spécifier quel port sera utilisé, comme --helper ftp-954.

Correspondance de plage IP

La correspondance de plage IP est utilisée pour apparier les plages IP, comme les correspondances --source et --destination peuvent le faire. Cependant, cette correspondance ajoute une sorte d'appariement différent dans le sens qu'elle peut apparier dans la forme IP à IP, ce que les correspondances --source et --destination sont incapables de faire. Ceci peut être nécessaire dans certains réglages de réseaux spécifiques, et elle est légèrement plus souple.

Tableau 12. Options de correspondance de plage IP

Correspondance--src-range
Noyau2.4, 2.5 et 2.6
Exempleiptables -A INPUT -p tcp -m iprange --src-range 192.168.1.13-192.168.2.19
Explication

Ceci apparie une plage d'adresses source IP. La plage inclut chaque adresse depuis la première jusqu'à la dernière, ainsi l'exemple ci-dessus inclut toutes les adresses depuis 192.168.1.13 jusqu'à 192.168.2.19. Elle peut aussi être inversée avec le !. L'exemple du dessus ressemblera alors à -m iprange ! --src-range 192.168.1.13-192.168.2.19, qui va apparier chaque adresse, sauf celles spécifiées.

Correspondance--dst-range
Noyau2.4, 2.5 et 2.6
Exempleiptables -A INPUT -p tcp -m iprange --dst-range 192.168.1.13-192.168.2.19
Explication

--dst-range fonctionne exactement de la même façon que la correspondance --src-range, sauf qu'elle apparie la destination IP au lieu de la source IP.

Correspondance Length

La correspondance Length est utilisée pour apparier les paquets basés sur leur longueur. C'est très simple. Si vous voulez limiter la longueur des paquets pour quelque étrange raison, ou bloquer ce qui ressemble à un ping-of-death, utilisez cette correspondance.

Tableau 13. Options de correspondance Length

Correspondance--length
Noyau2.4, 2.5 et 2.6
Exempleiptables -A INPUT -p tcp -m length --length 1400:1500
Explication

L'exemple --length va apparier tous les paquets de longueur comprise entre 1400 et 1500 octets. Elle peut être inversée en utilisant le signe !, comme ça : -m length ! --length 1400:1500. Elle peut aussi être utilisée pour apparier certaines tailles seulement, supprimant le signe :, comme ceci : -m length --length 1400. La plage est, bien sûr, inclusive, ce qui inclut tous les paquets dont la longueur est comprise dans les valeurs que vous avez spécifiées.

Correspondance Limit

L'extension de correspondance limit doit être chargée explicitement avec l'option -m limit. Cette correspondance peut être employée avantageusement pour limiter la journalisation de certaines règles, etc. Par exemple, vous pouvez établir une correspondance avec tous les paquets qui n'excèdent pas une quantité donnée, et au-delà de ce seuil, limiter la journalisation de l'évènement en question. Considérez ce seuil comme une limite temporelle : vous pouvez limiter le nombre de correspondances d'une certaine règle dans un certain laps de temps, par exemple pour atténuer l'impact des attaques de type déni de service (DoS). C'est d'ailleurs la principale application qu'on en fait, mais naturellement, il en existe d'autres. La correspondance limit peut également être inversée en ajoutant le symbole ! juste après le mot limit. Elle s'exprime alors sous la forme -m limit ! --limit 5/s, autrement dit tous les paquets sont sélectionnés quand la limite est dépassée.

Pour décrire plus précisément la correspondance limit, c'est essentiellement un filtre à seau de jetons ("token bucket filter"). Considérez un seau percé qui laisse fuir N paquets par unité de temps. N est défini en fonction du nombre de paquets que nous voulons sélectionner, ainsi si nous voulons 3 paquets, le seau laisse fuir 3 paquets par unité de temps. L'option --limit détermine le nombre de paquets qui peuvent remplir le seau par unité de temps, alors que l'option --limit-burst définit la contenance initiale du seau. Par conséquent, en définissant --limit 3/minute --limit-burst 5, puis en recevant 5 correspondances, le seau sera vidé. Après une attente de 20 secondes, le seau est rempli d'un nouveau jeton, et ainsi de suite jusqu'à ce que le paramètre --limit-burst soit atteint ou jusqu'à ce que les jetons soient tous utilisés.

Considérez l'exemple ci-dessous pour approfondir sur ce fonctionnement.

  1. On définit une règle avec les paramètres -m limit --limit 5/second --limit-burst 10/second. Le paramètre limit-burst du seau à jetons est fixé initialement à 10. Chaque paquet qui établit une correspondance avec la règle consomme un jeton.

  2. On reçoit alors des paquets qui correspondent à la règle, 1-2-3-4-5-6-7-8-9-10, tous arrivent dans un intervalle de 1/1000ème de seconde.

  3. Le seau de jetons se retrouve complètement vide. Et puisque le seau est vide, les paquets qui rencontrent la règle ne peuvent plus correspondre et poursuivent leur route vers la règle suivante, ou subissent le comportement par défaut de la chaîne.

  4. Pour chaque tranche de 1/5ème de seconde sans qu'un paquet ne corresponde, le compteur de jetons augmente de 1, jusqu'à un maximum de 10. Et 1 seconde après avoir reçu 10 paquets, on aura de nouveau 5 jetons de moins.

  5. Et naturellement, le seau sera vidé d'1 jeton par paquet reçu.

Tableau 14. Options de la correspondance limit

Correspondance--limit
Noyau2.3, 2.4, 2.5 et 2.6
Exempleiptables -A INPUT -m limit --limit 3/hour
ExplicationCeci définit le taux de correspondance moyen maximum pour la correspondance limit. Il est spécifié par un nombre suivi éventuellement d'une unité de temps. Les unités suivantes sont actuellement reconnues : /second, /minute, /hour et /day. La valeur par défaut est fixée à 3 correspondances par heure, soit 3/hour. Ceci indique à la correspondance limit combien de fois la correspondance avec un paquet est autorisé par unité de temps (par exemple par minute).
Correspondance--limit-burst
Noyau2.3, 2.4, 2.5 et 2.6
Exempleiptables -A INPUT -m limit --limit-burst 5
ExplicationCeci définit la réserve maximale (ou la salve) de la correspondance limit. Il indique à iptables le nombre maximum de paquets pouvant correspondre pendant l'unité de temps donnée. Ce nombre est décrémenté de 1 après chaque unité de temps (spécifiée par l'option --limit) pendant laquelle l'évènement ne s'est pas produit, jusqu'à atteindre la plus faible valeur, 1. Si l'évènement se produit de façon répétée, le compteur est alors incrémenté jusqu'à atteindre la valeur de réserve maximale, et ainsi de suite. La valeur par défaut de --limit-burst est 5. Pour comprendre simplement comment ceci fonctionne, utilisez le script d'exemple Limit-match.txt composé d'une règle. Grâce à ce script, vous pouvez voir vous-mêmes comment fonctionne le règle limit, en envoyant des paquets d'écho (de type ping) à des intervalles différents et en différentes rafales. Toutes les réponses d'écho seront bloquées jusqu'à ce que le seuil de réserve maximale soit de nouveau atteint.

Correspondance MAC

La correspondance MAC (Ethernet Media Access Control) permet de sélectionner des paquets à partir de leur adresse MAC source. Lors de l'écriture de ce document, cette correspondance s'avère quelque-peu limitée, cependant elle pourrait être plus évoluée à l'avenir, donc plus utile.

Note

Remarquez que l'utilisation de ce module impose de le charger explicitement avec l'option -m mac. Il est nécessaire de le rappeler ici vu le nombre de personne croyant pouvoir l'invoquer seulement par -m mac-source, ce qui n'est pas possible.

Tableau 15. Options de la correspondance MAC

Correspondance--mac-source
Noyau2.3, 2.4, 2.5 et 2.6
Exempleiptables -A INPUT -m mac --mac-source 00:00:00:00:00:01
ExplicationCette correspondance permet de sélectionner des paquets à partir de leur adresse MAC source. L'adresse MAC doit être spécifiée de la forme XX:XX:XX:XX:XX:XX, autrement elle n'est pas valide. La correspondance peut être inversée avec le signe ! et ressemble alors à --mac-source ! 00:00:00:00:00:01. Autrement dit, ceci inverse le sens de la corrrespondance, en sélectionnant tous les paquets sauf ceux possédant l'adresse MAC spécifiée. Notez que comme les adresses MAC ne sont utilisées que dans les réseaux de type Ethernet, cette correspondance ne s'applique qu'aux interfaces Ethernet. La correspondance MAC est valide seulement dans les chaînes PREROUTING, FORWARD et INPUT, et nulle-part ailleurs.

Correspondance mark

L'extension de correspondance mark permet de sélectionner des paquets à partir de leur marquage. Le marquage désigne un champ particulier, pris en charge uniquement au sein du noyau, et lié aux paquets circulant à travers la machine. Le marquage peut être employé par différentes routines du noyau pour des tâches comme de la régulation de trafic ou du filtrage. Aujourd'hui, il n'existe qu'un seul moyen de définir un marquage sous Linux, c'est la cible MARK dans iptables. Auparavant, il s'agissait de la cible FWMARK dans ipchains, et c'est pourquoi nombre de gens se réfère encore à FWMARK dans les documentations avancées sur le routage. Le champ de marquage est actuellement défini comme un entier non signé, soit 4294967296 valeurs possibles sur un système 32 bits. En d'autres termes, vous ne risquez pas de sitôt de dépasser cette limite.

Tableau 16. Options de la correspondance mark

Correspondance--mark
Noyau2.3, 2.4, 2.5 et 2.6
Exempleiptables -t mangle -A INPUT -m mark --mark 1
ExplicationCette correspondance permet de sélectionner des paquets qui ont été préalablement marqués. Les marquages peuvent être positionnés avec la cible MARK développée dans la section suivante. Tous les paquets transitant par Netfilter se voient affectés d'un champ de marquage spécial. Notez que ce champ de marquage n'est propagé en aucune manière, que ce soit à l'intérieur ou à l'extérieur du paquet. Il reste exclusivement à l'intérieur de la machine qui l'a créé. Si le champ de marquage est égal à la valeur de l'option --mark, il y a correspondance. Le champ de marquage est un entier non signé, par conséquent 4294967296 différents marquages peuvent exister. Vous pouvez également utiliser un masque avec le marquage. Dans ce cas, la spécification de marquage ressemble, par exemple, à --mark 1/1. Quand un masque est spécifié, on effectue un ET logique avec le marquage spécifié avant de réaliser la comparaison réelle.

Correspondance multiport

L'extension de correspondance multiport permet de spécifier plusieurs ports et intervalles et ports destination. Sans cette possibilité, vous devriez utiliser différentes règles du même genre, juste pour établir une correspondance avec différents ports.

Note

Vous ne pouvez pas utiliser simultanément la correspondance de port standard et la correspondance multiport. Par exemple, il est inutile d'écrire : --sport 1024:63353 -m multiport --dport 21,23,80, car ça ne marchera pas. Si vous le faites quand même, iptables considèrera le premier élément de la règle et ignorera l'instruction multiport.

Tableau 17. Options de la correspondance multiport

Correspondance--source-port
Noyau2.3, 2.4, 2.5 et 2.6
Exempleiptables -A INPUT -p tcp -m multiport --source-port 22,53,80,110
ExplicationCette correspondance coïncide avec plusieurs ports source. Au maximum, 15 ports peuvent être spécifiés. Les ports doivent être séparés par des virgules, comme dans l'exemple ci-dessus. Cette correspondance ne peut être employée qu'avec les correspondances -p tcp ou -p udp. C'est principalement une version améliorée de la correspondance classique --source-port.
Correspondance--destination-port
Noyau2.3, 2.4, 2.5 et 2.6
Exempleiptables -A INPUT -p tcp -m multiport --destination-port 22,53,80,110
ExplicationCette correspondance coïncide avec plusieurs ports destination. Elle fonctionne exactement de la même façon que la correspondance de port source mentionnée précédemment, excepté qu'elle s'applique aux ports destination. Elle dispose aussi d'une limite de 15 ports, et ne peut être employée qu'avec -p tcp et -p udp.
Correspondance--port
Noyau2.3, 2.4, 2.5 et 2.6
Exempleiptables -A INPUT -p tcp -m multiport --port 22,53,80,110
ExplicationCette extension de correspondance permet de sélectionner les paquets à partir à la fois de leur port destination et de leur port source. Elle fonctionne de la même façon que les correspondances --source-port et --destination-port présentées ci-dessus. Elle accepte 15 ports au maximum, et ne peut être employée qu'avec -p tcp et -p udp. Notez que la correspondance --port ne peut sélectionner que les paquets qui viennent et vont vers le même port, par exemple, du port 80 au port 80, du port 110 au port 110, etc.

Correspondance owner

L'extension de correspondance owner permet de sélectionner des paquets à partir de l'identité du processus qui les a créés. Le propriétaire ("owner") peut être spécifié comme étant l'identifiant de l'utilisateur qui a lancé la commande en question, de son groupe, du processus, de la session, ou bien de la commande elle-même. A l'origine, cette extension a été écrite pour donner un exemple des utilisations possibles d'iptables. La correspondance owner fonctionne seulement dans la chaîne OUTPUT pour des raisons évidentes : il est presque impossible d'extraire des éléments d'information sur l'identité de l'instance ayant envoyé un paquet à partir de l'autre extrémité, et où a lieu le saut intermédiaire avant la destination finale. Et même dans la chaîne OUTPUT, ce n'est pas vraiment fiable puisque certains paquets peuvent ne pas avoir de propriétaire. Les célèbres paquets de ce genre sont, entre-autres, les réponses ICMP. Donc les réponses ICMP ne correspondront jamais.

Tableau 18. Options de la correspondance owner

Correspondance--uid-owner
Noyau2.3, 2.4, 2.5 et 2.6
Exempleiptables -A OUTPUT -m owner --uid-owner 500
ExplicationAvec cette correspondance, le paquet est sélectionné s'il a été créé par l'identifiant d'utilisateur (UID) donné. Ceci permet d'établir une correspondance avec les paquets sortants basée sur celui qui les a créés. Une utilisation possible serait d'empêcher tout utilisateur autre que root d'ouvrir de nouvelles connexions extérieures au pare-feu. Une autre possibilité pourrait être d'empêcher tout le monde sauf l'utilisateur http d'envoyer des paquets à partir du port HTTP.
Correspondance--gid-owner
Noyau2.3, 2.4, 2.5 et 2.6
Exempleiptables -A OUTPUT -m owner --gid-owner 0
ExplicationCette correspondance permet de sélectionner des paquets à partir de leur identifiant de groupe (GID). Ainsi on établit une correspondance avec tous les paquets associés au groupe auquel appartient l'utilisateur ayant créé le paquet. Par exemple, ceci permet d'empêcher tous les utilisateurs sauf ceux appartenant au groupe network de naviguer sur Internet, ou comme précédemment, d'autoriser seulement les membres du groupe http à créer des paquets sortants par le port HTTP.
Correspondance--pid-owner
Noyau2.3, 2.4, 2.5 et 2.6
Exempleiptables -A OUTPUT -m owner --pid-owner 78
ExplicationCette correspondance permet de sélectionner des paquets à partir de l'identifiant de processus (PID) qui est responsable d'eux. Cette correspondance est un peu plus difficile à utiliser, mais il est possible, par exemple, d'autoriser seulement le PID 94 à envoyer des paquets par le port HTTP (si le processus HTTP n'est pas un fil d'exécution, bien sûr). Une autre alternative serait d'écrire un petit script qui récupère le PID à partir de la sortie d'une commande ps pour un "daemon" spécifique, et qui ajoute ensuite une règle pour le numéro récupéré. Pour donner un exemple, vous pouvez élaborer une règle comme celle présente dans l'exemple Pid-owner.txt.
Correspondance--sid-owner
Noyau2.3, 2.4, 2.5 et 2.6
Exempleiptables -A OUTPUT -m owner --sid-owner 100
ExplicationCette correspondance permet de sélectionner des paquets à partir de l'identifiant de session (SID) utilisé par le programme en question. La valeur du SID d'un processus est celle du processus lui-même et de tous les processus découlant du processus d'origine. Ces derniers peuvent être un fil d'exécution ("thread"), ou un processus fils du processus d'origine. Donc par exemple, tous les processus HTTPD devraient posséder le même SID que leur processus parent (le processus HTTPD d'origine), si le HTTPD appartient à un fil d'exécution (comme la plupart des processus HTTPD, Apache et Roxen par exemple). Ceci est illustré par un petit script qui s'appelle Sid-owner.txt. Celui-ci pourrait éventuellement être lancé toutes les heures et enrichi de code supplémentaire pour vérifier que l'exécution du processus HTTPD est toujours en cours et le redémarrer sinon, avant de vider et redéfinir la chaîne OUTPUT si nécessaire.

Correspondance type de paquet

Cette correspondance sert à apparier les paquets basés sur leur type. C'est à dire, ceux destinés à une personne précise, à tout le monde ou à un groupe de machines spécifique ou encore des utilisateurs. Ces trois groupes sont généralement appelés unicast, broadcast et multicast, comme nous l'avons vu dans le chapitre Rappel TCP/IP. La correspondance est chargée par la commande : -m pkttype.

Tableau 19. Options de correspondance type de paquet

Correspondance--pkttype
Noyau2.3, 2.4, 2.5 et 2.6
Exempleiptables -A OUTPUT -m owner --pkttype unicast
Explication

La correspondance --pkttype sert à indiquer quel type de paquet apparier. Elle peut prendre soit unicast, broadcast ou multicast comme argument, voir l'exemple. Elle peut aussi être inversée par ! comme ceci : -m pkttype --pkttype ! broadcast, qui va apparier tous les autres types de paquets.

Correspondance Recent

La correspondance Recent est une système plutôt important et complexe, qui nous permet d'apparier des paquets basés sur les événements récents. Exemple, si nous voulons voir une sortie de connexion IRC, nous pouvons placer l'adresse IP dans une liste d'hôtes, et avoir une autre règle qui permet des requêtes d'identification en retour d'un serveur IRC dans les 15 secondes de veille du paquet d'origine.

Avant nous pouvons avoir une vue plus précise de cette correspondance, et voyons comment elle fonctionne. En premier, nous utilisons différentes règles pour utiliser l'appariement récent. Celui-ci se sert de plusieurs listes d'événements récents. Par défaut la liste utilisée est DEFAULT. Nous créons une nouvelle entrée dans la liste avec cette option, ainsi une fois qu'une règle est complètement appariée (l'option placée est toujours une correspondance), nous pouvons ajouter une entrée dans la liste récente spécifiée. L'entrée de la liste contient un horodatage, et l'adresse source IP utilisée dans le paquet qui déclenche l'option. Une fois ceci fait, nous pouvons utiliser une série d'options différentes pour apparier cette information, comme la mise à jour des entrées d'horodatage, etc.

Enfin, si nous voulons pour quelque raison supprimer une entrée de la liste, nous pouvons le faire en supprimant la correspondance du module récent. Toutes les règles utilisant la correspondance Recent, doivent charger ce module (-m recent). Voyons en les options.

Tableau 20. Options de la correspondance Recent

Correspondance--name
Noyau2.4, 2.5 et 2.6
Exempleiptables -A OUTPUT -m recent --name examplelist
Explication

L'option "name" donne le nom de la liste à utiliser. Par défaut la liste DEFAULT est utilisée, ce qui n'est probablement pas ce que nous voulons si nous nous servons de plus d'une liste.

Correspondance--set
Noyau2.4, 2.5 et 2.6
Exempleiptables -A OUTPUT -m recent --set
Explication

Ceci crée une nouvelle entrée dans la liste récente, qui contient un horodatage et l'adresse source IP de l'hôte qui a déclenché la règle.

Correspondance--rcheck
Noyau2.4, 2.5 et 2.6
Exempleiptables -A OUTPUT -m recent --name examplelist --rcheck
Explication

L'option --rcheck vérifie si l'adresse IP source du paquet est dans la liste nommée. Si c'est le cas, la correspondance renvoit un "vrai", dans le cas contraire elle renverra un "faux". Cette option peut être inversée avec le signe !. Dans ce dernier cas, elle renverra vrai si l'adresse IP source n'est pas dans la liste, et faux si elle est dans la liste.

Correspondance--update
Noyau2.4, 2.5 et 2.6
Exempleiptables -A OUTPUT -m recent --name examplelist --update
Explication

Cette correspondance est vraie si la source est disponible dans la liste spécifiée et met à jour le dernier horodatage dans la liste. Elle peut aussi être inversée par le ! devant le module. Exemple, ! --update.

Correspondance--remove
Noyau2.4, 2.5 et 2.6
Exempleiptables -A INPUT -m recent --name example --remove
Explication

Cette correspondance essaie de trouver l'adresse source du paquet dans la liste, et renvoit un vrai si le paquet est présent. Elle supprimera aussi l'entrée de liste correspondante de la liste. Cette commande peut être inversée avec le signe !.

Correspondance--seconds
Noyau2.4, 2.5 et 2.6
Exempleiptables -A INPUT -m recent --name example --check --seconds 60
Explication

Cette correspondance n'est valide seulement qu'avec les commandes --check et --update. Le module --seconds est utilisé pour spécifier le délai de mise à jour de la colonne "dernier apperçu" dans la liste récente. Si la colonne dernier apperçu est plus ancienne qu'un certain nombre de secondes, la correspondance renvoit faux. Si la correspondance récent fonctionne anormalement, l'adresse source doit toujours être dans la liste pour un retour vrai de la correspondance.

Correspondance--hitcount
Noyau2.4, 2.5 et 2.6
Exempleiptables -A INPUT -m recent --name example --check --hitcount 20
Explication

La correspondance --hitcount doit être utilisée avec les commandes --check ou --update, elle limitera la vérification aux seuls paquets vus par le compteur. Si cette correspondance est utilisée avec la commande --seconds, cela nécessite que le compteur de paquets spécifié soit vu dans le bloc de temps. Elle peut être inversée par le signe ! devant la commande. Avec la commande --seconds, elle indique le maximum de paquets qui peuvent avoir été vus durant le bloc de temps spécifié. Si les deux correspondances sont inversées, alors un maximum de paquets peuvent avoir été vus durant le dernier minimum de secondes.

Correspondance--rttl
Noyau2.4, 2.5 et 2.6
Exempleiptables -A INPUT -m recent --name example --check --rttl
Explication

La correspondance --rttl vérifie que la valeur TTL du paquet est la même que celle du paquet original utilisé pour placer l'entrée dans la liste récente. Ceci peut être utilisé pour vérifier que les adresses sources de personnes n'ont pas été mystifiées (spoofing) pour interdire aux autres l'accès à leur serveurs en faisant usage de la correspondance recent.

Correspondance--rsource
Noyau2.4, 2.5 et 2.6
Exempleiptables -A INPUT -m recent --name example --rsource
Explication

La correspondance --rsource indique au module recent de sauvegarder l'adresse source et les ports dans la liste recent. C'est le comportement par défaut.

Correspondance--rdest
Noyau2.4, 2.5 et 2.6
Exempleiptables -A INPUT -m recent --name example --rdest
Explication

--rdest est l'opposé de --rsource en ce qu'elle indique à la correspondance recent d'enregistrer l'adresse et le port de destination dans la liste recent.

j'ai créé un petit exemple de script sur la façon d'utiliser la correspondance recent, vous pouvez le trouver dans la section Recent-match.txt.

En bref, c'est une pauvre variation de la machine d'état disponible dans netfilter. Cette version fut créé avec à l'esprit un serveur http, mais qui fonctionnera avec n'importe quelle connexion TCP. En premier, nous avons créé deux chaînes nommées http-recent et http-final. La chaîne http-recent est utilisée aux étapes du démarrage de la connexion, et pour la transmission des données, tandis que la chaîne http-final est utilisée pour les derniers FIN, FIN/ACK dans l'établissement de la liaison.

Avertissement

C'est une très mauvaise alternative pour la machine d'état et elle ne dispose pas de toutes les possibilités de la machine d'état. Cependant, c'est un bon exemple de ce qui peut être fait avec la correspondance Recent sans être trop spécifique. N'utilisez pas cet exemple en production. Il est lent, gère mal les cas spéciaux, et ne doit être jamais utilisé que comme un exemple.

Par exemple, il ne gère pas les ports fermés dans une connexion, les établissements de liaison FIN asynchrones (où une des parties connectée se ferme, tandis que l'autre continue d'envoyer des données), etc.

Suivons un paquet à travers l'exemple de la table de règles. D'abord le paquet entre dans la chaîne INPUT, et nous l'envoyons à la chaîne http-recent.

  1. Le premier paquet sera un paquet SYN, et n'aura pas de bit ACK, FIN ou RST placé. Il est apparié en utilisant la ligne --tcp-flags SYN,ACK,FIN,RST SYN. À ce niveau nous ajoutons la connexion à httplist avec la ligne -m recent --name httplist --set. Enfin nous acceptons le paquet.

  2. Après le premier paquet nous recevons un paquet SYN/ACK indiquant que le paquet SYN a été reçu. Ceci peut être apparié en utilisant la ligne --tcp-flags SYN,ACK,FIN,RST SYN,ACK. FIN et RST sont illégaux à ce niveau. Nous mettons à jour l'entrée dans httplist par -m recent --name httplist --update et finalement nous avons l'ACCEPT du paquet.

  3. Maintenant nous obtenons un paquet final ACK, venant du créateur de la connexion, nous permettant de savoir que le SYN/ACK a été envoyé par le serveur. SYN, FIN et RST sont illégaux à ce point de la connexion, et la ligne ressemblera à --tcp-flags SYN,ACK,FIN,RST ACK. Nous mettons à jour la liste de la même façon que dans l'étape précédente, et nous avons l'ACCEPT.

  4. À ce niveau, la transmission de données peut démarrer. La connexion ne contiendra jamais aucun paquet SYN maintenant, mais contiendra des paquets ACK pour permettre de savoir que les données sont envoyées. Chaque fois que nous voyons un paquet comme celui-là, nous mettons à jour la liste et ACCEPT les paquets.

  5. La transmission peut être terminée de deux façons, la plus simple est le paquet RST. RST réinitialisera la connexion et la coupera. Avec FIN, la connexion sera coupée sans plus envoyer de données. Le destinataire du FIN, pourra toujours envoyer des données, et nous arrivons à l'étape finale de la connexion.

  6. Dans les chaînes http-recent-final nous vérifions si le paquet est toujours dans la httplist, et si c'est le cas, nous l'envoyons à la chaîne http-recent-final1. Dans cette chaîne nous supprimons la connexion de la httplist l'ajoutons à la liste http-recent-final. Si la connexion a déjà été supprimée et déplacée vers la liste http-recent-final, nous envoyons le paquet vers la chaîne http-recent-final2.

  7. Dans la chaîne http-recent-final2, nous attendons que la partie non fermée finisse d'envoyer ses données, et fermons ensuite la connexion. Une fois ceci fait, la connexion est tout simplement supprimée.

Comme nous l'avons vu la liste recent peut devenir tout à fait complexe, mais elle nous donne un vaste éventail de possibilités si nécessaire. Encore une fois, nous ne réinventons pas la roue. Si la fonctionnalité que vous désirez est déjà implémentée, utilisez la au lieu d'essayer de créer votre propre solution.

Correspondance state

L'extension de correspondance state est associée au code de traçage de connexion dans le noyau. La correspondance d'état accède à l'état du traçage de connexion des paquets grâce à la machine de "conntracking". Elle permet de savoir dans quel état se trouve la connexion, et fonctionne pour quasiment tous les protocoles y-compris les protocoles sans état tels que ICMP et UDP. Dans tous les cas, la connexion est sujette à un dépassement de temps établi par défaut ("default timeout") et sera, le cas échéant, supprimée de la base de données du traçage de connexion. Cette correspondance exige d'être chargée explicitement en ajoutant la directive -m state à la règle. Vous disposerez alors d'une nouvelle correspondance appelée state. Le concept de correspondance d'état est couvert plus en détail dans le chapitre La machine d'état, étant donné que le sujet est assez vaste.

Tableau 21. Correspondances de state

Correspondance--state
Noyau2.3, 2.4, 2.5 et 2.6
Exempleiptables -A INPUT -m state --state RELATED,ESTABLISHED
Explication

Cette option indique à la correspondance state dans quels états doivent être les paquets pour être sélectionnés. Actuellement, 4 états sont disponibles : INVALID, ESTABLISHED, NEW et RELATED. INVALID signifie que le paquet n'est associé à aucun flux, ni à aucune connexion connus, et qu'il peut contenir des données ou des en-têtes erronés. ESTABLISHED signifie que le paquet est lié à une connexion déjà établie, qui a vu passer des paquets dans les deux directions et qui est considérée valide. NEW signifie que le paquet a démarré ou démarrera une nouvelle connexion, ou bien qu'il est associé à une connexion qui n'a pas vu passer des paquets dans les deux directions. Enfin, RELATED signifie que le paquet démarre une nouvelle connexion et qu'il est associé à une connexion déjà établie. Ceci peut évoquer par exemple un transfert de données par FTP, ou une erreur ICMP associée à une connexion TCP ou UDP. Notez que l'état NEW n'examine pas les bits SYN des paquets TCP qui tentent de démarrer une nouvelle connexion. Par conséquent, cet état ne devrait pas être utilisé tel quel dans les situations où il n'existe qu'un seul pare-feu, ou quand il n'y a pas d'équilibrage de charge entre les différents pare-feux. Cependant, cet état se révèle utile dans certains cas. Pour en savoir plus, consultez le chapitre La machine d'état.

Correspondance TCPMSS

La correspondance tcpmss est utilisée pour apparier un paquet basé sur la Maximum Segment Size (Tailles maximum de segment) dans TCP. Ceci vérifie seulement la validité des paquets SYN et SYN/ACK. Pour une explication plus détaillée de la valeur MSS, voir l'appendice, Options TCP la RFC 793 - Transmission Control Protocol et la RFC 1122 - Requirements for Internet Hosts - Communication Layers. Cette correspondance est chargée en utilisant -m tcpmss et prend uniquement cette option.

Tableau 22. Options de correspondance TCPMSS

Correspondance--mss
Noyau2.3, 2.4, 2.5 et 2.6
Exempleiptables -A INPUT -p tcp --tcp-flags SYN,ACK,RST SYN -m tcpmss --mss 2000:2500
Explication

L'option --mss indique à la correspondance tcpmss quel Maximum Segment Sizes apparier. Ceci peut être soit une simple valeur MSS, soit une plage de valeurs MSS séparées par :. La valeur peut être inversée par le signe !, comme dans l'exemple suivant :

-m tcpmss ! --mss 2000:2500

Cet exemple vérifiera toutes les valeurs MSS, sauf les valeurs comprises dans la plage de 2000 à 2500.

Correspondance TOS

La correspondance TOS peut servir à sélectionner les paquets à partir de leur champ de TOS. TOS signifie type de service; il est constitué de 8 bits et se situe dans l'en-tête IP. Cette correspondance est chargée explicitement en ajoutant -m tos à la règle. Elle est normalement utilisée afin d'informer les hôtes intermédiaires de l'ordre de priorité du flux et de son contenu (ce n'est pas vraiment le cas, mais il informe des besoins spécifiques au flux, comme une réexpédition aussi rapide que possible, ou un impératif de débit). Les différents routeurs et administrateurs gèrent ces valeurs de façon variable. La plupart ne s'en préoccupent pas du tout, alors que d'autres font de leur mieux pour servir les paquets en question et les données qu'ils contiennent.

Tableau 23. Correspondance TOS

Correspondance--tos
Noyau2.3, 2.4, 2.5 et 2.6
Exempleiptables -A INPUT -p tcp -m tos --tos 0x16
ExplicationCette correspondance s'utilise tel que décrit ci-dessus. Elle sélectionne les paquets à partir de leur champ de TOS et de sa valeur. Ceci peut être employé avec le programme iproute2 et les fonctions avancées de routage de Linux pour effectuer un marquage des paquets pour une usage ultérieur. La correspondance prend en option une valeur hexadécimale ou numérique, ou éventuellement un des noms fournis par la commande 'iptables -m tos -h'. Actuellement, elle donne les noms suivants : Minimize-Delay 16 (0x10), Maximize-Throughput 8 (0x08), Maximize-Reliability 4 (0x04), Minimize-Cost 2 (0x02), et Normal-Service 0 (0x00). Minimize-Delay signale de minimiser le retard pour les paquets qui traversent - les services classiques qui requièrent ceci peuvent être, par exemple, telnet, SSH et FTP-control. Maximize-Throughput précise de trouver un chemin qui offre le plus haut débit possible - un protocole typique est FTP-data. Maximize-Reliability indique de maximiser la fiabilité de la connexion, donc d'utiliser des lignes aussi fiables que possible - deux exemples typiques sont BOOTP et TFTP. Minimize-Cost signale de minimiser le coût des paquets qui traversent tous les liens vers le client ou le serveur ; par exemple, déterminer la route qui offre le voyage le moins cher de bout en bout. Des exemples de protocoles classiques qui peuvent l'utiliser sont RTSP ("Real Time Stream Control Protocol" ou protocole de contrôle de flux temps-réel) et d'autres protocoles de flux vidéo/radio. Enfin, Normal-Service désigne tout protocole classique n'ayant aucun besoin particulier.

Correspondance TTL

La correspondance TTL permet de sélectionner les paquets à partir de leur champ TTL ("Time To Live" ou durée de vie) localisé dans l'en-tête IP. Le champ TTL contient 8 bits de données, et il est décrémenté de 1 à chaque fois qu'il est traité par un hôte intermédiaire entre le client et l'hôte destinataire. Si le TTL atteint 0, un message ICMP type 11 code 0 (TTL égal à 0 pendant le transit) ou code 1 (TTL égal à 0 pendant le réassemblage) est transmis à l'expéditeur du paquet pour l'informer du problème. Cette correspondance est utilisée seulement pour sélectionner les paquets à partir de leur TTL, et non pour effectuer un changement quel qu'il soit. Celui-ci, soit dit en passant, s'applique à tout type de correspondance. Pour charger cette correspondance, vous devez ajouter -m ttl à la règle.

Tableau 24. Correspondances TTL

Correspondance--ttl
Noyau2.3, 2.4, 2.5 et 2.6
Exempleiptables -A OUTPUT -m ttl --ttl 60
ExplicationCette option de correspondance permet de spécifier la valeur TTL à sélectionner. Cette option requiert une valeur numérique et établit une correspondance avec cette valeur dans le paquet. Aucune inversion n'est disponible et il n'y a rien d'autre, en particulier, à sélectionner. Mais ceci peut être utile, par exemple, pour déboguer votre réseau local - c'est-à-dire les hôtes de votre LAN qui semblent présenter des problèmes de connexion avec un hôte sur Internet - ou pour trouver d'éventuelles entrées de chevaux de Troie, etc. Les possibilités de cette option sont relativement limitées, cependant son intérêt dépend essentiellement de votre imagination. Un exemple pourrait être de trouver des hôtes avec de mauvaises valeurs par défaut de TTL (pouvant être la conséquence d'un pile TCP/IP mal implémentée, ou simplement d'un défaut de configuration).

Correspondance unclean

La correspondance unclean ne prend aucune option et ne nécessite rien de plus qu'un chargement explicite si vous souhaitez l'utiliser. Notez que cette option est considérée comme expérimentale, qu'elle peut ne pas fonctionner en toutes circonstances et qu'elle ne prendra pas en charge tous les paquetages ou problèmes relatifs à unclean. La correspondance unclean tente de sélectionner les paquets qui paraissent malformés ou inhabituels, comme des paquets avec des en-têtes ou des sommes de contrôle ("checksums") erronés. Elle peut être utilisée pour rejeter des connexions (avec la cible DROP) et pour rechercher les flux douteux, par exemple. Cela dit, vous devez être conscient qu'il existe un risque d'interruption de connexions saines.