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

Le filtrage avec iptables


précédentsommairesuivant

2. Introduction

2-1. Motivations

À 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.txtJ.1. Exemple rc.firewall script 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.txtJ.5. Exemple rc.flush-iptables script.

2-2. Contenu

Initialement rédigé pour boingworld.com, qui fut 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çus, j'ai continué à écrire sur ce sujet. La 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, bogues, etc. Au moment où j'écris ceci, le site http://iptables-tutorial.frozentux.net a enregistré plus de 600 000 connexions.

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'appuient 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.

2-3. 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 interagissent en établissant une sorte de connexion. Une connexion est en d'autres termes une série de paquets échangés. En TCP, ceci indique principalement l'établissement d'une connexion par l'établissement dune connexion à trois voies.

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.

IPSEC - Internet Protocol Security est un protocole utilisé pour encrypter des paquets IPv4 et les envoyer de façon sécurisée vers l'Internet. pour plus d'informations sur IPSEC, voir l'index Autres ressources et liensAnnexe E. Autres ressources et liens pour d'autres ressources sur le sujet.

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.

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.

QoS - La Qualité de Service est un moyen de spécifier comment un paquet sera décrit et quelle sorte de qualité de service il recevra lors de son envoi. Pour plus d'informations sur ce sujet, voir le chapitre Rappel TCP/IPRappel TCP/IP et l'index Autres ressources et liensAnnexe E. Autres ressources et liens pour les ressources externes.

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

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 ICMP 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 œuvre 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 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.

VPN - Virtual Private Network (Réseau Privé Virtuel) est une technique utilisée pour créer des réseaux privés virtuels sur des réseaux non privés, comme l'Internet. IPSEC est une technique utilisée pour créer des connexions VPN. OpenVPN en est une autre.

2-4. Au prochain chapitre

Le chapitre suivant abordera l'introduction et la révision de TCP/IP. De façon assez basique, il décrira le protocole IP et certains de ses sous-protocoles communément utilisés avec iptables et netfilter. Ce sont les protocoles TCP, UDP, ICMP et SCTP. SCTP est un standard plutôt nouveau en comparaison des autres protocoles. Le prochain chapitre abordera également certaines techniques de routage plus avancées utilisées aujourd'hui.


précédentsommairesuivant

Copyright © 2001-2006 Oskar Andreasson
La permission est accordée de copier, distribuer et/ou modifier ce document selon les termes de la « GNU Free Documentation License », version 1.1; en précisant les sections « Introduction » et toutes les sous-sections, avec les en-têtes « Auteur: Oskar Andreasson ». Une copie de la licence est inclue dans la section intitulée « GNU Free Documentation License ».
Tous les scripts de ce tutoriel sont couverts par la GNU General Public License. Les scripts sont de source libre; vous pouvez les redistribuer et/ou les modifier selon les termes de la GNU General Public License publiée par la « Free Software Foundation », version 2.
Ces scripts sont distribués dans l'espoir qu'ils seront utiles, mais SANS AUCUNE GARANTIE; sans même la garantie implicite qu'ils soient VENDABLES ou une QUELCONQUE APTITUDE POUR UN PROPOS PARTICULIER. Voir la GNU General Public License pour plus de détails.
Vous devriez avoir une copie de la GNU General Public License dans ce tutoriel, dans la section intitulée « GNU General Public License »; si ce n'est pas le cas, écrivez à la Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.