17.3. Options utilisées avec les commandes iptables

Les règles permettant le filtrage de paquets sont mises en oeuvre en exécutant la commande iptables. Lorsque vous utilisez la commande iptables, vous devez spécifier les options suivantes :

Pour obtenir de plus amples informations sur des options spécifiques qui correspondent à ces aspects de paquets, reportez-vous à la Section 17.3.4 et à la Section 17.3.5.

Les options utilisées avec une règle iptables donnée doivent être logiquement groupées, sur la base du but et des conditions de la règle générale, afin que la règle soit valide. Le reste de cette section détaille des options couramment utilisées avec la commande iptables.

17.3.1. Structure des options de iptables

Beaucoup de commandes iptables ont la structure suivante :

iptables [-t <table-name>] <command> <chain-name> <parameter-1> \
         <option-1> <parameter-n> <option-n>

L'option <table-name> permet à l'utilisateur de sélectionner une autre table que la table par défaut filter à utiliser avec cette commande. L'option <command> stipule une action spécifique à accomplir, telle que l'ajout ou l'élimination d'une règle spécifiée par <chain-name>. Après l'option <chain-name> se trouve une paire de paramètres et d'options servant à définir l'action à entreprendre lorsqu'un paquet correspond aux critères de la règle.

En examinant la structure d'une commande iptables, il est important de se rappeler que contrairement aux autres commandes, la longueur et la complexité d'une commande iptables varie en fonction de son objectif. Une simple commande servant à éliminer une règle d'une chaîne peut être très courte, alors qu'une commande servant à filtrer les paquets d'un sous-réseau faisant appel à un certain nombre de paramètres et d'options sera plutôt longue. Lors de la création de commandes iptables, il est important de se rappeler que certains paramètres et options peuvent nécessiter la création de paramètres et options supplémentaires pour mieux définir la requête de l'option précédente. Pour écrire une règle valide, cette chaîne d'actions doit continuer jusqu'à ce que chaque paramètre et option nécessitant une autre série d'options soit satisfait.

Entrez la commande iptables -h pour obtenir une liste exhaustive de structures de commandes iptables.

17.3.2. Options de commandes

Les options de commandes donnent à iptables l'instruction d'exécuter une action spécifique. Seule une option de commandes est autorisée par commande iptables. À l'exception de la commande d'aide, toutes les autres commandes doivent être écrites en majuscules.

Les commandes iptables disponibles sont les suivantes :

17.3.3. Options de paramètres de iptables

Une fois que certaines commandes iptables ont été spécifiées (y compris celles utilisées pour l'ajout, l'élimination, l'insertion ou le remplacement de règles à l'intérieur d'une chaîne donnée), il est nécessaire d'ajouter d'autres paramètres pour la construction d'une règle de filtrage de paquets.

17.3.4. Options de concordance de iptables

Différents protocoles réseau offrent des options de contrôle de concordance spécifiques qui peuvent être configurées de manière à comparer un paquet donné utilisant ce protocole. Évidemment, il est nécessaire d'identifier préalablement le protocole en question dans la commande iptables. Par exemple, -p tcp <protocol-name> (où <protocol-name> correspond au protocole cible) fait en sorte que ces options soient disponibles.

17.3.4.1. Protocole TCP

Les options de concordance disponibles pour le protocole TCP (-p tcp) sont les suivantes :

  • --dport — indique le port de destination pour le paquet. Vous pouvez utiliser un nom de service de réseau (comme www ou smtp), un numéro de port ou une plage de numéros de port pour configurer cette option. Pour parcourir les noms et alias de services réseau et les numéros de port utilisés, affichez le fichier /etc/services L'option de concordance --destination-port est identique à l'option --dport.

    Pour indiquer une plage précise de numéros de port, il suffit de séparer les numéros par le symbole des deux points (:), comme dans l'exemple suivant : -p tcp --dport 3000:3200. La plus grande plage possible est 0:65535.

    Utilisez un point d'exclamation (!) après l'option --dport pour comparer tous les paquets qui n'utilisent pas ce service de réseau ou port.

  • --sport — indique le port d'origine du paquet, en utilisant les mêmes options que --dport. L'option de concordance --source-port est identique à l'option --sport.

  • --syn s'applique à tous les paquets TCP, appelés communément paquets SYN, conçus pour initier la communication. Aucun paquet transportant des données de charge utile n'est touché. En plaçant un point d'exclamation (!) comme indicateur après l'option --syn, tous les paquets non-SYN seront comparés.

  • --tcp-flags — permet la comparaison avec une règle de paquets TCP ayant une taille en octets ou des indicateurs spécifiques. L'option de concordance --tcp-flags accepte deux paramètres. Le premier paramètre est le masque, qui définit l'indicateur à examiner pour le paquet. Le second se rapporte aux indicateurs qui doivent être définis afin que la concordance puisse avoir lieu.

    Les indicateurs disponibles sont les suivants :

    • ACK

    • FIN

    • PSH

    • RST

    • SYN

    • URG

    • ALL

    • NONE

    Par exemple, une règle iptables contenant -p tcp --tcp-flags ACK,FIN,SYN SYN ne comparera que les paquets TCP ayant l'indicateur SYN défini et les indicateurs ACK et FIN non-définis.

    L'utilisation d'un point d'exclamation (!) après --tcp-flags inverse l'effet de l'option de concordance.

  • --tcp-option essaie de comparer des options spécifiques à TCP qui peuvent être définies dans un paquet donné. Cette option de concordance peut aussi être inversée en utilisant un point d'exclamation (!).

17.3.4.2. Protocole UDP

Les options de concordance suivantes s'appliquent au protocole UDP (-p udp) :

  • --dport — indique le port de destination du paquet UDP, en utilisant le nom du service, le numéro de port ou une plage de numéros de port. L'option de concordance --destination-port est identique à l'option --dport. Reportez-vous à l'option de concordance --dport dans la Section 17.3.4.1 pour obtenir des informations sur les modalités d'utilisation de cette option. option.

  • --sport — indique le port d'origine du paquet UDP en utilisant le nom de service, le numéro de port ou une plage de numéros de port. L'option de concordance --source-port est identique à l'option --sport. Reportez-vous à l'option de concordance --sport dans la Section 17.3.4.1 pour obtenir des informations sur les modalités d'utilisation de cette option.

17.3.4.3. Protocole ICMP

Les options de concordance suivantes sont disponibles pour le protocole Internet Control Message Protocol (ICMP) (-p icmp) :

  • --icmp-type — définit le nom ou le numéro du type d'ICMP à comparer avec cette règle. Une liste de noms ICMP valides est disponible en tapant la commande iptables -p icmp -h.

17.3.4.4. Modules avec options de concordance supplémentaires

Des options de concordance supplémentaires sont également disponibles par l'entremise des modules chargés par la commande iptables. Pour utiliser un module d'option de concordance, chargez le module en l'appelant par son nom à l'aide de l'option -m, comme par exemple : -m <module-name> (où <module-name> correspond au nom du module).

Un nombre important de modules est disponible par défaut. Il est même possible de créer vos propres modules pour fournir des options de concordance supplémentaires.

Voici une liste partielle des modules les plus couramment utilisés :

  • Module limit — permet de limiter le nombre de paquets qui sont comparés à une règle donnée. Ceci se révèle tout particulièrement pratique lors de son utilisation en conjonction avec la cible LOG afin d'éviter que les résultats n'entraînent l'invasion de vos journaux par des messages répétitifs ou ne consomment trop de ressources système. Reportez-vous à la Section 17.3.5 pour de plus amples informations sur la cible LOG.

    Le module limit permet les options suivantes :

    • --limit — limite le nombre de concordances dans un espace-temps donné, grâce à un modificateur de nombre et de temps paramétré sous la forme suivante : <nombre>/<temps>. Par exemple, en écrivant --limit 5/hour, une règle effectue son contrôle de concordance seulement cinq fois par heure.

      Si aucun modificateur de nombre ou temps n'est précisé, une valeur par défaut de 3/hour sera retenue.

    • --limit-burst — limite le nombre de paquets pouvant être comparés à une règle, à un moment donné. Cette option est à utiliser conjointement avec l'option --limit et accepte un numéro pour en définir le seuil.

      Si aucun numéro n'est indiqué, seulement cinq paquets sont en mesure d'être contrôlés à la règle.

  • module state — permet la concordance d'état.

    Ce module state permet les options suivantes :

    • --state — compare un paquet avec les états de connexion suivants :

      • ESTABLISHED — le paquet contrôlé est associé à d'autres paquets dans une connexion établie.

      • INVALID — le paquet contrôlé ne peut être associé à une connexion connue.

      • NEW — le paquet contrôlé crée une nouvelle connexion ou fait partie d'une connexion à double sens qui n'a pas encore été vue.

      • RELATED — le paquet contrôlé commence une nouvelle connexion liée d'une façon ou d'une autre à une connexion existante.

      Ces états de connexion peuvent être employés de concert avec d'autres à condition qu'ils soient séparés par des virgules, comme par exemple : -m state --state INVALID,NEW.

  • mac module — permet la concordance d'une adresse MAC matérielle.

    Le module mac permet l'option suivante :

    • --mac-source — compare une adresse MAC de la carte d'interface réseau qui a envoyé le paquet. Pour exclure une adresse MAC d'une règle, placez un point d'exclamation (!) après l'option de concordance --mac-source.

Pour obtenir des informations sur d'autres options de concordance disponibles avec les modules, reportez-vous à la page de manuel de iptables.

17.3.5. Options de cible

Une fois que la concordance d'un paquet a été contrôlée par une règle spécifique, cette dernière peut diriger le paquet vers un certain nombre de cibles qui décideront de son traitement et, si possible, entreprendront des actions supplémentaires. Chaque chaîne possède une cible par défaut qui est utilisée si aucune des règles de la chaîne ne correspond à un paquet ou si aucune des règles qui correspondent à un paquet ne spécifie de cible particulière.

Ci-dessous figurent les cibles standards :

Outre ces cibles standards, plusieurs autres cibles peuvent être utilisées avec des extensions appelées modules cibles. Pour obtenir de plus amples informations sur les modules d'options de concordance, reportez-vous à la Section 17.3.4.4.

Il existe de nombreux modules cibles étendus ; la plupart d'entre eux s'appliquent à des tables ou à des situations spécifiques. Ci-dessous figurent certains des modules cibles les plus répandus, inclus par défaut dans Red Hat Enterprise Linux :

D'autres extensions de cibles, dont bon nombre étant très utiles pour le masquage d'IP (ou masquerading) faisant appel à la table nat ou avec la modification de paquets à l'aide de la table mangle, se trouvent dans la page de manuel iptables.

17.3.6. Options de listage

La commande de listage par défaut, iptables -L, forunit un aperçu très élémentaire des chaînes actuelles contenues dans la table de filtres par défaut. Des options supplémentaires donnent plus d'informations :