Cette procédure a été testée sous Debian avec un noyau vanilla 2.6.29.4 (http://www.kernel.org/) patché grsec (patch pour le noyau 2.6.29.3).

On commence donc par récupérer les sources sur kernel.org et le patch grsec (grsecurity.net) puis on patch:

sebastien@boiboite:~/src/linux-2.6.29.4$ patch -p1 < ../grsecurity-2.1.14-2.6.29.3-200905192213.patch

Ça chouine à cause de Hunks décalés mais rien de bien grave. Ensuite on configure son noyau (ou on zcat /proc/config.gz > .config) sans oublier d'activer les options suivantes :

-> Networking support (NET [=y])
	-> Networking options
		-> Network packet filtering framework (Netfilter) (NETFILTER [=y])
			-> Core Netfilter Configuration 
			  - Netfilter connection tracking support

et

-> Networking support (NET [=y])
	-> Networking options
		-> Network packet filtering framework (Netfilter) (NETFILTER [=y])
			-> Core Netfilter Configuration
				-> Netfilter connection tracking support (NF_CONNTRACK [=y])  
					- Connection mark tracking support

Malheureusement il semble qu'il soit obligatoire d'activer les modules dans le noyau pour profiter des xtables-addons (j'ai bien essayé de les intégrer aux sources du noyau mais le résultat a systématiquement été un kernel panic.

On se crée un joli paquet pour le pépin :

make-kpkg --rootcmd=fakeroot --revision=mon.noyau.1 kernel_image kernel_source

et on l'installe

sebastien@boiboite:~/src$ sudo dpkg -i linux-image-2.6.29.4-grsec_mon.noyau.1_i386.deb
sebastien@boiboite:~/src$ sudo dpkg -i linux-source-2.6.29.4-grsec_mon.noyau.1_all.deb

On vérifie dans /boot/grub/menu.lst que tout va bien[1]

Rebootez sur votre nouveau pépin (ou lisez le man de module-assistant pour utiliser l'option -l dans la suite des opérations) pour passer à l'installation des addons.

Le mieux est d'utiliser les sources du module packagées par Debian car il y a des contraintes sur la version d'iptables (les versions >= 1.13 sont incompatibles avec la version d'iptables de Lenny).

sebastien@boiboite:~/src$ sudo aptitude install xtables-addons-source

Si vous ne voulez pas compiler tous les modules, extrayez l'archive que vous trouverez dans /usr/src et éditez le fichier mconfig dans /usr/src/modules/xtables-addons (mettez n à la place de m pour les modules qui ne vous sont d'aucune utilité). Construisez ensuite le paquet :

sebastien@boiboite:~/src$ sudo module-assistant --not-unpack build xtables-addons-source

Le --not-unpack n'est nécessaire que si vous avez modifié le mconfig (ça évite qu'il soit écraser par une extraction "propre" de l'archive). Le paquet créé (dans le répertoire parent de celui contenant les sources de votre noyau) peut ensuite être installé via dpkg. Dans la mesure où certains fichiers se placent directement dans /lib/xtables, vous ne pouvez installer le paquet que pour une version du noyau à la fois.

Pour contrôler que tout fonctionne bien :

sebastien@boiboite:~/src$ sudo modprobe xt_ipp2p

Si le chargement fonctionne, tout est OK et vous pouvez bouter le peer2peer hors de votre réseau au moyen de règles du style :

sudo iptables -A FORWARD -i eth0 -o eht1 -m ipp2p --edk -j DROP

(--edk agit sur eDonkey, vous avez tout un tas d'autres options pour d'autres protocoles).

Notes

[1] comment ça vous utilisez lilo ?