Debian + kernel 2.6.30.1 + l7-filter + ipp2p

Imagen de RazaMetaL

Tema: 

El siguiente manual describe como parchar y habilitar en Debian Lenny:

- Kernel 2.6.30.1
- l7-filter
- iptables 1.4.4
- xtables-addons
- xtables ipp2p

Instalamos dependencias:

aptitude install module-assistant


m-a prepare


aptitude install kernel-package quilt autoconf automake libtool libncurses5-dev pkg-config checkinstall build-essential zlib1g-dev iptables-dev

Removemos los fuentes del kernel que vienen en lenny:

aptitude purge linux-headers-2.6.26-1-686 linux-headers-2.6.26-1-common iptables-dev

Descargamos xtables, l7-filter, nuevo kernel e iptables:

cd /usr/src
wget http://ufpr.dl.sourceforge.net/sourceforge/xtables-addons/xtables-addons-1.17.tar.bz2
wget http://ufpr.dl.sourceforge.net/sourceforge/l7-filter/netfilter-layer7-v2.21.tar.gz
wget http://ufpr.dl.sourceforge.net/sourceforge/l7-filter/l7-protocols-2009-05-28.tar.gz
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.30.1.tar.bz2
wget http://iptables.org/projects/iptables/files/iptables-1.4.4.tar.bz2

Descomprimimos los paquetes:

tar -jvxf xtables-addons-1.17.tar.bz2
tar -zvxf netfilter-layer7-v2.21.tar.gz
tar -zvxf l7-protocols-2009-05-28.tar.gz
tar -jvxf linux-2.6.30.1.tar.bz2
tar -jvxf iptables-1.4.4.tar.bz2

Creamos links simbólicos:

ln -s xtables-addons-1.17 xtables-addons
ln -s linux-2.6.30.1 linux
ln -s iptables-1.4.4 iptables

Parchamos el kernel:

cd /usr/src/linux
patch -p1 < ../netfilter-layer7-v2.21/kernel-2.6.25-2.6.28-layer7-2.21.patch

Seleccionamos las opciones para habilitar l7 y grabamos la nueva configuración para luego compilar el kernel:

make menuconfig
-*- Networking support --->
Networking options --->
[*] Network packet filtering framework (Netfilter) --->
Core Netfilter Configuration --->
Netfilter connection tracking support
"layer7" match support
< exit >
< exit >
< exit >
< exit >
< exit >
< Yes >

Compilamos nuestro nuevo kernel:

make-kpkg --append-to-version=-l7 --initrd kernel-image

Si necesitan los paquetes linux-headers y linux-source para esta nueva versión de kernel y si quieren compilar algún nuevo driver la línea quedaría de esta manera:

make-kpkg --append-to-version=-l7 --initrd kernel-image kernel-headers kernel-source

Reiniciamos con el nuevo kernel.

init 6

Parchamos iptables:

cd /usr/src/iptables/extensions
cp ../../netfilter-layer7-v2.21/iptables-1.4.1.1-for-kernel-2.6.20forward/libxt_layer7.* .
sed -i 's/exit_error(/xtables_error(/' libxt_layer7.c

Compilamos iptables:

cd /usr/src/iptables
./configure --with-ksource=/usr/src/linux --prefix=/usr --with-xtlibdir=/lib/xtables --libdir=/lib --enable-libipq --enable-devel
make
checkinstall

Instalamos los regex de protocolos soportados por l7-filter:

cd /usr/src/l7-protocols-2009-05-28
make install

Compilamos xtables-addons:

cd /usr/src/xtables-addons
./configure --with-xtables=/lib --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --libexecdir=/lib --with-ksource=/usr/src/linux --includedir=/usr/include/
make
checkinstall

Podemos probar la instalación ejecutando:

iptables -m ipp2p --help
iptables -m layer7 --help

Para bloquear con ipp2p podemos agregar estas líneas a nuestro firewall:

iptables -A FORWARD -p tcp -m ipp2p --edk -j DROP
iptables -A FORWARD -p udp -m ipp2p --edk -j DROP
iptables -A FORWARD -p tcp -m ipp2p --dc -j DROP
iptables -A FORWARD -p tcp -m ipp2p --kazaa -j DROP
iptables -A FORWARD -p udp -m ipp2p --kazaa -j DROP
iptables -A FORWARD -p tcp -m ipp2p --gnu -j DROP
iptables -A FORWARD -p udp -m ipp2p --gnu -j DROP
iptables -A FORWARD -p tcp -m ipp2p --bit -j DROP
iptables -A FORWARD -p udp -m ipp2p --bit -j DROP
iptables -A FORWARD -p tcp -m ipp2p --apple -j DROP
iptables -A FORWARD -p tcp -m ipp2p --winmx -j DROP
iptables -A FORWARD -p tcp -m ipp2p --soul -j DROP
iptables -A FORWARD -p tcp -m ipp2p --ares -j DROP

Si queremos bloquear ares con l7-filter agregamos:

iptables -A FORWARD -p tcp -m layer7 --l7proto ares -j DROP

Estos nuevos módulos nos pueden servir además para marcar los paquetes de determinado protocolo y luego manejar el ancho de banda o prioridades con htb.init.

Podemos obtener una completa lista de protocolos que l7-filter soporte en:
[url]http://l7-filter.sourceforge.net/protocols[/url]

Estas son las líneas que tengo aplicadas para que l7-filter bloquée el trafico p2p:

iptables -A INPUT -m layer7 --l7proto edonkey -j ACCEPT
iptables -A OUTPUT -m layer7 --l7proto edonkey -j ACCEPT
iptables -A FORWARD -m layer7 --l7proto edonkey -j DROP

iptables -A INPUT -m layer7 --l7proto ares -j ACCEPT
iptables -A OUTPUT -m layer7 --l7proto ares -j ACCEPT
iptables -A FORWARD -m layer7 --l7proto ares -j DROP

iptables -A INPUT -m layer7 --l7proto bittorrent -j ACCEPT
iptables -A OUTPUT -m layer7 --l7proto bittorrent -j ACCEPT
iptables -A FORWARD -m layer7 --l7proto bittorrent -j DROP

iptables -A INPUT -m layer7 --l7proto gnutella -j ACCEPT
iptables -A OUTPUT -m layer7 --l7proto gnutella -j ACCEPT
iptables -A FORWARD -m layer7 --l7proto gnutella -j DROP

iptables -A INPUT -m layer7 --l7proto applejuice -j ACCEPT
iptables -A OUTPUT -m layer7 --l7proto applejuice -j ACCEPT
iptables -A FORWARD -m layer7 --l7proto applejuice -j DROP

iptables -A INPUT -m layer7 --l7proto directconnect -j ACCEPT
iptables -A OUTPUT -m layer7 --l7proto directconnect -j ACCEPT
iptables -A FORWARD -m layer7 --l7proto directconnect -j DROP

iptables -A INPUT -m layer7 --l7proto imesh -j ACCEPT
iptables -A OUTPUT -m layer7 --l7proto imesh -j ACCEPT
iptables -A FORWARD -m layer7 --l7proto imesh -j DROP

iptables -A INPUT -m layer7 --l7proto soulseek -j ACCEPT
iptables -A OUTPUT -m layer7 --l7proto soulseek -j ACCEPT
iptables -A FORWARD -m layer7 --l7proto soulseek -j DROP

Noten que en el INPUT y OUTPUT estan en ACCEPT, deben hacerlo así para que l7filter pueda bloquear :evil:

También se puede limitar el ancho de banda para cada protocolo, se debe marcar cada paquete y luego con tc se limita el ancho de banda:

iptables -t mangle -A FORWARD -m layer7 --l7proto edonkey -j MARK --set-mark 123

Comentarios

El post es muy preciso y

El post es muy preciso y amplio, eso no cabe duda, la ayuda que explicaba es para que pueda aplicar las reglas ya de inmediato y no se desanime; seria falta de respeto de mi parte querer agregar o "corregir" errores de este fabuloso post.

Saludos

Páginas