9.3. Commandes

Cette section expose les différentes commandes et ce qu'elles permettent de réaliser. La commande signifie à iptables ce qu'il faut faire du reste de la règle qui est envoyée à l'interpréteur. Typiquement, il s'agit soit d'ajouter, soit d'effacer quelque-chose dans une table quelconque. Les commandes suivantes sont disponibles pour iptables :

Tableau 9.2. Commandes

Commande -A, --append
Exemple iptables -A INPUT ...
Explication Cette commande ajoute une règle à la fin d'une chaîne. La règle sera donc placée en dernière position dans la table de règles, et par conséquent vérifiée en dernier, sauf si vous ajoutez par la suite des règles supplémentaires.
Commande -D, --delete
Exemple iptables -D INPUT --dport 80 -j DROP, iptables -D INPUT 1
Explication Cette commande supprime une règle dans une chaîne. Il existe deux moyens de le faire; soit en précisant la règle complète (comme dans le premier exemple), soit en indiquant le numéro de la règle que vous visez. Si vous optez pour la première méthode, votre règle doit correspondre exactement avec celle présente dans la chaîne. Avec la seconde méthode, vous devez pointer le numéro de la règle à effacer. Les règles sont numérotées à partir de 1 en commençant au début de chaque chaîne.
Commande -R, --replace
Exemple iptables -R INPUT 1 -s 192.168.0.1 -j DROP
Explication Cette commande remplace la règle présente à la ligne indiquée. Elle fonctionne comme la commande --delete, mais au lieu de supprimer complètement la règle, elle la remplace par une nouvelle. Cette commande est particulièrement commode dans une phase d'expérimentation d'iptables.
Commande -I, --insert
Exemple iptables -I INPUT 1 --dport 80 -j ACCEPT
Explication Cette commande insère une règle quelque-part dans une chaîne. La règle est insérée à l'emplacement donné par le numéro spécifié. En l'occurence, l'exemple précédent insère dans la chaîne INPUT la règle numéro 1, qui devient ainsi la toute première règle de la chaîne.
Commande -L, --list
Exemple iptables -L INPUT
Explication Cette commande dresse la liste des entrées de la chaîne donnée. Dans l'exemple précédent, on liste toutes les règles de la chaîne INPUT. Il est aussi possible de ne spécifier aucune chaîne. Dans ce cas, la commande listera toutes les chaînes de la table spécifiée (pour spécifier la table, voir la section Les tables). La sortie exacte dépend des autres options envoyées à l'interpréteur, par exemple les options -n et -v, etc.
Commande -F, --flush
Exemple iptables -F INPUT
Explication Cette commande vide la chaîne donnée de toutes ses règles. Elle équivaut à effacer les règles une à une, mais se révèle un peu plus rapide. Appelée sans option, cette commande revient à supprimer toutes les règles de toutes les chaînes dans la table spécifiée.
Commande -Z, --zero
Exemple iptables -Z INPUT
Explication Cette commande permet de mettre à zéro tous les compteurs dans une chaîne spécifique ou dans toutes les chaînes. Si vous utilisez l'option -v avec la commande -L, vous afficherez le compteur de paquets au début de chaque champ. Pour mettre à zéro le compteur de paquets, utilisez l'option -Z. Elle fonctionne de la même façon que -L, sauf que -Z ne liste pas les règles. Si -L et -Z sont utilisées ensemble (ce qui est autorisé), les chaînes sont dans un premier temps listées, puis les compteurs de paquets sont mis à zéro.
Commande -N, --new-chain
Exemple iptables -N allowed
Explication Cette commande stipule au noyau de créer une nouvelle chaîne avec le nom indiqué dans la table spécifiée. Dans l'exemple ci-dessus, on crée une chaîne nommée allowed. Notez qu'aucune chaîne ou cible de ce nom ne doit préalablement exister.
Commande -X, --delete-chain
Exemple iptables -X allowed
Explication Cette commande efface de la table la chaîne spécifiée. Pour que cette commande fonctionne, il ne doit subsister aucune règle faisant référence à la chaîne à effacer. Autrement dit, vous devez remplacer ou supprimer toutes les règles qui pourraient se référer à la chaîne concernée avant de pouvoir l'effacer. Appelée sans option, cette commande efface toutes les chaînes de la table spécifiée, exceptées les chaînes pré-définies.
Commande -P, --policy
Exemple iptables -P INPUT DROP
Explication Cette commande indique au noyau de configurer une cible par défaut - ou une stratégie - sur une chaîne. Ceci conditionne le comportement par défaut de la chaîne. Les paquets qui n'établissent de correspondance avec aucune règle sont contraintes de suivre la stratégie de la chaîne. Les seules cibles autorisées sont DROP et ACCEPT (il pourrait y en avoir d'autres, écrivez-moi si c'était le cas).
Commande -E, --rename-chain
Exemple iptables -E allowed disallowed
Explication La commande -E stipule à iptables de modifier le nom d'une chaîne du premier nom vers le second. Dans l'exemple fourni, on change le nom de la chaîne allowed en disallowed. Remarquez que ceci n'affecte en rien le fonctionnement actuel de la table. C'est juste une modification cosmétique du contenu de la table.

Chaque ligne de commande doit être saisie entièrement, sauf si vous souhaitez seulement bénéficier de l'aide en ligne d'iptables ou obtenir la version de la commande. Utilisez l'option -v pour afficher la version, et -h pour visualiser l'aide. Ci-dessous sont présentées quelques options utilisables avec des commandes diverses. On décrit l'effet des options et les commandes qu'elles concernent. Notez que les options incluses ici n'affectent ni les règles, ni les correspondances. Néanmoins, les correspondances et les cibles sont examinées dans une section ultérieure de ce chapitre.

Tableau 9.3. Options

Option -v, --verbose
Commandes comptatibles --list, --append, --insert, --delete, --replace
Explication Cette option correspond au mode verbeux qui délivre un affichage détaillé. Elle est surtout utilisée avec la commande --list ; dans ce cas, elle affiche l'adresse de l'interface, les options des règles et les masques de TOS. Elle inclut également un compteur d'octets et de paquets pour chaque règle. Ces compteurs intègrent les suffixes multiplicateurs K (x1000), M (x1.000.000) et G (x1.000.000.000). Vous pouvez suspendre ce mode et obtenir les valeurs exactes avec l'option -x, décrite plus loin. Quand l'option --verbose est utilisée avec une des commandes --append, --insert, --delete ou --replace, le programme fournit des informations détaillées sur la façon dont la règle est interprétée, si elle est insérée correctement, etc.
Option -x, --exact
Commandes compatibles --list
Explication Cette option affine les valeurs numériques. En d'autres termes, la commande --list n'affiche plus les suffixes multiplicateurs K, M ou G. A la place, elle délivre les valeurs exactes des compteurs donnant le nombre de paquets et d'octets qui ont correspondu à chaque règle. Notez que cette option ne fonctionnne qu'avec la commande --list, et qu'elle n'est applicable avec aucune autre commande.
Option -n, --numeric
Commandes compatibles --list
Explication Cette option indique à iptables de sortir les informations en format numérique. Les adresses IP et numéros de port sont affichés sous forme de valeurs numériques au lieu des noms d'hôtes, de réseaux ou d'applications. Cette option s'applique seulement à la commande --list. Elle se substitue au comportement par défaut qui tente de résoudre toutes les valeurs numériques en noms d'hôtes ou de services dès que c'est possible.
Option --line-numbers
Commandes compatibles --list
Explication L'option --line-numbers associée à la commande --list permet d'afficher aussi les numéros de ligne. Avec cette option, chaque règle est donc affichée avec son numéro, ce qui s'avère pratique pour identifier les règles et leur numéro avant d'insérer d'autres règles. Cette option ne fonctionne qu'avec la commande --list.
Option -c, --set-counters
Commandes compatibles --insert, --append, --replace
Explication Cette option est utile lors d'une création de règle ou de certaines modifications. Elle permet d'initialiser les compteurs de paquets et d'octets pour une règle. La syntaxe ressemble à --set-counters 20 4000, ce qui stipule au noyau de mettre le compteur de paquets à 20 et le compteur d'octets à 4000.
Option --modprobe
Commandes compatibles Toutes
Explication L'option --modprobe permet de préciser à iptables quel module utiliser lorsqu'il détecte les modules ou qu'il cherche à en ajouter au noyau. Elle est aussi pratique si la commande modprobe n'est pas accessible par défaut sur votre système. Dans certains cas, spécifier cette option est nécessaire pour que le programme sache quoi faire lorsqu'un module utile n'est pas chargé. Elle est utilisable avec toutes les commandes.