_ ______________________________________ _ -b- `^°*;:,.> BTH RTFM DMZ CQFD(*) <.,:;*°^` _____________________/¯¯¯¯¯¯¯¯¯¯lansciac¯¯¯¯¯¯¯¯¯¯\_____________________ ¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø, 23/10/2002 Une savate ayant voyagé tout l'été sur les différentes places de l'Europe décida, pour une fois, de prendre un peu de repos. A coup de pelle, a coup de pioche, elle construisit son petit nid douillet. Fort de connaitre les trois petits cochons, elle fit directement sa maison en pierre. Heureuse dans son nouvel habitat, va sans dire loin de la capitale, elle coulait des jours heureux regardant les mouches papilloner et les papillons se faire moucher par son voisin de collectionneur. Tout était pour le mieux dans le meilleur des mondes. Et ce, jusqu'a ce qu'elle décide par pure folie de s'abonner a charlot magazine. Ce quotidien lui garantissait le contact avec des milliers de gens, cela chaque jour. Notre pauvre savate ne savait plus quoi faire, chaque jour des milliers de visiteurs venaient quémander a boire, savoir qui elle était, lui demandaient des dessins. Si tout cela s'eut stoppé la; l'affaire serait bonne et il n'y aurait point d'histoire, mais seulement, notre bonne petite savate se vut victime d'un vol. Avec tout ce passage, impossible de savoir qui était le mécréant. C'est pour cela qu'elle décida de construire plusieurs entrées a guichet. Chaque visiteur devant maintenant présenter sa patte afin de savoir ou il devrait se présenter. Voyant que cela fonctionnait fort bien, elle décida de nommer son invention. Le nom? IPtables. Pourquoi? A question simple, réponse simple, vous répondrait-elle. Table des Itinérants et autres Prestataires. C'est a quelques choses pres la véritable histoire d'iptables. --- L'histoire selon Linux --- Le filtrage de paquets semble nécessaire a partir du moment ou votre machine se connecte a une autre machine, et ce pour la simple et bonne raison que vous ne voulez en aucun cas que qui que ce soit vienne faire n'importe quoi chez vous sans votre autorisation. Pour cela, dés la version 1.1 de linux (j'entends par la le noyau, bien sûr, aucune amalgame avec GNU/Linux pour faire plaisir a rms, au grand désarroi de lt), Alan Cox a porté une premiere version de filtre fondé sur ipfw de BSD. il a été amélioré dans la version 2.0, entre autre par Jos Vos, mais ce n'est pas l'unique contributeur. Au milieu de l'année 1998, Rusty Russel et Michael Neuling retravaillerent le noyau et introduisirent l'outil ipchains. Ipchains réside sous linux 2.2. La derniere génération stable de noyau s'est vue fournie d'un outil de la quatrieme génération nommé iptables. Cela sous entend quoi? Qu'il vous est nécessaire d'avoir un noyau 2.4 (pour les noyaux stables) et de positionner "CONFIG_NETFILTER" a Y (pour Yes, oui en francais) dans la configuration de ce dernier. En pratique, vous avez acces a netfilter depuis le noyau 2.3.15, et vous devez donc pouvoir vous servir d'iptables par dessus. Qu'est ce qu'iptables en fait? Est ce le firewall? est ce un logiciel? est ce la recette de la potion magique? Pourquoi n'entend on pas les arbres qui tombent dans la foret? Iptables est un outil, une interface, permettant d'insérer et de supprimer les regles de la table du filtre de paquets du noyau. Le premier rang de légume est placé, nous pouvons commencer notre potager. --- IPTABLES --- Quelques petites regles sont a observer. La configuration de votre firewall est archivée dans votre noyau, ce qui signifie qu'au prochain redémarrage, toutes les regles seront perdues. Vous devez créer un fichier ou seront stockées toutes les regles et chaines qui vous semblent nécessaire. En tant que bon éleve, faites une copie du fichier. Russel préconise l'emploi de iptables-save et iptables-restore. Vous pouvez tout aussi bien les appeler remus et romulus, si ca vous parle et surtout si vous avez le courage de linker le tout. Il existe en effet des petites options pour iptables-save et iptables-restore qui peuvent s'avérer bien pratiques (voir leur man respectif pour en apprendre davantage). Placez votre script d'initialisation de regles a l'endroit adéquat. Assurez vous de faire quelque chose de réfléchi, au cas ou il y aurait un fouarage aléatoire lors de l'exécution de votre script (balancer un `exec /sbin/sulogin` par exemple). Maintenant que le décor est posé, il est nécessaire de regarder un petit peu plus en avant l'essentiel. Nous verrons donc deux parties. La premiere concerne la gestion des chaines, la deuxieme approche la gestion des regles a l'intérieur des chaines. A savoir qu'une chaine est constituée d'un ensemble de regles. Au commencement, vous possédez en tout et pour tout trois chaines vierges. INPUT, OUTPUT ET FORWARD. Vous voyez également que la politique mise en place est une politique d'acceptation (policy ACCEPT). Si aucune regle ne convient au traitement du paquet en cours d'analyse, il sera alors accepté. Chaines initiales Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination *Comment créer une nouvelle chaine? iptables -N votre_nom_de_chaine Vous remarquerez que votre_nom_de_chaine figure ici en minuscule. Par convention, les chaines définies par l'utilisateur sont écrites en minuscule pour les distinguer des autres. Votre chaine maintenant créée, vous pouvez la remplir de regles. Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain toto (0 references) target prot opt source destination Ajouter une nouvelle regle a une chaine : iptables -A Pour l'exemple, nous droperons tous les paquets icmp en provenance de 127.0.0.1: iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP Chain INPUT (policy ACCEPT) target prot opt source destination DROP icmp -- localhost.localdomain anywhere Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain toto (0 references) target prot opt source destination Notre regle a été correctement ajoutée. Nous reviendrons plus tard sur l'écriture conforme d'une regle. Pour les besoins de l'exemple, je prendrai le fait que, par mégarde, j'ai rentré quatre fois de suite la meme regle dans la meme chaine (sic). Nous obtenons donc: Chain INPUT (policy ACCEPT) target prot opt source destination DROP icmp -- localhost.localdomain anywhere DROP icmp -- localhost.localdomain anywhere DROP icmp -- localhost.localdomain anywhere DROP icmp -- localhost.localdomain anywhere Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain toto (0 references) target prot opt source destination Bien que tout ceci soit d'une absurdité totale, cela va nous permettre d'approcher deux nouvelles options. En effet, devant cette redondance de chaine, il va nous falloir faire le ménage! Pour cela, vous avez le choix entre l'effeuillage ligne par ligne ou alors le nettoyage complet. C'est l'option que l'on pourrait assimiler a la chasse d'eau, -F (ou --flush). Cette option vide completement une chaine. $>iptables -F nom_de_votre_chaine Attention! Si vous ne spécifiez aucune chaine, toutes les chaines seront vidées. *Comment effacer une chaine? Tout aussi simple que pour sa création $>iptables -X ma_chaine L'auteur d'iptables pose la question du X. Pourquoi employer cette lettre qui n'a réellement aucun sens. En effet, jusqu'a présent, ce que nous avons pu voir ramenait toujours vers un mot significatif; A pour add, N pour new, F pour flush, D pour delete. Alors, que diable, qu'est ce que fait ce X ici. En général, un X marque l'emplacement, peut-etre trouverez-vous un trésor derriere celui-ci. Pour ceux que cela intéresse vraiment, le X a été adopté car toutes les autres 'bonnes' lettres étaient déja prises :) De meme que pour l'option de flush, une petite regle a été insérée. Si aucune chaine n'est citée, iptables tentera d'effacer toutes les chaines définies par les utilisateurs. Vous ne pouvez pas supprimer les trois chaines crées par défaut, a savoir INPUT, OUTPUT et FORWARD. *Lister les chaines et leur contenu Toute création nécessite un regard sur son oeuvre. Vous ne pourrez en aucun cas travailler indéfiniment a l'aveuglette. Nous avons vu que les regles étaient stockées dans un fichier. Faire appel a ce fichier pour connaitre les regles instaurées releverait de la lourdeur la plus totale et surtout, cela ne prendrait en aucun cas les changements effectués entre temps. Il existe donc plusieurs commandes qui permettent de lister avec plus ou moins de renseignement les chaines et regles mises en place. * L'option -L Deux utilisation. Dans le premier cas, vous spécifiez que vous voulez uniquement voir la chaine passée en parametre. $>iptables -L INPUT Chain INPUT (policy ACCEPT) target prot opt source destination REJECT icmp -- localhost.localdomain anywhere reject-with icmp-port-unreachable Cela permet de travailler avec une visibilité accrue sur la chaine que vous paramétrez. Explication de l'affichage: ____________________________________________________________________________ Chain : chaine INPUT : Nom de la chaine (policy ACCEPT) : Si aucune regle ne correspond au paquet, il sera accepté. ---------------------------------------------------------------------------- target : Ce que l'on fait du paquet (accept, drop ou reject) prot : Protocole visé opt : options source : Endroit d'ou proviennent les paquets destination : Endroit ou vont les paquets ---------------------------------------------------------------------------- La derniere ligne présente correspond a une regle que l'on a ajoutée, ici elle signifie: Rejeter tous les paquets icmp en provenance de localhost. Plus spécifiquement, le correspondant envoie un paquet ICMP type 8 (echo request) et votre ordinateur renvoie normalement un paquet ICMP type 0 (echo reply). Avec la chaine présente, le correspondant un message comme quoi son correspondant n'est pas joignable (C'est qui? C'est le plombier). --------------------------------------------------------------------------- L'argument -L sans aucun autre parametre permet d'afficher toutes les chaines présentes, meme si elles ne contiennent aucune regle. $>iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination REJECT icmp -- localhost.localdomain anywhere reject-with icmp-port-unreachable Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination *La sous-option -v Encore appelée --verbose. Cette forme vous donnera des informations supplémentaires sur l'interface concernée (eth0, eth1, ppp0, etc...), le nombre de paquets ainsi que le nombre de bits transférés. $>iptables -L -v Chain INPUT (policy ACCEPT 21 packets, 4085 bytes) pkts bytes target prot opt in out source destination 20 1960 REJECT icmp -- any any localhost.localdomain anywhere reject-with icmp-port-unreachable Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 38 packets, 3283 bytes) pkts bytes target prot opt in out source destination *La sous-option -n Un certain nombre de parametres sont par défaut écrits de maniere compréhensible pour l'homme, a savoir "localhost.localdomain" représente en fait votre machine. L'ip définie par convention est 127.0.0.1. Cette option permet donc en un sens plus de rigueur dans sa lecture. $>iptables -L -v -n Chain INPUT (policy ACCEPT 31 packets, 4834 bytes) pkts bytes target prot opt in out source destination 20 1960 REJECT icmp -- * * 127.0.0.1 0.0.0.0/0 reject-with icmp-port-unreachable Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 50 packets, 4017 bytes) pkts bytes target prot opt in out source destination *La remise a zéro des compteurs Comme nous avons pu le voir dans les exemples précédents, vous avez la possibilité de relever le nombre de paquets et d'octets (bytes) que cela représente. Cela peut par exemple etre utile dans le cadre de la métrologie. $>iptables -L -v -n Chain INPUT (policy ACCEPT 25 packets, 4067 bytes) pkts bytes target prot opt in out source destination 30 2520 DROP icmp -- * * 127.0.0.1 0.0.0.0/0 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 55 packets, 6587 bytes) pkts bytes target prot opt in out source destination Ici, vous voyez que certaines chaines ont vu leurs compteurs incrémentés. Nous allons donc remettre tout cela a zéro. L'option que nous utiliserons sera -Z (pour zero). Vous pouvez aussi utilser --zero. Cette option combinée a l'option de listing vous permettra de récupérer la valeur des compteurs avant qu'ils soient remis a zéro. $>iptables -L -v -n -Z Chain INPUT (policy ACCEPT 25 packets, 4067 bytes) pkts bytes target prot opt in out source destination 30 2520 DROP icmp -- * * 127.0.0.1 0.0.0.0/0 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 55 packets, 6587 bytes) pkts bytes target prot opt in out source destination Zeroing chain `INPUT' Zeroing chain `FORWARD' Zeroing chain `OUTPUT' Controlons que tout soit bien remis a zéro: $>iptables -L -v -n Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 DROP icmp -- * * 127.0.0.1 0.0.0.0/0 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Les compteurs sont bien a leur état initial, l'opération s'est bien déroulée. *Les polices de sécurité de chaines Il nous reste un dernier point a voir pour les options concernant les chaines. Pour chaque chaine principale (INPUT, OUTPUT, FORWARD) Pour ce faire, la commande a utiliser sera: $>iptables -P INPUT DROP Chain INPUT (policy DROP) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Comme mentionné plus haut, une politique de sécurité stricte instaure la mise de DROP sur les chaines principales, ce qui oblige ainsi tous les paquets a etre traités. Cependant, ne faites cela que si vous comprenez ce que vous faites, dans le cas inverse, vous n'aurez plus acces au réseau... *Les regles Nous avons traité ce qui concernait les chaines, il nous faut maintenant nous concentrer sur leur contenu, a savoir les regles. Si l'on devait prendre une métaphore, on pourrait considérer que les chaines sont les océans et que les regles sont des fleuves. Chaque fleuve reliant un océan. *Créer une regle Avant toute chose, vous devez savoir dans quelle chaine vous allez placer votre regle. Celle-ci concerne t'elle une entrée (INPUT), une sortie (OUTPUT) ou transmission (FORWARD) d'un paquet. Vous pouvez également l'assigner a une sous chaine que vous aurez créée au préalable. Syntaxe : iptables -A chaine arguments exemple : iptables -A INPUT -s 127.0.0.1 -j DROP on demande a iptables d'ajouter dans la chaine INPUT les arguments suivant : -s 127.0.0.1 Dont la source est 127.0.0.1 -j DROP Refuser On refuse tout ce qui provient de l'hote local en entrée. Afin d'élargir notre champ de couverture, nous traiterons ici d'un certains nombre d'arguments que l'on peut passer a notre regle en ajout. Garder en tete que nous ne traitons ici que les parametres! N'oubliez donc pas comment se constitue une regle. Presque tout argument peut avoir son contraire. Il suffit pour cela de le faire suivre d'un point d'exclamation '!' $>iptables -A INPUT -s ! 127.0.0.1 -s, --source, --src Définit la provenance du paquet -d, --destination, --dst Définit la destination du paquet Pour ces définitions, vous pouvez viser une adresse unique, comme tout un réseau, pour cela, il suffit d'utiliser le masque de sous réseau. '192.168.21.0/24' est équivalent a '192.168.21.0/255.255.255.0'. Pour spécifier une adresse unique, vous utiliserez '/32' et pour au contraire couvrir l'ensemble des adresses, '0/0' (toutes les IP existantes). Vous avez également la possibilité de noter les dns (madchat.org, localhost), cependant, cela reste déconseillé. Si je décide de bloquer madchat sur mon réseau, je bloquerai également le serveur qui héberge les autres sites que madchat. Ceci est par conséquent tres embetant. -p, --protocol Définit le(s) protocole(s) choisi(s) Les protocoles que vous pouvez employer sont spécifiés dans /etc/protocols. Toutefois, la plupart du temps, vous vous réferrerez a 'tcp', 'udp' ou 'icmp'. Vous pouvez utiliser 'all' qui regroupe l'ensemble des protocoles. Lorsque l'option n'est pas spécifiée, 'all' est sélectionné par défaut. La casse employée pour la spécification du protocole n'a pas d'importance. $>iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP Vous restez insatisfait ? Vous désirez pouvoir filtrer vos paquets par drapeau (flag) sur tcp, sur le port source ou destination ? Pas de probleme. *TCP [chap] --tcp-flags Autorise le filtre sur des drapeau tcp spécifiques. La premiere liste de drapeau est composée du masque de ceux que vous voulez examiner, la deuxieme comporte tout ceux qui doivent voir leurs bits mis a un. $>iptables -A INPUT -p tcp --tcp-flags ALL SYN,ACK -j DROP $>iptables -L -vn Chain INPUT (policy ACCEPT 8058 packets, 3277K bytes) pkts bytes target prot opt in out source destination 5217 2287K all -- eth0 * 0.0.0.0/0 0.0.0.0/0 156 10856 all -- lo * 0.0.0.0/0 0.0.0.0/0 0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x3F/0x12 Ici, on veut tous les drapeau, a savoir : SYN, ACK, FIN, RST, URG, PSH il faut que les bits de SYN et ACK soient positionnés. Il existe encore deux autres drapeaux présents pour vous faciliter la tache: ALL et NONE. ALL regroupe l'ensemble des drapeaux et NONE bien évidement aucun. --syn En corrélation avec l'option précédente. C'est un raccourci pour --tcp-flags SYN,RST,ACK SYN --sport, --source-port --dport, --destination-port Port source ou port destination. Vous pouvez utiliser les noms des ports que vous souhaitez (www, ftp, ...) comme dans /etc/services ou directement les numéros de ceux-ci. Pour décrire une plage, séparez le port de début du port de fin par deux points ':'. $>iptables -A INPUT -j ACCEPT -s 127.0.0.1 -p tcp --sport 20:2000 Si vous désirez insérer la notion de "tous les ports supérieurs ou égal a" ou bien "tous les ports inférieurs ou égal a", laissez le champ vide avant ou apres les deux points, selon ce que vous désirez faire. $>iptables -A INPUT -j ACCEPT -s 127.0.0.1 -p tcp --sport 20: $>iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- localhost.localdomain anywhere tcp spts:ftp-data:2000 ACCEPT tcp -- localhost.localdomain anywhere tcp spts:ftp-data:65535 --tcp-option Vous permet de traiter les datagrammes en fonction des options passées a tcp, pour en savoir plus sur celles-ci, reportez-vous a : http://www.eisti.fr/res/res/rfc793/793-3.htm#option [/chap] *UDP [chap] --sport, --source-port --dport, --destination-port L'usage reste le meme que celui vu pour TCP. [/chap] *ICMP [chap] --icmp-type Cette option autorise le filtrage des paquets icmp selon leurs types. Vous retrouverez la liste des types a l'adresse suivante : http://www.netfilter.org/documentation/tutorials/blueflux/iptables-tutorial.html#ICMPTYPES Vous pouvez au choix nommer les types de maniere numérique, le premier nombre représentant le type, le deuxieme représentant le code, le tout étant séparé par un slash (/) $>iptables -A INPUT -p icmp --icmp-type 3/3 Chain INPUT (policy ACCEPT) target prot opt source destination icmp -- anywhere anywhere icmp port-unreachable Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination La seconde maniere vous invite a utiliser les types icmp par nom. Je vous dresse ici la liste existante $>iptables -p icmp --help echo-reply (pong) destination-unreachable network-unreachable host-unreachable protocol-unreachable port-unreachable fragmentation-needed source-route-failed network-unknown host-unknown network-prohibited host-prohibited TOS-network-unreachable TOS-host-unreachable communication-prohibited host-precedence-violation precedence-cutoff source-quench redirect network-redirect host-redirect TOS-network-redirect TOS-host-redirect echo-request (ping) router-advertisement router-solicitation time-exceeded (ttl-exceeded) ttl-zero-during-transit ttl-zero-during-reassembly parameter-problem ip-header-bad required-option-missing timestamp-request timestamp-reply address-mask-request address-mask-reply [/chap] * Match [chap] Il nous reste encore un sous chapitre a voir, il s'agit des extentions "match". En francais, nous pourrions traduire par extensions de comparaison. -m, --match La différence avec les autres extensions réside dans le fait que celles-ci, si elles ne sont pas spécifiées, ne seront jamais chargées par défaut par votre filtre. La raison en est simple, la plupart de ces extensions sont spécifique a des protocoles, ou juste présentes a titre de test/expérimentation ou encore pour vous montrer de quoi est capable iptable. Nous ne couvrirons donc que quelques options. --mac-source Filtre les paquets selon leur adresse source. l'adresse mac sera évidement donnée sous la forme XX:XX:XX:XX:XX:XX iptables -A INPUT -m mac --mac-source 00:00:00:00:00:01 Chain INPUT (policy ACCEPT) target prot opt source destination icmp -- anywhere anywhere icmp port-unreachable all -- anywhere anywhere MAC 00:00:00:00:00:01 Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination --limit Cette option permet d'instaurer des limites, d'instaurer des taux, comme par exemple pour limiter le nombre de messages d'historique. Cette option est suivie d'un nombre; vous pouvez aussi faire suivre ce nombre de l'unité temporelle désirée (/second;/minute;/hour;/day). Par défaut, la limite est réglée a trois par heure. [/chap] -j, --jump Spécifie ce que vous désirez faire du paquet. La cible peut etre une sous-chaine que vous aurez vous-meme créée ou alors vers une valeur spéciale. Celle-ci peut prendre la forme de ACCEPT, DROP, QUEUE ou RETURN. ACCEPT autorise le paquet a continuer son chemin. DROP n'autorise pas le paquet a continuer son chemin. QUEUE permet de passer le paquet a une application, si jamais aucune application n'attend apres le paquet, il est rejeté. RETURN se comporte différement selon son emplacement. S'il est dans une chaine que vous avez construite, le paquet est renvoyé a la chaine forgée d'ou il vient. S'il se trouve déja dans une chaine forgée, c'est la police de cette meme chaine qui décide du sort du paquet. -i, --in-interface -o, --out-interface Spécification des interfaces sur lesquelles les paquets arrivent ou partent. Si vous avez bien compris, cela signifie que toute regle comportant -o dans la chaine INPUT ne se verra pas beaucoup récompensée, il en va de meme si vous insérez une regle avec -i dans la chaine OUTPUT. $>iptables -A INPUT -i eth0 $>iptables -A INPUT -i lo Si vous demandez a présent un listing simple de vos chaines, vous ne verrez aucune différence, pensez donc a demander un listing détaillé. $>iptables -L -vn Chain INPUT (policy ACCEPT 3045 packets, 1182K bytes) pkts bytes target prot opt in out source destination 346 202K all -- eth0 * 0.0.0.0/0 0.0.0.0/0 14 1040 all -- lo * 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT 1867 packets, 241K bytes) pkts bytes target prot opt in out source destination Pour spécifier plusieurs interfaces du meme type (eth0, eth1, eth2, etc... par exemple) vous pouvez utiliser le caractere +. $>iptables -A INPUT -i eth+ Toutes les interfaces commencant par eth seront alors concernées. Par défaut, si l'option n'est pas spécifiée, le '+' est mis d'office, sélectionnant toutes les interfaces. -f, --fragment Depuis le début, je ne vous parle que de paquets, mais qu'en est-il des fragments de paquets, ces petits bouts de puzzle qui au final constituent un splendide paquet ? Vous n'etes pas sans savoir que des paquets trop conséquents n'ont aucune chance de traverser différents réseaux, les tailles autorisées étant différentes selon chaque routeur. Vous voyez donc votre paquet arriver petit a petit. Seule l'entete contiendra l'ip ou il doit se rendre, que ferez vous donc des autres fragments ? Certes non, si vous désirez donc traiter le deuxieme fragment, le troisieme, etc. utilisez cette option. *Enlever une regle Pour enlever ligne par ligne, il vous faut simplement exécuter: iptables -D la_chaine la_regle_concernée ou encore iptables -D la_chaine le_numéro_de_la_regle. Chaque chaine contenant des regles sont numérotées en partant de un. Il est a noter que dans le premier cas, si vous avez deux regles identiques, seule la premiere (numériquement parlant) sera otée. Il est intéressant de noter que pour obtenir les numéros des regles dans les chaines, vous pouvez utiliser l'option --line-number. $>iptables -L --line-number Chain INPUT (policy ACCEPT) num target prot opt source destination 1 all -- anywhere anywhere 2 all -- anywhere anywhere 3 all -- anywhere anywhere Chain FORWARD (policy ACCEPT) num target prot opt source destination Chain OUTPUT (policy ACCEPT) num target prot opt source destination 1 all -- anywhere anywhere --- Epilogue --- Mieux vaut avoir une souris dans la main qu'un chat dans la gorge. Ceci n'est qu'une petite présentation de l'outil, et il ne faut pas penser que tout est dit ici, loin s'en faut; mais toutes les bonnes choses ont une fin, et comme le dit le dicton popuplaire, la faim justifie les moyens, ou peut-etre est ce une histoire de coupe-fin. Oh fait : `man iptables`! (*) BTH RTFM DMZ CQFD BTH : By The Hell RTFM : Read The Fucking Manual DMZ : De-Militarized Zone CQFD : Ce Qu'il Fallait Démontrer lansciac@madchat.org