zion - iptables
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 :
nat :
mangle :
|
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
.ns |
-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 .nf iptables -t nat -n -L .fi 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 .nf iptables -L -v .fi |
-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][/col][/row][/table]
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
--ctproto protocole
--ctorigsrc [!] adresse[/masque]
--ctorigdst [!] adresse[/masque]
--ctreplsrc [!] adresse[/masque]
--ctrepldst [!] adresse[/masque]
--ctstatus [NONE|EXPECTED|SEEN_REPLY|ASSURED][,...]
--ctexpire temps[:temps]
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
--dscp-class Classe DiffServ
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
Icmp Cette extension est chargée si «--protocol icmp» est spécifié. Elle procure l'option suivante : --icmp-type [!] nom_du_type_icmp
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
--limit-burst nombre
Mac --mac-source [!] adresse
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]
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...]]
--destination-ports port[,port[,port...]]
--ports port[,port[,port...]]
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
--gid-owner id_de_groupe
--pid-owner id_du_processus
--sid-owner id_de_session
--cmd-owner nom_de_commande
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
--physdev-out nom_de_port
--physdev-is-in
--physdev-is-out
--physdev-is-bridged
Pkttype Ce module cherche une correspondance avec le type du paquet de la couche liaison de données. --pkt-type [unicast|broadcast|multicast] |
State
[table][row]
--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 .nf iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST SYN .fi 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
--set-dscp-class classe
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
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
--log-prefix préfixe
--log-tcp-sequence
--log-tcp-options
--log-ip-options
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
[table][row]
--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]
[table][row]
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 :
|
Solution de rechange : activer cette option et ajouter une règle à votre configuration de pare-feu comme : .nf iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu .fi
--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 .nf iptables -j TOS -h .fi 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). |
Diagnostiques
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.
Bugs
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 . .PP Les différentes formes de NAT ont été séparées ; 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 : .nf -j MASQ -M -S -M -L .fi 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>.
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.
Poster un commentaire