Le filtrage avec iptables


précédentsommairesuivant

1. Préambule

1-1. Licence

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 Ducomentation 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 incluse dans la section intitulée « GNU Free Documantation 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.

1-2. Dédicaces

Je voudrais dédier ce document à ma merveilleuse sœur pour m'avoir inspiré et donné ses conseils en retour. Elle est une source de joie et un rayon de soleil quand j'ai besoin d'elle. Merci !

Un mot particulier pour Ninel pour m'avoir toujours encouragé dans mon travail et avoir pris soin de moi quand j'en avais le plus besoin. Merci !

Ensuite, j'aimerais dédicacer ce travail à tous les courageux développeurs et mainteneurs de Linux. Ce sont eux qui font exister ce fabuleux système d'exploitation.

1-3. À propos de l'auteur

L'auteur de ce didacticiel est une personne née en…

Non, joker ! À l'âge de 8 ans j'ai eu mon premier ordinateur pour Noël, un commodore 64 avec un disque dur C-1541, une imprimante matriciel 8 aiguilles et quelques jeux, etc. Ça m'a embêté plusieurs jours pour tout mettre ensemble. Mon père m'a aidé et après deux jours, il a compris comment charger un jeu et me l'a montré. Une vie immergée dans les ordinateurs était née. J'ai joué à la plupart des jeux de cette époque, et aussi programmé en C-64 basic. Après quelques années, j'ai eu un Amiga 500, qui a été principalement utilisé pour les jeux et certains travaux scolaires. L'Amiga 1200 fut le suivant.

Retour en 1993-1994. Mon père a été suffisamment clairvoyant pour comprendre que l'Amiga n'était, malheureusement, pas l'avenir. Les PC et les ordinateurs i386 l'étaient. En dépit de mes récriminations, il m'acheta un PC, un 486 50Mhz avec 16 Mb de RAM, un Compaq. C'est un des pires que j'ai jamais vus, tout était intégré, y compris les haut-parleurs et l'écran CRT. Je suppose qu'ils essayaient d'imiter le design de l'Apple de l'époque. Je dois noter que c'est la machine qui m'a réellement introduit aux ordinateurs. J'ai commencé à programmer pour de bon, à utiliser Internet, et actuellement Linux est installé sur cette machine.

J'ai été depuis longtemps un utilisateur et administrateur enthousiaste de Linux. Mon expérience de Linux débuta en 1994 avec une Slackware. Cette première installation fut une installation d'essai. Je n'avais pas d'expérience précédente et il m'a fallu du temps pour faire fonctionner des modems, etc., et j'ai conservé un système dual boot. La seconde installation, environ 1996, je n'avais pas de média, et j'ai téléchargé la Slackware complète sur A, AP, D et N disquettes via FTP avec un modem 28 K. Depuis j'ai réalisé que je n'apprendrai jamais rien avec les interfaces graphiques, je suis retourné aux bases. Rien, sauf la console, pas de X11 ou de graphique sauf pour svgalib. Je crois que ceci m'a beaucoup aidé. Il n'y a rien de mieux pour apprendre. Je n'avais pas le choix, que d'apprendre. J'ai continué ainsi pendant deux ans environ. Après ça, j'ai finalement installé XFree86 depuis le source. Après 24 h de compilation, j'ai réalisé que j'avais mal configuré la compilation et devais recommencer à zéro. En tant qu'être humain, vous êtes toujours porté à faire des erreurs. Vous vous améliorez en les corrigeant. Ce processus vous apprend à être patient.

En 2000-2001 je faisais partie d'un groupe qui a lancé un nouveau site principalement axé sur les news de Amiga, mais aussi sur Linux et les ordinateurs en général. Ce site était appelé BoingWorld (www.boingworld.com), plus disponible malheureusement. Les noyaux Linux 2.3 touchaient à leur fin et les 2.4 démarraient. À ce moment-là, j'ai découvert le concept de pare-feu. Bien sûr je me servais de ipfwadm et ipchains avant, mais jamais vraiment comme priorité. J'ai aussi réalisé qu'il n'y avait que peu de documentation et il m'a paru être une idée intéressante d'écrire un didacticiel sur iptables pour boingworld. Vite dit et vite fait, j'ai écrit les premières 5-10 pages de ce que vous êtes actuellement en train de lire. Au fur et à mesure, j'ai continué à ajouter du matériel à ce didacticiel. Les pages d'origine ne sont plus dans cette documentation, mais le concept y est toujours.

J'ai travaillé dans différentes entreprises pendant ce temps dans l'administration réseau avec Linux, écrivant de la documentation, aidant plusieurs centaines, si ce n'est des milliers de personnes, qui m'ont posé des questions sur iptables et netfilter et les réseaux en général. J'ai fait plusieurs conférences, et un Netfilter workshop 2003. Ça a été parfois un travail très ingrat, mais à la fin, je suis très heureux et fier de l'avoir fait. Au moment où j'écris ceci, fin 2006, le projet est arrêté pour plusieurs années, et je le regrette. J'espère changer cela dans le futur, et que beaucoup de personnes trouveront à l'utiliser.

1-4. Exploration de ce document

Cet ouvrage a été rédigé simplement afin que tous puissent accéder au monde merveilleux d'iptables. Il n'a jamais été destiné à rassembler des informations de bogues de sécurité sur iptables ou Netfilter. Si vous trouvez des bogues ou des comportements insolites dans iptables ou une de ses composantes, vous devriez contacter la liste de diffusion de Netfilter et signaler le problème. On vous informera alors de la validité d'un bogue et de son éventuelle correction. Il y a très rarement de véritables bogues de sécurité identifiés dans iptables ou Netfilter, malgré tout, un ou deux peuvent se faufiler de temps en temps. Ils sont mis en évidence sur la page principale du site de Netfilter, et c'est là que vous devriez vous rendre pour rassembler de l'information sur ce sujet.

Ainsi, les exemples de règles fournis avec ce didacticiel ne sont pas écrits pour tenir compte des bogues actuels de Netfilter. L'objectif majeur est de rendre la méthode de configuration des règles suffisamment simple pour être en mesure de résoudre tous les problèmes rencontrés. Par exemple, ce didacticiel n'apprend pas comment fermer le port HTTP pour répondre à une vulnérabilité d'Apache dans la version 1.2.12 (ce cas est néanmoins traité, mais pour une autre raison).

Ce document a été écrit afin de fournir à tous une introduction efficace et simple pour bien démarrer avec iptables, mais en même temps pour être aussi complet que possible. Il ne contient aucune cible ou correspondance appartenant à patch-o-matic pour la simple raison qu'il serait trop fastidieux de tenir une telle liste à jour. Si vous êtes intéressé par les mises à jour de patch-o-matic, vous devriez lire les informations fournies avec, ainsi que les autres documentations disponibles sur le site de Netfilter.

Si vous avez des suggestions et des ajouts ou si vous avez des problèmes avec iptables et Netfilter non couverts par ce document, contactez-moi. Je serai très heureux d'y jeter un œil et d'ajouter ce qui pourrait avoir été oublié.

1-5. Préalables

Des connaissances préalables sur Linux/Unix sont nécessaires, en particulier l'écriture de scripts shell, la compilation de son propre noyau, et quelques notions sur son fonctionnement interne.

J'ai essayé autant que possible d'éliminer tous les préalables nécessaires pour comprendre pleinement ce document, mais en pratique il est inévitable de posséder un minimum de connaissances.

1-6. Conventions utilisées dans ce document

Les conventions suivantes sont utilisées dans ce document lorsqu'il s'agit de commandes, de fichiers ou d'autres informations spécifiques.

  • Les extraits de code ou les résultats de commandes sont affichés comme suit. Ceci inclut les captures d'écran et les exemples pris dans la console.
     
    Sélectionnez
    [blueflux@work1 neigh]$ ls
    default  eth0  lo
    [blueflux@work1 neigh]$
  • Dans ce didacticiel, les noms de commandes et de programmes sont tous indiqués en caractères gras.
  • Les éléments du système, comme le matériel, mais aussi les composantes internes du noyau comme l'interface de bouclage, sont tous indiqués en caractères italiques.
  • Une sortie d'écran est mise en forme de cette façon dans le texte.
  • Les noms de fichiers et de chemins dans le système de fichiers sont indiqués comme /usr/local/bin/iptables.

précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

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.