Content-type: text/html
Manpage of IPTABLES
IPTABLES
Section: (8)
Updated: 9 mars 2002
Index
Return to Main Contents
NOM
iptables - outil d'administration pour le filtrage de paquets IPv4 et le NAT
RÉSUMÉ
iptables [-t table] -[AD] chaîne règle [options]
iptables [-t table] -I chaîne [numéro-de-règle] règle [options]
iptables [-t table] -R chaîne numéro-de-règle règle [options]
iptables [-t table] -D chaîne numéro-de-règle [options]
iptables [-t table] -[LFZ] [chaîne] [options]
iptables [-t table] -N chaîne
iptables [-t table] -X [chaîne]
iptables [-t table] -P chaîne cible [options]
iptables [-t table] -E ancien-nom-de-chaîne nouveau-nom-de-chaîne
DESCRIPTION
iptables
est utilisé pour mettre en place, maintenir et inspecter les tables
des règles de filtrage des paquets IP du noyau Linux. Différentes tables
peuvent être définies. Chaque table contient plusieurs chaînes
prédéfinies et peut aussi contenir des chaînes définies par l'utilisateur.
Chaque chaîne est une liste de règles que peuvent vérifier un ensemble
de paquets ; dans ce cas, on dit qu'on cherche à établir une correspondance
avec la règle. Chaque règle détermine ce qui doit être fait avec un
paquet qui correspond. Cette action est appellée une «cible», qui peut
être un saut vers une chaîne définie par l'utilisateur dans la même table.
CIBLES
Une règle de pare-feu spécifie des critères de correspondance pour
un paquet, et une cible. Si le paquet ne correspond pas, la
règle suivante de la chaîne est examinée ; s'il correspond,
la règle suivante est déterminée par la valeur de la cible, qui
peut être le nom d'une chaîne définie par l'utilisateur ou l'une
des valeurs spéciales suivantes :
ACCEPT,
DROP,
QUEUE
ou
RETURN.
ACCEPT
signifie que le paquet est autorisé à passer.
DROP
signifie que le paquet est détruit.
QUEUE
signifie que le paquet est transmis à l'espace utilisateur (si
cette option est reconnue par le noyau).
RETURN
signifie que l'on cesse de parcourir cette chaîne pour retourner dans
la chaîne précédente (appelante) en passant à la règle suivante.
Si on atteint la fin d'une chaîne prédéfinie ou s'il y a correspondance
avec une règle dans une chaîne prédéfinie ayant pour cible
RETURN,
la cible désignée par le comportement par défaut de la chaîne
détermine le sort du paquet.
TABLES
Il y a actuellement trois tables indépendantes (le moment où sont
présentes les tables dépend des options de configuration du noyau
et des modules chargés).
- -t, --table table
-
Cette option désigne la table de correspondance des paquets sur laquelle
la commande doit opérer. Si le noyau est configuré avec le chargement
automatique des modules, une tentative sera faite pour charger le module
approprié pour cette table, si ce n'est pas déjà fait.
Les tables sont les suivantes :
-
- filter :
-
C'est la table par défaut (si l'option -t est omise). Elle contient
les chaînes prédéfinies
INPUT
(pour les paquets entrants dans la machine),
FORWARD
(pour les paquets routés à travers la machine) et
OUTPUT
(pour les paquets générés localement).
- nat :
-
Cette table est consultée lorsqu'on rencontre un paquet qui crée une
nouvelle connexion. La table est composée de trois chaînes prédéfinies :
PREROUTING
(pour modifier les paquets dès qu'ils entrent),
OUTPUT
(pour modifier les paquets générés localement, avant le routage) et
POSTROUTING
(pour modifier les paquets lorsqu'ils sont sur le point de sortir).
- mangle :
-
Cette table est employée pour effectuer une modification spéciale des paquets.
Jusqu'au noyau 2.4.17, elle offrait deux chaînes prédéfinies :
PREROUTING
(pour modifier les paquets entrants, avant le routage) et
OUTPUT
(pour modifier les paquets générés localement, avant le routage).
Depuis le noyau 2.4.18, trois autres chaînes prédéfinies sont aussi
prises en charge :
INPUT
(pour les paquets entrants, destinés à la machine elle-même),
FORWARD
(pour modifier les paquets routés à travers la machine) et
POSTROUTING
(pour modifier les paquets lorsqu'ils sont sur le point de sortir).
OPTIONS
Les options reconnues par
iptables
peuvent être réparties en plusieurs groupes.
COMMANDES
Ces options précisent une action particulière à accomplir. Une seule
option peut être indiquée sur la ligne de commande, sauf indication
contraire. Pour tous les noms en version longue des commandes et des options,
vous avez le droit d'utiliser un nombre restreint de lettres du moment qu'
iptables
peut identifier chaque commande sans ambiguïté.
- -A, --append chaîne règle
-
Ajoute une ou plusieurs règles à la fin de la chaîne sélectionnée.
Lorsque les noms source et/ou destination désignent plus d'une adresse,
une règle sera ajoutée pour chaque combinaison d'adresses possible.
- -D, --delete chaîne règle
-
- -D, --delete chaîne numéro-de-règle
-
Efface une ou plusieurs règles de la chaîne sélectionnée. Il y a deux
versions de cette commande : on peut désigner la règle par sa position
dans la chaîne avec un numéro (commençant à 1 pour la première règle)
ou bien par une règle de correspondance avec sa syntaxe exacte.
- -I, --insert chaîne [numéro-de-règle] règle
-
Insère une ou plusieurs règles dans la chaîne sélectionnée à la position
donnée par le numéro de règle. Si ce numéro est 1, la ou les règles
sont insérées au début de la chaîne. C'est le comportement par défaut
si aucun numéro n'est spécifié.
- -R, --replace chaîne numéro-de-règle règle
-
Remplace une règle dans la chaîne sélectionnée. Si les noms source
et/ou destination désignent de multiples adresses, la commande
échouera. Les règles sont numérotées en partant de 1.
- -L, --list [chaîne]
-
Liste toutes les règles de la chaîne sélectionnée. Si aucune chaîne
n'est sélectionnée, toutes les chaînes sont listées. Comme toute commande,
elle s'applique à la table spécifiée (filter par défaut), ainsi les
règles de NAT sont listées avec
iptables -t nat -n -L
Notez qu'on l'utilise souvent avec l'option -n, pour éviter de longues
résolutions DNS inverses.
Il est autorisé de spécifier simultanément l'option
-Z
(zéro), auquel cas la ou les chaînes seront automatiquement listées
et les compteurs remis à zéro. La sortie exacte dépend des autres arguments
fournis. Les règles complètes sont omises sauf si vous exécutez
iptables -L -v
- -F, --flush [chaîne]
-
Vide la chaîne sélectionnée (ou toutes les chaînes de la table si
aucune n'est précisée). Ceci équivaut à effacer toutes les règles
une par une.
- -Z, --zero [chaîne]
-
Met à zéro le compteur de paquets et d'octets dans toutes les chaînes.
Il est autorisé d'associer l'option
-L, --list
(liste), pour visualiser les compteurs juste avant qu'ils ne soient
initialisés (voir ci-dessus).
- -N, --new-chain chaîne
-
Crée une nouvelle chaîne définie par l'utilisateur avec le nom indiqué.
Il ne doit pas déjà exister de cible de même nom.
- -X, --delete-chain [chaîne]
-
Efface la chaîne désignée définie par l'utilisateur. Il ne doit plus
exister de référence à cette chaîne. S'il en reste, vous devez effacer
ou remplacer les règles concernées avant de pouvoir effacer cette
chaîne. Si aucun argument n'est fourni, une tentative aura lieu pour
effacer dans la table toutes les chaînes non prédéfinies.
- -P, --policy chaîne cible
-
Configure le comportement par défaut (la stratégie) de la chaîne
avec la cible fournie. Voir la section
CIBLES
pour connaître les cibles autorisées. Seules les chaînes prédéfinies
(donc non définies par l'utilisateur) peuvent avoir un comportement
par défaut, et ni les chaînes prédéfinies ni les chaînes définies
par l'utilisateur ne peuvent être des cibles stratégiques.
- -E, --rename-chain ancien-nom-de-chaîne nouveau-nom-de-chaîne
-
Renomme la chaîne définie par l'utilisateur spécifiée avec le nom
fourni. C'est un changement cosmétique qui n'a aucun effet sur la
structure de la table.
- -h
-
Aide.
Donne une description (pour l'instant succincte) de la syntaxe d'une
commande.
PARAMÈTRES
Les paramètres suivants composent une spécification de règle (quand
ils sont utilisés dans les commandes add, delete, insert,
replace et append).
- -p, --protocol [!] protocole
-
Protocole de la règle ou du paquet à vérifier. Le protocole spécifié
est l'un des suivants :
tcp,
udp,
icmp
ou
all,
ou bien sous forme d'une valeur numérique, représentant un de ces
protocoles ou un protocole différent. Un nom de protocole issu du
fichier /etc/protocols est aussi autorisé. Un «!» avant le protocole
inverse le test. La valeur zéro est équivalente à
all.
Le protocole
all
correspond à tous les protocoles ; c'est aussi la valeur par défaut
lorsque cette option est omise.
- -s, --source [!] adresse[/masque]
-
Spécification de la source. L'adresse
peut être un nom de réseau, un nom d'hôte (attention : spécifier
un nom à résoudre avec une requête distante de type DNS est vraiment
une mauvaise idée), une adresse de réseau IP (avec /masque) ou une
simple adresse IP.
Le
masque
peut être un masque de réseau ou un nombre entier spécifiant le nombre
de bits égaux à 1 dans la partie gauche du masque de réseau (bits de
poids fort). Par conséquent, un masque de
24
est équivalent à
255.255.255.0.
Un «!» avant la spécification d'adresse inverse la sélection d'adresse.
L'option
--src
est un synonyme de --source.
- -d, --destination [!] adresse[/masque]
-
Spécification de la destination. Voir la description du paramètre
-s
(source) pour une description détaillée de la syntaxe. L'option
--dst
est un synonyme de --destination.
- -j, --jump cible
-
Ceci détermine la cible de la règle ; c'est-à-dire ce qu'il faut
faire si le paquet correspond à la règle. La cible peut être une chaîne
définie par l'utilisateur (autre que celle dans laquelle se situe
cette règle), une des cibles prédéfinies qui décide immédiatement du
sort du paquet, ou une extension (voir
EXTENSIONS
ci-dessous). Si cette option est omise dans une règle, la correspondance
d'un paquet avec la règle n'aura aucun effet sur le sort du paquet,
mais les compteurs seront incrémentés.
- -i, --in-interface [!] [nom]
-
Nom de l'interface qui reçoit les paquets (seulement pour les paquets
passant par les chaînes
INPUT,
FORWARD
et
PREROUTING).
Lorsqu'un «!» est utilisé avant le nom d'interface, la sélection
est inversée. Si le nom de l'interface se termine par un «+», il désigne
toutes les interfaces commençant par ce nom. Si cette option est omise,
toutes les interfaces réseau sont désignées.
- -o, --out-interface [!] [nom]
-
Nom de l'interface qui envoie les paquets (seulement pour les paquets
passant par les chaînes
FORWARD,
OUTPUT
et
POSTROUTING).
Lorsqu'un «!» est utilisé avant le nom d'interface, la sélection
est inversée. Si le nom de l'interface se termine par un «+», il désigne
toutes les interfaces commençant par ce nom. Si cette option est omise,
toutes les interface réseau sont désignées.
- [!] -f, --fragment
-
Avec cette option, la règle s'applique seulement aux paquets fragmentés,
mais seulement à partir du deuxième fragment. Comme il est impossible
d'en déterminer les ports source ou destination (ou le type ICMP),
aucune règle ne pourra établir de correspondance sur ces critères.
Lorsqu'un «!» précède l'option «-f», la règle ne s'applique qu'aux
fragments d'en-tête ou aux paquets non fragmentés.
- -c, --set-counters paquets octets
-
Ceci autorise l'administrateur à initialiser les compteurs de paquets
et d'octets d'une règle (lors des opérations
INSERT,
APPEND,
REPLACE).
AUTRES OPTIONS
Les options supplémentaires suivantes peuvent être employées :
- -v, --verbose
-
Sortie verbeuse. Cette option indique à la commande --list d'afficher
le nom de l'interface, les options de la règle (s'il y en a) et les
masques de TOS (type de service). Les compteurs de paquets et d'octets
sont aussi affichés, avec les suffixes 'K', 'M' ou 'G' qui multiplient
respectivement par 1 000, 1 000 000 et 1 000 000 000 (mais vous
pouvez affiner ça avec l'option -x).
Pour les ajouts, insertions, effacements et remplacements, sont
fournies des informations détaillées sur la ou les règles à afficher.
- -n, --numeric
-
Sortie numérique. Les adresses IP et les numéros de ports sont affichés
au format numérique. Par défaut, le programme essaie de les afficher
sous forme de noms d'hôtes, de noms réseaux ou de services (lorsque
c'est applicable).
- -x, --exact
-
Nombres étendus. Affiche la valeur exacte des compteurs de paquets et
d'octets, au lieu d'afficher un nombre arrondi avec K (multiple de 1 000),
M (multiple de 1 000K) ou G (multiple de 1 000M). Cette option n'est
utile qu'avec la commande -L.
- --line-numbers
-
Lorsque les règles sont listées, ceci ajoute un numéro de ligne au
début de chaque règle, équivalant à la position de cette règle dans
la chaîne.
- --modprobe=commande
-
Lorsqu'on ajoute ou insère des règles dans une chaîne, utilisez la
commande
pour charger les modules nécessaires (cibles, extensions de correspondance,
etc).
EXTENSIONS DE CORRESPONDANCE
iptables peut utiliser des modules additionnels de correspondance
de paquets. Ceux-ci peuvent être chargés de deux manières : implicitement,
lorsque
-p
ou
--protocol
est employé, ou avec l'option
-m
ou --match,
suivie du nom du module de correspondance ; après cela, des options
supplémentaires en ligne de commande deviennent disponibles, en fonction
du module. Vous pouvez spécifier plusieurs modules de correspondance
sur une même ligne, et utiliser l'option
-h
ou
--help
après avoir spécifié le module, pour visualiser l'aide relative à
ce module.
Ce qui suit est inclus dans le paquetage de base et la plupart des
options peuvent être précédées par un
!
pour inverser la sélection.
ah
Ce module cherche une correspondance avec les indices SPI présents
dans l'en-tête AH des paquets IPSec.
- --ahspi [!] spi[:spi]
-
conntrack
Ce module, lorsqu'il est combiné avec du traçage de connexion, permet
d'accéder à davantage d'informations sur le traçage de connexion que
la correspondance «state» (ce module n'est disponible que si iptables
a été compilé avec un noyau acceptant cette particularité).
- --ctstate état-de-connexion
-
Le paramètre est une liste d'états de connexion (séparés par des virgules)
à vérifier. Les états possibles sont
INVALID
signifiant que le paquet n'est associé à aucune connexion connue,
ESTABLISHED
signifiant que le paquet est associé à une connexion qui a déjà vu
passer des paquets dans les deux sens,
NEW
signifiant soit que le paquet a initié une nouvelle connexion, soit
qu'il est associé à une connexion qui n'a pas vu passer de paquets
dans les deux sens, et
RELATED
signifiant que le paquet initie une nouvelle connexion, mais qu'il
est associé avec une connexion existante, comme un transfert de données
FTP ou une erreur ICMP.
SNAT
Un état virtuel, vérifié si l'adresse de source initiale diffère de
l'adresse de destination de la réponse.
DNAT
Un état virtuel, vérifié si l'adresse de destination initiale diffère
de l'adresse de source de la réponse.
- --ctproto protocole
-
Le protocole à vérifier (donné par le numéro ou le nom).
- --ctorigsrc [!] adresse[/masque]
-
Correspondance avec l'adresse de source initiale.
- --ctorigdst [!] adresse[/masque]
-
Correspondance avec l'adresse de destination initiale.
- --ctreplsrc [!] adresse[/masque]
-
Correspondance avec l'adresse de source de la réponse.
- --ctrepldst [!] adresse[/masque]
-
Correspondance avec l'adresse de destination de la réponse.
- --ctstatus [NONE|EXPECTED|SEEN_REPLY|ASSURED][,...]
-
Correspondance avec les états internes du module conntrack.
- --ctexpire temps[:temps]
-
Correspondance avec la durée de validité restante (en secondes) donnée
sous forme d'une valeur fixe ou d'un intervalle (bornes incluses).
dscp
Ce module cherche une correspondance avec le champ DSCP de 6 bits
dans le champ TOS de l'en-tête IP. DSCP a remplacé le TOS au sein
de l'IETF.
- --dscp valeur
-
Correspondance avec une valeur numérique [0-32] (sous forme décimale
ou hexa).
- --dscp-class Classe DiffServ
-
Correspondance avec la classe DiffServ. Cette donnée peut être une
des classes BE, EF, AFxx ou CSx. Elle pourra aussi être convertie
en sa valeur numérique équivalente.
esp
Ce module cherche une correspondance avec les indices SPI présents
dans l'en-tête ESP des paquets IPSec.
- --espspi [!] spi[:spi]
-
helper
Ce module cherche une correspondance avec les paquets en relation
avec un module spécifique d'aide au traçage de connexion (module
conntrack-helper).
- --helper chaîne
-
Correspondance avec les paquets en relation avec le module d'aide au
traçage de connexion désigné.
-
La chaîne peut être «ftp» pour les paquets liés à une session FTP
sur le port par défaut. Pour d'autres ports, ajoutez -numérodeport
à la chaîne, par exemple «ftp-2121».
Les mêmes règles s'appliquent aux autres modules d'aide au traçage
de connexion.
icmp
Cette extension est chargée si «--protocol icmp» est
spécifié. Elle procure l'option suivante :
- --icmp-type [!] nom_du_type_icmp
-
Ceci autorise la spécification d'un type ICMP, soit avec un type ICMP
numérique, soit avec l'un des noms de type ICMP fourni par la commande
iptables -p icmp -h
length
Ce module cherche une correspondance avec la longueur d'un paquet,
donnée par une valeur fixe ou un intervalle.
- --length longueur[:longueur]
-
limit
Ce module établit une correspondance avec les paquets en respectant
un débit limité, à l'aide d'un filtre à seau de jetons («token bucket
filter»). Une règle utilisant cette extension établira une correspondance
jusqu'à ce que cette limite soit atteinte (sauf si le «!» est employé).
Il peut être utilisé conjointement avec la cible LOG,
par exemple afin de limiter les messages de journalisation (log).
- --limit taux
-
Taux de correspondance moyen maximum : déterminé par un nombre, avec
un suffixe optionnel «/second», «/minute», «/hour»,
ou «/day» ; la valeur par défaut est 3/hour.
- --limit-burst nombre
-
Nombre initial maximum de paquets pouvant correspondre : ce nombre
est rechargé de 1 chaque fois que la limite définie précédemment
n'est pas atteinte, jusqu'à retrouver la valeur initiale ; la valeur
par défaut est 5.
mac
- --mac-source [!] adresse
-
Établit une correspondance avec l'adresse MAC source. Elle doit être de la
forme XX:XX:XX:XX:XX:XX. Notez que ceci n'a de sens que pour les paquets
en provenance d'une interface Ethernet et passant par les chaînes
PREROUTING,
FORWARD
ou
INPUT.
mark
Ce module cherche une correspondance avec le champ de marquage de
Netfilter associé à un paquet (celui-ci peut être positionné en
utilisant la cible
MARK
décrite ci-dessous).
- --mark valeur[/masque]
-
Établit une correspondance avec les paquets associés à la valeur de
marquage non-signée fournie (si un masque est spécifié, on effectue
un ET logique avec le masque avant la comparaison).
multiport
Ce module cherche les correspondances avec un ensemble de ports source
ou destination. On peut spécifier jusqu'à 15 ports. Il ne peut être
utilisé qu'en conjonction avec
-p tcp
ou
-p udp.
- --source-ports port[,port[,port...]]
-
Établit la correspondance si le port source est l'un des ports
spécifiés. Et
--sports
est un synonyme commode pour cette option.
- --destination-ports port[,port[,port...]]
-
Établit la correspondance si le port destination est l'un des ports
spécifiés. Et
--dports
est un synonyme commode pour cette option.
- --ports port[,port[,port...]]
-
Établit la correspondance si les ports source et destination
sont identiques, et égaux à l'un des ports spécifiés.
owner
Ce module tente d'établir une correspondance avec différentes
caractéristiques du créateur d'un paquet, pour les paquets générés
localement. Il est valide uniquement dans la chaîne
OUTPUT,
et même si certains paquets sans propriétaire (comme les réponses
ICMP d'un ping) ne correspondront jamais.
- --uid-owner id_utilisateur
-
Établit une correspondance si le paquet a été créé par un processus
avec l'identifiant d'utilisateur donné.
- --gid-owner id_de_groupe
-
Établit une correspondance si le paquet a été créé par un processus
avec l'identifiant de groupe donné.
- --pid-owner id_du_processus
-
Établit une correspondance si le paquet a été créé par un processus
avec le numéro de processus donné.
- --sid-owner id_de_session
-
Établit une correspondance si le paquet a été créé par un processus
dans le groupe de session donné.
- --cmd-owner nom_de_commande
-
Établit une correspondance si le paquet a été créé par un processus
avec le nom de commande donné (cette option n'est disponible que si
iptables a été compilé avec un noyau acceptant cette particularité).
physdev
Ce module cherche une correspondance sur un port de pont avec les
dispositifs d'entrée/sortie attachés à ce pont. Ce module fait partie
de l'infrastructure qui permet d'avoir un pare-feu IP transparent sur
un pont et n'est utile que pour les versions de noyaux supérieures
à 2.5.44.
- --physdev-in nom_de_port
-
Nom d'un port de pont par lequel un paquet est reçu (seulement pour
les paquets entrant dans les chaînes
INPUT,
FORWARD
et
PREROUTING).
Si le nom de l'interface se termine par un «+», il désigne toutes
les interfaces commençant par ce nom. Si le paquet ne provient pas
d'un pont, ce paquet ne correspondra pas avec cette option, sauf si
un «!» est employé.
- --physdev-out nom_de_port
-
Nom d'un port de pont par lequel un paquet est prêt à être envoyé
(seulement pour les paquets entrant dans les chaînes
FORWARD,
OUTPUT
et
POSTROUTING).
Si le nom de l'interface se termine par un «+», il désigne toutes
les interfaces commençant par ce nom. Notez que dans les chaînes
OUTPUT
des tables
nat et mangle,
aucune règle ne peut correspondre sur un port de sortie de pont, mais
que c'est possible dans la chaîne
OUTPUT
de la table
filter.
Si un paquet ne sort pas par un pont ou si l'on ne sait pas encore
quel est le dispositif de sortie, le paquet ne correspondra
pas avec cette option, sauf si un «!» est employé.
- --physdev-is-in
-
Établit une correspondance si le paquet est entré par une interface
de pont.
- --physdev-is-out
-
Établit une correspondance si le paquet sort par une interface de pont.
- --physdev-is-bridged
-
Établit une correspondance si le paquet est prêt à traverser un pont
et ne sera donc pas routé. Ce n'est utile que pour les chaînes FORWARD
et POSTROUTING.
pkttype
Ce module cherche une correspondance avec le type du paquet de la
couche liaison de données.
- --pkt-type [unicast|broadcast|multicast]
-
state
Ce module, lorsqu'il est associé avec du traçage de connexion, permet
d'accéder à l'état du traçage de connexion pour ce paquet.
- --state état-de-connexion
-
Le paramètre est une liste d'états de connexion (séparés par des
virgules) avec lesquels on cherche une correspondance. Les états
possibles sont
INVALID
signifiant que le paquet ne peut être identifié pour une raison
quelconque comme une exécution avec mémoire insuffisante et des
erreurs ICMP ne correspondant à aucune connexion connue,
ESTABLISHED
signifiant que le paquet est associé à une connexion qui a vu passer
des paquets dans les deux sens,
NEW
signifiant que le paquet a initié une nouvelle connexion, ou bien
qu'il est associé à une connexion qui n'a pas vu passer de paquets
dans les deux sens, et
RELATED
signifiant que le paquet initie une nouvelle connexion, mais qu'il est
associé à une connexion existante, comme un transfert de données
FTP ou une erreur ICMP.
tcp
Ces extensions sont chargées si l'option «--protocol tcp»
est spécifiée. Elle procure les options suivantes :
- --source-port [!] port[:port]
-
Spécification d'un port source ou d'un intervalle de ports. Ce peut
être le nom d'un service ou le numéro d'un port. Un intervalle (bornes
incluses) peut aussi être défini en utilisant le format suivant
port:port.
Si le premier port est omis, on considère que c'est «0» ; si le
dernier port est omis, on considère que c'est «65535». Si le second
port est plus petit que le premier, ils seront intervertis. Et
--sport
est un synonyme commode pour cette option.
- --destination-port [!] port[:port]
-
Spécification d'un port destination ou d'un intervalle de ports. Et
--dport
est un synonyme commode pour cette option.
- --tcp-flags [!] masque comp
-
Établit une correspondance lorsque les fanions TCP («TCP flags»)
coïncident avec ceux spécifiés. Le premier argument identifie les
fanions à examiner (sous la forme d'un liste de fanions séparés par
des virgules) et le deuxième argument identifie les fanions devant
être positionnés (toujours sous la forme d'une liste de fanions séparés
par des virgules). Les fanions sont :
SYN ACK FIN RST URG PSH ALL NONE.
Par conséquent, la commande
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST SYN
ne sélectionnera que les paquets ayant le fanion SYN positionné mais
également les fanions ACK, FIN et RST désactivés.
- [!] --syn
-
Établit une correspondance seulement avec les paquets TCP dont le
bit SYN est positionné et les bits ACK et RST sont désactivés. De
tels paquets sont utilisés pour les requêtes d'établissement de connexion
TCP ; par exemple, si l'on bloque ce type de paquets entrants sur
une interface, on empêchera les connexions TCP entrantes, mais les
connexions TCP sortantes ne seront pas affectées.
C'est équivalent à --tcp-flags SYN,RST,ACK SYN.
Si le signe «!» précède le «--syn», la sélection est inversée.
- --tcp-option [!] numéro
-
Établit une correspondance si l'option TCP indiquée est positionnée.
- --mss valeur[:valeur]
-
Établit une correspondance avec les paquets TCP de type SYN ou SYN/ACK
caractérisés par la valeur ou l'intervalle MSS spécifié, contrôlant
la taille maximale du paquet pour cette connexion.
tos
Ce module cherche une correspondance avec les 8 bits du champ Type
de Service (TOS) dans l'en-tête IP (ceci inclut les bits de priorité).
- --tos type_de_service
-
Cet argument à détecter est soit un nom standard (utiliser
iptables -m tos -h
pour afficher la liste), soit une valeur numérique.
ttl
Ce module cherche une correspondance avec le champ de durée de validité
(«Time To Live» ou TTL) de l'en-tête IP.
- --ttl valeur_ttl
-
Établit une correspondance avec la valeur TTL donnée.
udp
Ces extensions sont chargées si «--protocol udp» est spécifié. Elles
procurent les options suivantes :
- --source-port [!] port[:port]
-
Spécification d'un port source ou d'un intervalle de ports.
Voir la description de l'option
--source-port
de l'extension TCP pour obtenir des précisions.
- --destination-port [!] port[:port]
-
Spécification d'un port destination ou d'un intervalle de ports.
Voir la description de l'option
--destination-port
de l'extension TCP pour obtenir des précisions.
unclean
Ce module n'a aucune option, mais il tente d'établir une correspondance
avec les paquets qui semblent mal formés ou inhabituels. Cette option
est considérée comme expérimentale.
EXTENSIONS DE CIBLE
iptables peut utiliser des modules de cible additionnels : les
suivants sont inclus dans la distribution standard.
DNAT
Cette cible est seulement valide dans la table
nat,
dans les chaînes
PREROUTING
et
OUTPUT,
et dans les chaînes définies par l'utilisateur appelées par celles-ci.
Elle spécifie que l'adresse de destination du paquet doit être modifiée
(comme toutes celles des paquets à venir dans le cadre de cette connexion),
et que les règles doivent cesser d'être examinées. Elle accepte une option :
- --to-destination adresse-ip[-adresse-ip][:port-port]
-
qui peut définir une nouvelle et unique adresse IP de destination,
un intervalle d'adresses IP (bornes incluses) et éventuellement un intervalle
de ports (qui n'est valide que si la règle contient aussi
-p tcp
ou
-p udp).
Si aucun intervalle n'est spécifié, alors le port destination
ne sera jamais modifié.
-
Vous pouvez ajouter plusieurs options --to-destination. Si vous définissez
plus d'une adresse de destination, via un intervalle d'adresses ou via
plusieurs options --to-destination, un simple équilibrage de charge
de type «round-robin» (tour de rôle) sera effectué entre ces adresses.
DSCP
Cette cible permet de modifier la valeur des bits DSCP dans l'en-tête
TOS d'un paquet IPv4. Comme ceci transforme le paquet, on ne peut
l'utiliser que dans la table mangle.
- --set-dscp valeur
-
Donne au champ DSCP une valeur numérique (décimale ou hexa).
- --set-dscp-class classe
-
Donne au champ DSCP une classe DiffServ (services différenciés).
ECN
Cette cible permet de travailler de façon sélective sur les trous
noirs ECN connus. On ne peut l'utiliser que dans la table mangle.
- --ecn-tcp-remove
-
Supprime tous les bits ECN de l'en-tête TCP. Naturellement, ceci
ne peut être utilisé qu'avec
-p tcp.
LOG
Met en service la journalisation par le noyau pour les paquets qui
correspondent. Lorsque cette option est définie dans une règle, le
noyau Linux affichera des informations sur tous les paquets
correspondant avec cette règle (comme la plupart des champs de l'en-tête
IP) par l'intermédiaire des journaux du noyau (que l'on peut lire avec
dmesg
ou
syslogd(8)).
Ceci est une cible «non déterminante», c.-à-d. que l'analyse
de cette règle enchaîne nécessairement sur la règle suivante. Ainsi,
si vous voulez journaliser des paquets à rejeter, utilisez deux règles
distinctes avec le même critère de correspondance, en plaçant en
premier la cible LOG et ensuite la cible DROP (ou REJECT).
- --log-level niveau
-
Niveau de journalisation (sous forme numérique, ou voir syslog.conf(5)).
- --log-prefix préfixe
-
Préfixe les messages de journalisation avec le préfixe indiqué ;
jusqu'à 29 lettres de long, il est très utile pour différencier les
différents messages dans les fichiers journaux.
- --log-tcp-sequence
-
Journalise les numéros de séquence TCP. Ce peut être un risque pour
la sécurité si les fichiers journaux sont lisibles par les utilisateurs
ordinaires.
- --log-tcp-options
-
Journalise les options de l'en-tête des paquets TCP.
- --log-ip-options
-
Journalise les options de l'en-tête des paquets IP.
MARK
Ceci est utilisé pour activer la valeur de marquage de Netfilter
associée au paquet. Ceci est valide uniquement avec la table
mangle.
On peut l'utiliser par exemple conjointement avec iproute2.
- --set-mark marque
-
MASQUERADE
Cette cible est seulement valide dans la table
nat,
dans la chaîne
POSTROUTING.
Elle ne doit être utilisée que dans le cas d'une connexion où l'adresse
IP est assignée dynamiquement (liaison téléphonique) : si vous avez
une adresse IP statique, vous devez utiliser la cible SNAT. Le camouflage
(«masquerading») revient à effectuer une association (et une substitution)
de l'adresse de source avec l'adresse IP de l'interface par laquelle
les paquets sortent, mais cela a pour conséquence d'
oublier
les connexions lorsque l'interface est déconnectée. C'est un comportement
approprié, car au prochain établissement de la liaison, il y a peu de
chance d'obtenir la même adresse d'interface (par conséquent les
connexions déjà établies seront inévitablement perdues). Il existe
une option
- --to-ports port[-port]
-
qui définit un intervalle de ports source à utiliser, annule et
remplace la sélection heuristique de ports source du
SNAT
(voir ci-dessus). Ceci n'est valide que si la règle contient aussi
-p tcp
ou
-p udp.
MIRROR
Ceci est une cible de démonstration expérimentale qui inverse les
champs source et destination dans l'en-tête IP et retransmet
le paquet. Il est valide uniquement avec les chaînes
INPUT,
FORWARD
et
PREROUTING,
et avec les chaînes définies par l'utilisateur appelées par celles-ci.
Notez que les paquets sortants
NE
sont
PAS
vus par les autres chaînes de filtrage de paquets, de traçage de connexions
ou de traduction d'adresses (NAT), afin d'éviter les boucles infinies
et d'autres problèmes.
REDIRECT
Cette cible est seulement valide dans la table
nat,
dans les chaînes
PREROUTING
et
OUTPUT,
et dans les chaînes définies par l'utilisateur appelées par celles-ci.
Elle modifie l'adresse IP de destination pour envoyer le paquet à
la machine elle-même (les paquets générés localement sont convertis
vers l'adresse 127.0.0.1). Il existe une option
- --to-ports port[-port]
-
qui définit un port destination ou un intervalle de ports à utiliser :
sans cela, le port destination ne sera jamais modifié. Ceci n'est
valide que si la règle contient aussi
-p tcp
ou
-p udp.
REJECT
Cette cible est utilisée pour répondre par un paquet d'erreur à un
paquet qui correspond : à part cela, c'est équivalent à
DROP,
donc c'est une cible déterminante, concluant l'analyse d'une règle.
Cette cible est uniquement valide dans les chaînes
INPUT,
FORWARD
et
OUTPUT,
et dans les chaînes définies par l'utilisateur appelées par celles-ci.
L'option suivante contrôle la nature du paquet d'erreur retourné :
- --reject-with type
-
Le type donné peut être
icmp-net-unreachable
(réseau inaccessible),
icmp-host-unreachable
(machine inaccessible),
icmp-port-unreachable
(port inaccessible),
icmp-proto-unreachable
(protocole non utilisable),
icmp-net-prohibited
(réseau interdit),
icmp-host-prohibited
(machine interdite)
ou
icmp-admin-prohibited(*)
(communication interdite par l'administrateur), chacun retournant
le message d'erreur ICMP approprié (par défaut, port inaccessible).
L'option
tcp-reset
peut être utilisée dans les règles associées uniquement avec le protocole
TCP : on envoie en retour un paquet TCP RST. On l'utilise principalement
pour bloquer les sondes
ident
(113/tcp), ce qui arrive fréquemment lorsqu'on envoie des courriels à des
hôtes de messagerie inaccessibles (qui d'ailleurs n'accepteront pas
votre courrier).
- (*) L'utilisation du type icmp-admin-prohibited avec des noyaux qui
-
ne l'acceptent pas entraîne l'application de la cible DROP au lieu
de REJECT.
SNAT
Cette cible est seulement valide dans la table
nat,
dans la chaîne
POSTROUTING.
Elle spécifie que l'adresse source du paquet doit être modifiée
(ainsi que tous les futurs paquets de cette même connexion), et que les
règles doivent cesser d'être examinées. Elle prend un seul type d'option :
- --to-source adresse-ip[-adresse-ip][:port-port]
-
qui peut définir une nouvelle et unique adresse IP de destination,
un intervalle d'adresses IP (bornes incluses) et éventuellement un intervalle
de ports (qui n'est valide que si la règle contient aussi
-p tcp
ou
-p udp).
Si aucun intervalle de ports n'est spécifié, les ports source inférieurs
à 512 seront convertis vers d'autres ports inférieurs à 512 : ceux
compris entre 512 et 1023 inclus seront convertis vers des ports inférieurs
à 1024, et les autres seront convertis vers des ports supérieurs à 1024.
Lorsque c'est possible, aucune modification de ports n'est effectuée.
-
Vous pouvez ajouter plusieurs options --to-source. Si vous définissez
plus d'une adresse source, via un intervalle d'adresses ou via plusieurs
options --to-source, une simple alternance de type «round-robin» (tour
de rôle) sera effectuée entre ces adresses.
TCPMSS
Cette cible permet de modifier la valeur MSS des paquets TCP SYN,
pour contrôler la taille maximale des segments pour cette connexion
(habituellement, on la limite au MTU de l'interface de sortie moins
40). Naturellement, elle ne peut être utilisée qu'avec
-p tcp.
Cette cible est utilisée pour triompher des FAI à tendance criminelle
ou des serveurs qui bloquent les paquets ICMP de type «Fragmentation Needed»
(fragmentation nécessaire). Pour comprendre les symptômes d'un tel problème,
tout semble bien fonctionner sur votre pare-feu/routeur Linux, mais
les machines retranchées derrière ne peuvent échanger des paquets
volumineux :
-
- 1)
-
Les navigateurs web se connectent, puis s'interrompent sans plus recevoir de données.
- 2)
-
Les petits messages fonctionnent bien, mais les plus gros s'arrêtent.
- 3)
-
ssh fonctionne bien, mais scp s'arrête après l'initialisation initiale en
trois étapes («three-way handshake».
Solution de rechange : activer cette option et ajouter une règle
à votre configuration de pare-feu comme :
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN \
-j TCPMSS --clamp-mss-to-pmtu
- --set-mss valeur
-
Fixe explicitement l'option MSS à la valeur spécifiée.
- --clamp-mss-to-pmtu
-
Limite automatiquement le MSS à la valeur (MTU_de_la_liaison - 40).
- Ces options sont mutuellement exclusives.
-
TOS
Ceci est utilisé pour définir le champ de Type de Service (TOS) représenté
sur 8 bits dans l'en-tête IP. Ceci n'est valide que dans la table
mangle.
- --set-tos type_de_service
-
Pour le Type de Service, vous pouvez utiliser une valeur numérique,
ou exécuter
iptables -j TOS -h
pour afficher la liste des noms de TOS valides.
ULOG
Cette cible permet de journaliser dans un espace utilisateur des paquets
qui établissent une correspondance avec une règle. Lorsque cette cible
est désignée dans une règle, le noyau de Linux va multi-diffuser le
paquet par l'intermédiaire d'un connecteur («socket»)
netlink.
Un ou plusieurs processus de l'espace utilisateur peuvent alors souscrire
à divers groupes de multi-diffusion et recevoir les paquets. Tout comme
la cible LOG, c'est une règle non-déterminante, c'est-à-dire que
l'analyse d'une règle enchaîne sur la règle suivante.
- --ulog-nlgroup groupe_netlink
-
Définit le groupe netlink (1-32) vers lequel le paquet est envoyé.
La valeur par défaut est 1.
- --ulog-prefix préfixe
-
Préfixe les messages du journal avec le préfixe indiqué ; jusqu'à
32 caractères de long, et très utile pour différencier les messages
dans les journaux.
- --ulog-cprange taille
-
Nombre d'octets à copier dans l'espace utilisateur. Une valeur de 0
copie le paquet entier, sans tenir compte de sa taille. La valeur
par défaut est 0.
- --ulog-qthreshold taille
-
Nombre de paquets à mettre dans la file d'attente du noyau. Fixer
cette valeur par exemple à 10, accumule 10 paquets dans le noyau et
les transmet en un seul message «netlink» de multi-contenus (type «multipart»)
vers l'espace utilisateur. La valeur par défaut est 1 (pour la rétro-compatibilité,
c'est-à-dire avec les implémentations précédentes).
DIAGNOSTICS
Divers messages d'erreur sont envoyés vers la sortie d'erreur standard.
Un code de sortie de 0 correspond à un fonctionnement normal. Une ligne
de commande contenant des paramètres invalides ou abusifs génère un
code de sortie égal à 2, et les autres erreurs renvoient un code de
sortie égal à 1.
BOGUES
Des bogues ? Qu'est-ce que c'est ? ;-)
Bon... les compteurs ne sont pas fiables sur l'architecture sparc64.
COMPATIBILITÉ AVEC IPCHAINS
Cet
iptables
est très similaire à l'ipchains de Rusty Russell. La différence principale
est que les chaînes
INPUT
et
OUTPUT
sont uniquement traversées, respectivement par les paquets entrant
dans la machine locale et sortant de la machine locale. Par conséquent,
tous les paquets passent uniquement par une seule des trois chaînes
(sauf le trafic vers la boucle locale, qui implique à la fois les
chaînes INPUT et OUTPUT) ; auparavant, un paquet redirigé serait
passé par les trois chaînes.
L'autre différence principale est que
-i
fait référence à l'interface d'entrée ;
-o
fait référence à l'interface de sortie, et toutes les deux sont disponibles
pour les paquets entrant dans la chaîne
FORWARD.
iptables est un pur filtre à paquets lorsqu'il utilise la table par défaut
«filter», avec d'éventuels modules d'extensions. Cela devrait éliminer
la confusion qu'il pouvait y avoir avec la combinaison du camouflage
d'adresses IP et du filtrage de paquets vu précédemment. Les options
suivantes sont donc gérées différemment :
-j MASQ
-M -S
-M -L
Il y a quelques autres changements dans iptables.
VOIR AUSSI
iptables-save(8),
iptables-restore(8),
ip6tables(8),
ip6tables-save(8),
ip6tables-restore(8).
Le «Guide pratique du filtrage de paquets» (Packet-Filtering-HOWTO)
qui détaille l'utilisation d'iptables pour les techniques de filtrage,
le «Guide pratique de la traduction d'adresses réseau» (NAT-HOWTO)
qui détaille la traduction d'adresse réseau, et le Netfilter-Hacking-HOWTO
qui détaille le fonctionnement interne de Netfilter.
Consulter
http://www.netfilter.org/.
TRADUCTION
Christophe Donnier (mars 2002), Guillaume Audirac (août 2004)
AUTEURS
Rusty Russell a écrit iptables, avec la collaboration de Michael
Neuling.
Marc Boucher a suggéré à Rusty l'abandon d'ipnatctl en proposant
une structure générique de sélection de paquets dans iptables,
puis il écrivit la table mangle, la correspondance avec le propriétaire,
des choses sur le marquage, puis s'en fut faire d'autres choses géniales
un peu partout.
James Morris a écrit la cible du Type de Service (TOS) et les
correspondances de TOS.
Jozsef Kadlecsik a écrit la cible REJECT.
Harald Welte a écrit la cible ULOG, les correspondances et les
cibles TTL, DSCP, ECN.
L'équipe principale de Netfilter est composée de : Marc Boucher,
Martin Josefsson, Jozsef Kadlecsik, James Morris, Harald Welte et
Rusty Russell.
La page de manuel a été écrite par Hervé Eychenne <rv@wallfire.org>.
AVERTISSEMENT SUR LA TRADUCTION
Il est possible que cette traduction soit imparfaite ou périmée. En cas de doute, veuillez vous reporter au document original en langue anglaise fourni avec le programme.
Index
- NOM
-
- RÉSUMÉ
-
- DESCRIPTION
-
- CIBLES
-
- TABLES
-
- OPTIONS
-
- COMMANDES
-
- PARAMÈTRES
-
- AUTRES OPTIONS
-
- EXTENSIONS DE CORRESPONDANCE
-
- ah
-
- conntrack
-
- dscp
-
- esp
-
- helper
-
- icmp
-
- length
-
- limit
-
- mac
-
- mark
-
- multiport
-
- owner
-
- physdev
-
- pkttype
-
- state
-
- tcp
-
- tos
-
- ttl
-
- udp
-
- unclean
-
- EXTENSIONS DE CIBLE
-
- DNAT
-
- DSCP
-
- ECN
-
- LOG
-
- MARK
-
- MASQUERADE
-
- MIRROR
-
- REDIRECT
-
- REJECT
-
- SNAT
-
- TCPMSS
-
- TOS
-
- ULOG
-
- DIAGNOSTICS
-
- BOGUES
-
- COMPATIBILITÉ AVEC IPCHAINS
-
- VOIR AUSSI
-
- TRADUCTION
-
- AUTEURS
-
- AVERTISSEMENT SUR LA TRADUCTION
-
This document was created by
man2html,
using the manual pages.
Time: 20:26:57 GMT, July 10, 2005