Un filtre a paquets est un programme qui regardes a l'en-tète des paquets qui passent, et décide du sort du paquet entier. Il peut décider de DROP le paquet (p.e., faire comme si il n'avait jamais été recu), ACCEPT le paquet (p.e. le laisser passer), ou quelque chose de plus compliqué.
Sous Linux, le filtrage de paquets est dans le noyau (comme un module, ou directement dedans), et il y a un tas de trucs qu'on peut faire avec les paquets, mais le principe de base qui est de regarder aux en-tètes et de décider du sort du paquet est toujours la.
Controle. Securité. Prévention.
quand tu utilises une machine linux pour connecter ton réseau interne a un autre réseau (on va dire Internet), tu as la possibilité de permettre certains types de traffic et de prohiber d'autres. Par exemple, l'en-tète du paquet contient l'adresse de destination du paquet, donc tu peux empecher les paquets d'aller vers une certaine partie du réseau externe. Comme autre exemple, j'utilises netscape pour accèder a l'archive de Dilbert. Il y a des pubs de doubleclick.net sur la page, et netscape perds mon temps a les télécharger. Dire au filtre de paquets de ne pas permettre de paquets de et vers doubleclick.net résout ce problème (il y a de meilleures facons de faire ca: voir a Junkbuster).
quand ta machine Linux est la seule chose entre le chaos d'internet et ton beau réseau bien ordonné, c'est intéressant de savoir que tu peux limiter ce qui frappe a ta porte. Par exemple, tu peux permettre a tout de sortir de ton réseau, mais tu peux ètre embèté par le bien connu `Ping of Death' venant d'étrangers malicieux. Comme autre exemple tu ne voudrais pas qu'un étranger telenette ta machine Linux, mème si tout tes comptes ont un mot de passe. Peut ètre que tu veux (comme la pluspart des gens) ètre un observateur sur internet et pas un serveur (voulu ou pas). Simplement ne laisses personne se connecter, en utilisant le filtrage de paquets pour rejeter les paquets entrants qui utilisés pour établir des connections.
Parfois une machine mal configurée sur le reseau local décidera d'envoyer des paquets au monde extérieur. C'est intéressant de dire au filtrage de paquets de te dire si quelque chose d'anormal se produit; peut ètre veux tu y faire quelque chose ou peut ètre est tu curieux par nature.
Les Noyaux Linux ont le filtrage de paquet depuis la série des 1.1. La première génération, basée sur ipfw de BSD, a été portée par Alan Cox fin 1994. Ca a été amélioré par Jos Vos et d'autres pour Linux 2.0; le logiciel `ipfwadm' controllait les régles de filtrage du noyau. A la mi-1998, pour Linux 2.2, j'ai méchamment retravaillé le noyau, avec l'aide de Michael Neuling, et ai introduit un logiciel appelé `ipchains'. Finallement, le logiciel de 4ème génération, `iptables', et une autre réécriture du kernel sont arrivés a la mi-1999 pour Linux 2.4. C'est cet iptables sur lequel se concentre ce HOWTO.
Tu as besoin d'un noyau qui a l'infrastructure netfilter en lui: netfilter est une infrastructure générale dans le noyau sur laquelle d'autres choses (comme le module iptables) viennent se greffer. Ca veut dire que tu as besoin de Linux 2.3.15 ou plus, et de répondre `Y' a CONFIG_NETFILTER dans la configuration du noyau.
L'outil iptables
parle au noyau et lui dit quels paquets filtrer.
A moins que tu ne sois programmeur ou bien vachement curieux c'est
comme ca que tu vas controller les paquets.
L'outil iptables
insère et retire des règles de la table
de filtrage des paquets du noyau. Ca veut dire que quoi que tu configures,
ca sera perdu au reboot; vois
Faire des Règles Permanentes pour comment ètre sur que tes règles seront restaurées au
prochain démarrage.
iptables
est un remplacement ipfwadm
et
ipchains
: voir
Utiliser ipchains et ipfwadm pour comment éviter de
peiner sur iptables si tu utilises un des ces 2 derniers.
Ta config de firewall courante est stockée dans le noyau, et donc sera perdue au redémarrage. Ecrire iptables-save et iptables-restore est dans ma liste de choses a faire. Quand ils existeronts ils seront cools, je le promets.
En attendant, mets les commandes de configuration nécessaires dans un script d'initialisation. Sois sur de faire quelque chose d'intelligent si une des commandes venait a foirer ( habituellement `exec /sbin/sulogin').