IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Didacticiel sur Iptables, version 1.2.0


précédentsommairesuivant

V. Introduction

V-A. Motivations

A l'origine, j'ai constaté un vide important dans les guides pratiques (<< Howto's >>) disséminés un peu partout, avec un manque d'informations notable sur les fonctions d'iptables et de Netfilter pour les nouveaux noyaux Linux de la famille 2.4.x. Par conséquent, je vais tenter de répondre à des interrogations courantes concernant de nouvelles possibilités comme la correspondance d'état. La plupart du temps, les situations seront appuyées par un fichier d'exemple rc.firewall.txt que vous pourrez utiliser dans vos scripts /etc/rc.d/. Effectivement, ce fichier était à l'origine issu du guide pratique du camouflage, pour ceux d'entre-vous qui l'auraient reconnu.

Par la même occasion, il existe un petit script que j'ai écrit au cas où vous peiniez autant que moi lors de la configuration. Il est disponible sous le nom rc.flush-iptables.txt.

V-B. Contenu

Initialement rédigé pour boingworld.com, qui fût un site de news consacré à Amiga/linux pour un petit nombre de personnes, y compris moi, il s'agissait d'un très petit didacticiel. En fonction du grand nombre de lecteurs et de commentaires que j'ai reçu, j'ai continué à écrire sur ce sujet. Le version originale faisait à peu près 10-15 pages au format A4 dans sa version imprimée. Un grand nombre de personnes m'ont aidé, pour la correction orthographique, bugs, etc. Au moment où j'écris ceci, le site http://iptables-tutorial.frozentux.net a enregistré plus de 600.000 connections.

Ce document est conçu pour vous guider pas-à-pas dans la méthode de configuration et il devrait vous aider à comprendre davantage le paquetage d'iptables. La plupart des exemples s'appuie sur le fichier rc.firewall, puisqu'il m'a semblé être un bon point de départ pour apprendre à se servir d'iptables. J'ai décidé de suivre simplement les chaînes fondamentales, et à partir de là, de poursuivre en approfondissant chacune des chaînes traversées dans l'ordre logique. Cette approche rend le didacticiel un peu plus difficile à suivre, mais elle a l'avantage d'être plus cohérente. Chaque fois que quelque-chose vous semble difficile à comprendre, replongez-vous dans ce didacticiel.

V-C. Termes spécifiques

Dans ce document, certains termes méritent des explications détaillées avant d'être abordés. Cette section cherche à couvrir les plus évidents et présente la façon dont ils sont utilisés ici.

Connexion - Se réfère généralement, dans ce document, à une série de paquets en relation entre eux. Ces paquets interragissent entre eux en établissant une sorte de connexion. Une connexion est en d'autres termes une série de paquets échangés.

DNAT - Traduction d'adresse réseau de destination ou << Destination Network Address Translation >>. Le DNAT fait référence à la technique de traduction de l'adresse IP de destination d'un paquet. On l'utilise conjointement avec du SNAT pour permettre à plusieurs hôtes de partager une même adresse IP connectée à Internet, et pour continuer à offrir des services de type serveur. Typiquement, il suffit d'attribuer des ports différents avec une adresse IP utilisable sur Internet, puis de signaler au routeur Linux où expédier le trafic.

Espace noyau - C'est plus ou moins l'opposé de l'espace utilisateur. Ceci implique les actions effectuées dans le noyau, et non en dehors du noyau.

Flux (<< Stream >>) - Ce terme fait référence à une connexion qui envoie et reçoit des paquets qui sont d'une certaine manière en relation les uns avec les autres. Typiquement, j'ai employé ce terme pour toute connexion qui envoie deux paquets ou plus dans les deux sens. Pour le protocole TCP, ce terme peut désigner une connexion qui envoie un paquet SYN, puis répond avec un autre de type SYN/ACK; mais il peut aussi désigner une connexion qui envoie un paquet SYN, puis répond avec un paquet ICPM de type hôte inaccessible (<< ICMP Host unreachable >>). Bref, j'ai souvent utilisé ce terme avec inexactitude.

SNAT - Traduction d'adresse réseau de source ou << Source Network Address Translation >>. Ce terme fait référence aux techniques mises en oeuvre pour traduire une adresse de source en une autre dans un paquet. Ceci permet à plusieurs hôtes de partager une même adresse IP connectée à Internet, c'est utile pour compenser le manque d'adresses IP disponibles avec le protocole IPv4 (mais IPv6 vient résoudre ce problème).

État - Ce terme fait référence à l'état d'un paquet, en accord avec la RFC 793 - Transmission Control Protocol ou avec les états utilisateur utilisés dans Netfilter/iptables. Notez que les états utilisés, en interne et en externe, ne respectent pas scrupuleusement la spécification de la RFC 793. La raison principale provient du fait que Netfilter a dû faire plusieurs hypothèses sur les connexions et les paquets.

Espace utilisateur (<< User space >>) - Cette expression permet de d'assigner tout ce qui a lieu à l'extérieur du noyau. Par exemple, la commande iptables -h s'exécute en dehors du noyau, alors que iptables -A FORWARD -p tcp -j ACCEPT se déroule (en partie) à l'intérieur, puisqu'une nouvelle règle est ajoutée à la table de règles.

Domaine de l'utilisateur - Voir Espace utilisateur.

Paquet - Une unité envoyée sur le réseau, contenant une partie en-tête et une partie de données. Par exemple, un paquet IP sur un paquet TCP. Dans les RFC (Request For Comments) un paquet n'est pas généralisé ainsi, au lieu de cela les paquets sont appelés datagrammes, tandis que les paquets TCP sont appelés segments. J'ai choisi de tout nommer paquet dans ce document pour simplifier.

Segment - Un segment TCP est à peu près la même chose qu'un paquet, c'est en fait un paquet TCP.


précédentsommairesuivant

La permission est accordée de copier, distribuer et/ou modifier ce document selon les termes de la "GNU Free Ducomentation License", version 1.1; en précisant les sections "Introduction" et toutes les sous-sections, avec les en-têtes "Auteur: Oskar Andreasson".