L7filter ou comment iptables remonte couche 7
Pour pouvoir faire un filtrage efficace il ne faut pas que s’appuyer sur les ports, en effet un firewall efficace doit pouvoir remonter jusqu’a la couche 7 du modele osi (la couche application), pour par exemple bloqué les protocole p2p ou les jeux en lignes.
Une solution existe sous linux c’est un module d’iptable: ‘l7-filter’.
Voici un exemple d’installation sur debian sarge.
Il faut tout d’abord savoir avec quelle noyau vous voulez l’installez
moi j’ai choisi le ’2.6.15′
Comme la doc l’indique il faut tout d’abort installer les outils de compilation et de manipulation du noyau
sudo apt-get install build-essential fakeroot kernel-package
Il est ensuite préférable de ne pas compiler en root, il faut donc ajouter son utilisateur aux groupes src
adduser mon_user src
Il faut ensuite chercher les sources de son noyau ou du noyau choisi
apt-cache search linux-source
et l’installer avec apt-get
sudo apt-get install linux-source-2.6.15
ensuite on decompresse les sources ( notez que les N° de version du noyau sont a adapté selon votre cas d’utilisation)
cd /usr/src
rm linux
On se place dans /usr/src et on supprime le lien symbolique si il existe deja
tar -xjvf linux-source-2.6.15.tar.bz2
ln -s linux-source-2.6.15 linux
on décompresse et on recréez le lien symbolique
Bon notre noyau est pret à etre modifier
On télécharge le patch L7-filter
http://sourceforge.net/project/showfile … p_id=80085
Layer 7 Patches
wget http://umn.dl.sourceforge.net/sourceforge/l7-filter/netfilter-layer7-v2.2.tar.gz
Telecharge le patch
On telecharge les sources d’iptables
wget http://netfilter.org/projects/iptables/files/iptables-1.3.5.tar.bz2
on extrait les deux archives
tar -xzvf netfilter-layer7-v2.2.tar.gz && tar -xjvf iptables-1.3.5.tar.bz2
ensuite copy le patch pour le noyau et pour iptables
cp netfilter-layer7-v2.2/kernel-2.6.13-2.6.16-layer7-2.2.patch linux && cp netfilter-layer7-v2.2/iptables-layer7-2.2.patch iptables-1.3.5
on applique le patch au noyau
cd linux
patch -p1 < kernel-2.6.13-2.6.16-layer7-2.2.patch
cd ..
on patch également les sources d’iptables
cd iptables-1.3.5
patch -p1 < iptables-layer7-2.2.patch
ensuite on install le iptables patché dans les sources du noyau make KERNEL_DIR=/usr/src/linux
make install KERNEL_DIR=/usr/src/linux
Voila il nous reste plus qu’a activer ces modules pour la compilation du noyau
cd ../linux
make menuconfig
maintenant il reste a activer les modules suivant comme l’indique la doc l7-filter
* EXPERIMENTAL (Code maturity level options & Prompt for development and/or incomplete code/drivers)
* Netfilter (Device Drivers &Networking support & Networking Options & Network packet filtering)
* Connection tracking (Network packet filtering & IP: Netfilter Configuration & Connection tracking)
* « Connection tracking flow accounting » and « IP tables support » (on the same screen)
* And finally, « Layer 7 match support »
* Optional: Lots of other Netfilter options, ntably « FTP support » and other matches. If you don’t know what you’re doing, go ahead and enable all of them.
sauvegarder le tout et installer comme le spécifie la doc apt-get install cramfsprogs initrd-tools il nous reste a concevoir les packages .deb attention cela peut etre long selon la puissance de votre machine
« fakeroot make-kpkg
append-to-version=.181004 kernel_imageinitrd binary »
maintenant que la compilation a été effectuer avec succes il faut l’installer
cd ..
dpkg -i kernel-image-2.6.15.181004_10.00.Custom_i386.deb
Voila qui est fait il nous reste a rebooter sur le noyau et a installer les protocoles générique de l7-filter
Un fois redémarrez telecharger les protocoles
wget http://superb-west.dl.sourceforge.net/sourceforge/l7-filter/l7-protocols-2006-05-29.tar.gz
on décompresse
tar -xzvf l7-protocols-2006-05-29.tar.gz
et on l’install
cd l7-protocols-2006-05-29
make install
Voila c’est terminer vous pouvez utiliser l7-filter en modules d’iptables
pour la syntax c’est basique
iptables specify table & chain -m layer7 –l7proto name of protocol -j action
par exemple
iptables -I INPUT -m layer7 –l7proto http -j drop
redirigeras tout les paquets http en entrer vers /dev/null
Enjoy :p

The L7filter ou comment iptables remonte couche 7 by Steal This Blog, unless otherwise expressly stated, is licensed under a Creative Commons Attribution-Share Alike 2.0 France License.
