18.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. Les aspects suivants du paquet sont le plus souvent utilisés comme critère :

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

Les options utilisées avec des règles iptables données doivent être regroupées logiquement en fonction du but et des conditions de la règle globale, afin que la règle soit valide. Le reste de cette section examine des options couramment utilisées avec la commande iptables.

18.3.1. Structure des options d'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 filter par défaut devant être utilisée 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> figurent des paires de paramètres et d'options qui définissent comment traiter un paquet répondant aux critères de la règle.

En examinant la structure d'une commande iptables, il est important de se rappeler que contrairement à la plupart autres commandes, la longueur et la complexité d'une commande iptables varie en fonction de son but. Une commande destinées à éliminer une règle d'une chaîne peut être très courte, alors qu'une commande visant à filtrer les paquets d'un sous-réseau à l'aide d'un certain nombre de paramètres et d'options peut être plutôt longue. Lors de la création de commandes iptables, il est important de savoir que nombre de paramètres et d'options peuvent nécessiter des paramètres et d'options supplémentaires pour mieux rafiner la requête de l'option précédente. Pour élaborer une règle valide, cette chaîne d'actions doit continuer jusqu'à ce que chaque paramètre et option nécessitant un autre ensemble d'options ait été traité.

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

18.3.2. Options de commande

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

Les options de commande disponibles avec iptables sont les suivantes :

18.3.3. Options de paramètre d'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.

18.3.4. Options de concordance d'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é en 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 des options soient disponibles pour le protocole spécifié.

18.3.4.1. Protocole TCP

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

  • --dport — Paramètre le port de destination pour le paquet. Vous pouvez utiliser le nom d'un service 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 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 valide est 0:65535.

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

  • --sport — Paramètre 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 à des paquets TCP avec des bits ou des indicateurs définis, d'être comparés à une règle. L'option de concordance --tcp-flags accepte deux paramètres. Le premier est le masque, qui définit l'indicateur à examiner dans le paquet. Le second se rapporte à l'indicateur qui doit être défini pour la concordance.

    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 (!).

18.3.4.2. Protocole UDP

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

  • --dport — Spécifie le port de destination du paquet UDP, utilisant le nom du service, le numéro de port ou une plage de numéros de ports. L'option de concordance --destination-port est identique à l'option --dport.

  • --sport — Spécifie le port d'origine du paquet UDP, utilisant le nom du service, le numéro de port ou une plage de numéros de ports. L'option de concordance --source-port est identique à l'option --sport.

18.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étermine 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.

18.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 des modules qui fournissent des fonctionnalités supplémentaires.

Ci-dessous figure 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. Cette option se révèle tout particulièrement utile lorsqu'elle est utilisée avec la cible LOG car elle permet d'éviter que les paquets concordants n'inondent le journal du système avec des messages répétitifs ou qu'ils ne consomment trop de ressources système. Reportez-vous à la Section 18.3.5 pour obtenir de plus amples informations sur la cible LOG.

    Le module limit active les options suivantes :

    • --limit — Détermine le nombre de concordances pour un espace-temps donné, grâce à un modificateur nombre (number) et temps (time) paramétré selon le fomrat suivant : <number>/<time>. Par exemple, en écrivant --limit 5/hour, une règle effectue son contrôle de concordance seulement cinq fois en une heure.

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

    • --limit-burst — Détermine le nombre de paquets pouvant être comparés à une règle, à un moment donné. Cette option qui devrait être utilisée conjointement avec l'option --limit, accepte un numéro pour définir le seuil maximal.

      Si aucun numéro n'est indiqué, cinq paquets seulement sont au départ comparés à la règle.

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

    Le module state active les options suivantes :

    • --state — Établit la correspondance d'un paquet avec les états de connexion suivants :

      • ESTABLISHED — Le paquet concordant est associé à d'autres paquets dans une connexion établie.

      • INVALID — Ce paquet concordant ne peut être pas lié à une connexion connue.

      • NEW — Le paquet concordant crée une nouvelle connexion ou fait partie d'une connexion à double sens qui n'a pas été vue précédemment.

      • RELATED — Le paquet concordant établit une nouvelle connexion qui est d'une manière ou d'une autre apparentée à 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 — Active la concordance d'une adresse MAC matérielle.

    Le module mac active l'option suivante :

    • --mac-source — Établit la correspondance avec 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 les autres options de concordance disponibles à l'aide des modules, reportez-vous à la page de manuel de iptables.

18.3.5. Options de cible

Une fois qu'un paquet concorde avec 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, effectueront des actions supplémentaires. Chaque chaîne possède une cible par défaut qui est utilisée si aucune des règles de cette chaîne ne correspond à un paquet ou si aucune des règles qui correspondent au paquet ne spécifie de cible particulière.

Ci-dessous figurent les cibles standard :

Outre ces cibles standard, d'autres cibles peuvent être utilisées avec des extensions appelées modules cibles. Pour obtenir de plus amples informations sur les modules d'options pour la concordance, reportez-vous à la Section 18.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 sont très utiles pour le masquage d'IP à l'aide de la table nat ou avec la modification de paquets à l'aide de la table mangle, figurent dans la page de manuel d'iptables.

18.3.6. Options de listage

La commande de listage par défaut, iptables -L, fournit un aperçu très élémentaire des chaînes actuelles contenues dans la table de filtres par défaut. L'utilisation d'options supplémentaires telles que celles énumérées ci-dessous, permettent d'obtenir davantage d'informations :