Tout le trafic circulant dans un r�seau est envoy� sous la forme de paquets. Par exemple, pour charger ce paquetage (disons qu'il fait 50k) vous avez d� recevoir plus ou moins 36 paquets de 1460 octets chacun (pour prendre des valeurs au hasard).
Le d�but de chaque paquet pr�cise o� celui-ci va, d'o� il vient, le type du paquet, et divers autres d�tails administratifs. Le d�but de chaque paquet est appel� l'ent�te. Le reste du paquet, contenant les donn�es � transmettre, est couramment appel� le corps.
Quelques protocoles, comme le TCP, qui est utilis� pour le trafic web, mail et les connexions � distance, utilisent le concept de `connexion' -- avant que le moindre paquet de donn�es ne soit envoy�, divers paquets de configuration (avec des ent�tes sp�ciales) sont �chang�s en disant `je veux me connecter', `OK' et `Merci'. Ensuite les paquets normaux sont �chang�s.
Un filtre de paquet est un logiciel qui regarde l'ent�te des paquets lorsque ceux-ci passent, et d�cide du destin du paquet entier. Il peut d�cider de le refuser (le supprimer comme s'il n'avait jamais �t� re�u), de l'accepter (le laisser circuler) ou de le rejeter (effet identique au refus, mais il est pr�cis� � la source que le paquet n'a pas �t� accept�).
Sous Linux, le filtrage des paquets est inclus dans le noyau, et il y a diverses choses que nous pouvons faire avec les paquets, mais le principe g�n�ral (regarder les ent�tes et d�cider du destin du paquet) est toujours pr�sent.
Contr�le. S�curit�. Vigilance.
Lorsque vous utilisez un ordinateur sous Linux pour connecter votre r�seau interne � un autre r�seau (disons, l'Internet) vous aurez l'opportunit� de permettre certains types de trafics, et d'interdire les autres. Par exemple, l'ent�te d'un paquet contient l'adresse de destination du paquet, et vous pouvez ainsi �viter que des paquets aillent vers un certain endroit du r�seau ext�rieur. Comme autre exemple, j'utilise Netscape pour acc�der aux archives de Dilbert. Il y a des publicit�s provenant de doubleclick.net sur la page, et Netscape perd du temps en les chargeant gentiment. Dire au filtre des paquets de ne pas autoriser la circulation de paquets provenant ou allant vers doubleclick.net r�soud le probl�me (il y a cependant de meilleurs moyens pour y parvenir).
Lorsque votre machine Linux est le seul rempart entre le chaos de l'Internet et votre r�seau propre et bien ordonn�, il est utile de savoir que vous pouvez restreindre ce qui vient sonner � votre porte. Par exemple, vous pouvez autoriser tout ce qui sort de votre r�seau, mais vous pouvez vous inqui�ter du fort connu 'Ping of Death' pouvant provenir d'intrus ext�rieurs. Comme autre exemple, vous pouvez interdire aux personnes ext�rieures de se connecter en telnet sur votre machine Linux, m�me si tous vos comptes ont des mots de passe ; peut-�tre d�sirerez-vous (comme la plupart des gens) �tre un simple observateur sur l'Internet, et non un serveur (de bonne volont� ou non) -- simplement en ne laissant personne se connecter, le filtrage de paquets rejetant tous les paquets entrants utilis�s pour cr�er des connexions.
Parfois, une machine mal configur�e du r�seau local d�cidera d'envoyer des paquets au monde ext�rieur. Il est sympathique de pouvoir sp�cifier au filtre de paquets de vous informer si quelque chose d'anormal se produit ; vous pourrez �ventuellement y faire quelque chose, ou bien laisser libre cours � la simple curiosit�.
Vous aurez besoin d'un noyau disposant du nouveau code de cha�nes de protection IP. Vous pouvez savoir si le noyau que vous utilisez actuellement en dispose en cherchant le fichier `/proc/net/ip_fwchains'. Si ce fichier existe, alors c'est tout bon.
Sinon, vous devez cr�er un noyau contenant le code de cha�nes de protection IP. Tout d'abord, r�cup�rez les sources du noyau que vous d�sirez. Si vous avez un noyau dont le num�ro est sup�rieur ou �gal � 2.1.102, vous n'aurez pas besoin de le corriger (il se trouve d�j� inclus dans le noyau). Autrement, appliquez le correctif que vous trouverez sur la page web list�e plus haut, et utilisez la configuration d�taill�e ci-dessous. Si vous ne savez pas comment le faire, ne paniquez pas -- lisez le Kernel-HOWTO.
Les options de configuration que vous devez utiliser pour les noyaux de s�rie 2.0 sont :
CONFIG_EXPERIMENTAL=y CONFIG_FIREWALL=y CONFIG_IP_FIREWALL=y CONFIG_IP_FIREWALL_CHAINS=y
Pour les s�ries de noyaux 2.1 ou 2.2 :
CONFIG_FIREWALL=y CONFIG_IP_FIREWALL=y
L'outil ipchains
parle au noyau et lui dit quels paquets filtrer.
� moins que vous ne soyez un programmeur, ou un curieux inv�t�r�, c'est
ainsi que vous contr�lerez le filtrage des paquets.
L'outil ipchains
ins�re et efface des r�gles dans la section
de filtrage de paquets du noyau. Ce qui signifie que quoi que vous
configuriez, tout sera perdu lors d'un red�marrage ; voyez la section
Rendre les r�gles permanentes pour savoir comment
s'assurer que les r�gles seront restaur�es au prochain lancement de Linux.
ipchains
remplace ipfwadm
, qui �tait utilis� par l'ancien
code pare-feu. Il y a un ensemble de scripts utiles disponibles sur le site
ftp d'ipchains :
ftp://ftp.rustcorp.com/ipchains/ipchains-scripts-1.1.2.tar.gz
Cette archive contient un script shell appell� ipfwadm-wrapper
qui
vous autorisera � utiliser le filtrage de paquets comme avant. Vous ne devriez
probablement pas utiliser ce script � moins que vous ne souhaitiez un moyen
rapide de mettre � jour un syst�me utilisant ipfwadm
(ce script est
plus lent, ne v�rifie pas les arguments, etc.). Dans ce cas, vous n'avez pas
non plus besoin de ce howto.
Voyez l'annexe
Diff�rences entre ipchains et ipfwadm et l'annexe
Utiliser le script `ipfwadm-wrapper' pour des d�tails suppl�mentaires concernant
ipfwadm
.
Votre configuration actuelle de pare-feu est sauv�e dans le noyau, et sera ainsi perdue lors d'un red�marrage. Je vous recommande d'utiliser les scripts `ipchains-save' et `ipchains-restore' pour rendre vos r�gles permanentes. Pour ce faire, configurez vos r�gles, puis utilisez (en tant que super-utilisateur) :
# ipchains-save> /etc/ipchains.rules
#
Cr�ez un script comme le suivant :
#! /bin/sh
# Script to control packet filtering.
# If no rules, do nothing.
[ -f /etc/ipchains.rules ] || exit 0
case "$1" in
start)
echo -n "Turning on packet filtering:"
/sbin/ipchains-restore < /etc/ipchains.rules || exit 1
echo 1> /proc/sys/net/ipv4/ip_forward
echo "."
;;
stop)
echo -n "Turning off packet filtering:"
echo 0> /proc/sys/net/ipv4/ip_forward
/sbin/ipchains -X
/sbin/ipchains -F
/sbin/ipchains -P input ACCEPT
/sbin/ipchains -P output ACCEPT
/sbin/ipchains -P forward ACCEPT
echo "."
;;
*)
echo "Usage: /etc/init.d/packetfilter {start|stop}"
exit 1
;;
esac
exit 0
Assurez vous que ceci est lanc� suffisamment t�t dans la proc�dure de lancement. Dans mon cas (Debian 2.1), j'ai cr�� un lien symbolique appell� `S39packetfilter' dans le r�pertoire `/etc/rcS.d' (il sera ainsi lanc� avant S40network).
Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:35