SYN, SYN-ACK, ACK …

Steal This Blog

L7filter ou comment iptables remonte couche 7

décembre 1st, 2007 by Corbier

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_image initrd 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

Leave a Comment

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.