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

Debería ser lo mismo pero con

Imagen de RazaMetaL

Debería ser lo mismo pero con las herramientas de CentOS:

- Descargar el kernel
- Parchar el kernel
- Compilar el kernel
- Instalar el kernel
- Compilar iptables
- Parchar iptables
- Compilar xtables

-----

Visita este [url=http://www.sindominio.net/ayuda/preguntas-inteligentes.html]link[/url] :evil:

[img]http://www.bbspot.com/Images/News_Features/2003/01/os_quiz/debian.jpg[/img]

(adsbygoogle = window.adsbygoogle || []).push({});

Estuve intentando hacer esto

Imagen de RazaMetaL

Estuve intentando hacer esto en un centos 5.3 y no logré compilar iptables :(

-----

Visita este [url=http://www.sindominio.net/ayuda/preguntas-inteligentes.html]link[/url] :evil:

[img]http://www.bbspot.com/Images/News_Features/2003/01/os_quiz/debian.jpg[/img]

(adsbygoogle = window.adsbygoogle || []).push({});

super fácil con centos,

Imagen de Epe

super fácil con centos, simplemente instalas el repo de centalt (centos.alt.ru) e instalas los rpm que requieras. Incluso usan l7 via userland para no recompilar el kernel, super interesante.

Voy a tratar de poner un simple howto que se centrará más en el uso de estos paquetes que no en la compilación... deja ver si hago un tiempo.

Saludos
epe

EcuaLinux.com

+(593) 9 9924 6504

Servicios en Software Libre

Chevere... lástima que no me

Imagen de RazaMetaL

Chevere... lástima que no me guste centos :( :P

-----

Visita este [url=http://www.sindominio.net/ayuda/preguntas-inteligentes.html]link[/url] :evil:

[img]http://www.bbspot.com/Images/News_Features/2003/01/os_quiz/debian.jpg[/img]

(adsbygoogle = window.adsbygoogle || []).push({});

Estuve intentando hacer esto

Imagen de Epe


Estuve intentando hacer esto en un centos 5.3 y no logré compilar iptables Sad

Lo importante es que lo intentas.

verás que cuando postee el howto y hagas el yum install y en 3 minutos tengas lo mismo, te gustará mucho más este Linux, verás que sí.

Pero te entiendo, como siempre digo: lo importante no es perder tiempo recompilando de fuentes, sino buscar y encontrar alguien que ya lo hizo y que te permita fácil redistribución. Te imaginas realizando todo este proceso en 1000 máquinas? no sería gracioso (tiene una forma que es tener una lista de todo lo instalado).

A mi no me gusta debian, pero ten la certeza que cuando me hizo falta aprendí en 1 hora a recompilar paquetes .deb y creé mi propio paquete. La idea no es estar como las niñas de 11 años "ay no me gusta" sino simplemente aprender a crear bien las cosas, crece, aprende que no soy eterno ñaño!

Saludos
epe

EcuaLinux.com

+(593) 9 9924 6504

Servicios en Software Libre

Buen post maestro, esa es,

Imagen de damage

Buen post maestro, esa es, gracias por el aporte, lo del htb, eso queda de tarea para el que tenga tiempo de ir probando yo ando full, pero si tengo time le metere mano.

Saludos.

Gran artículo.

Imagen de paloke

Buenas,

Muy buen artículo, pero me he encontrado un par de errores, cuando compilo el paso kernel:
[code]make-kpkg --append-to-version=-l7 --initrd kernel-image kernel-headers kernel-source
[/code]
Me faltaba la instalción de [code]zlib1g-dev[/code], [code]apt-get install zlib1g-dev[/code] y solucionado.
También me he encontrado otro problema a la hora compilar xtables-addons me da un error.
[code]nodo03:/usr/src/xtables-addons# make
make all-recursive
make[1]: se ingresa al directorio `/usr/src/xtables-addons-1.17'
Making all in extensions
make[2]: se ingresa al directorio `/usr/src/xtables-addons-1.17/extensions'
GEN modules
make[3]: se ingresa al directorio `/usr/src/linux-2.6.30.1'
Building modules, stage 2.
MODPOST 33 modules
make[3]: se sale del directorio `/usr/src/linux-2.6.30.1'
make[3]: se ingresa al directorio `/usr/src/xtables-addons-1.17/extensions/ipset'
make[3]: No se hace nada para `all'.
make[3]: se sale del directorio `/usr/src/xtables-addons-1.17/extensions/ipset'
CC libxt_CHAOS.oo
libxt_CHAOS.c:16:21: warning: xtables.h: No existe el fichero o el directorio
libxt_CHAOS.c: In function ‘chaos_tg_check’:
libxt_CHAOS.c:61: warning: implicit declaration of function ‘xtables_error’
libxt_CHAOS.c:61: error: ‘PARAMETER_PROBLEM’ undeclared (first use in this function)
libxt_CHAOS.c:61: error: (Each undeclared identifier is reported only once
libxt_CHAOS.c:61: error: for each function it appears in.)
libxt_CHAOS.c: At top level:
libxt_CHAOS.c:95: error: variable ‘chaos_tg_reg’ has initializer but incomplete type
libxt_CHAOS.c:96: error: unknown field ‘version’ specified in initializer
libxt_CHAOS.c:96: error: ‘XTABLES_VERSION’ undeclared here (not in a function)
libxt_CHAOS.c:96: warning: excess elements in struct initializer
libxt_CHAOS.c:96: warning: (near initialization for ‘chaos_tg_reg’)
libxt_CHAOS.c:97: error: unknown field ‘name’ specified in initializer
libxt_CHAOS.c:97: warning: excess elements in struct initializer
libxt_CHAOS.c:97: warning: (near initialization for ‘chaos_tg_reg’)
libxt_CHAOS.c:98: error: unknown field ‘family’ specified in initializer
libxt_CHAOS.c:98: error: ‘AF_INET’ undeclared here (not in a function)
libxt_CHAOS.c:98: warning: excess elements in struct initializer
libxt_CHAOS.c:98: warning: (near initialization for ‘chaos_tg_reg’)
libxt_CHAOS.c:99: error: unknown field ‘size’ specified in initializer
libxt_CHAOS.c:99: warning: excess elements in struct initializer
libxt_CHAOS.c:99: warning: (near initialization for ‘chaos_tg_reg’)
libxt_CHAOS.c:100: error: unknown field ‘userspacesize’ specified in initializer
libxt_CHAOS.c:100: warning: excess elements in struct initializer
libxt_CHAOS.c:100: warning: (near initialization for ‘chaos_tg_reg’)
libxt_CHAOS.c:101: error: unknown field ‘help’ specified in initializer
libxt_CHAOS.c:101: warning: excess elements in struct initializer
libxt_CHAOS.c:101: warning: (near initialization for ‘chaos_tg_reg’)
libxt_CHAOS.c:102: error: unknown field ‘parse’ specified in initializer
libxt_CHAOS.c:102: warning: excess elements in struct initializer
libxt_CHAOS.c:102: warning: (near initialization for ‘chaos_tg_reg’)
libxt_CHAOS.c:103: error: unknown field ‘final_check’ specified in initializer
libxt_CHAOS.c:103: warning: excess elements in struct initializer
libxt_CHAOS.c:103: warning: (near initialization for ‘chaos_tg_reg’)
libxt_CHAOS.c:104: error: unknown field ‘print’ specified in initializer
libxt_CHAOS.c:104: warning: excess elements in struct initializer
libxt_CHAOS.c:104: warning: (near initialization for ‘chaos_tg_reg’)
libxt_CHAOS.c:105: error: unknown field ‘save’ specified in initializer
libxt_CHAOS.c:105: warning: excess elements in struct initializer
libxt_CHAOS.c:105: warning: (near initialization for ‘chaos_tg_reg’)
libxt_CHAOS.c:106: error: unknown field ‘extra_opts’ specified in initializer
libxt_CHAOS.c:106: warning: excess elements in struct initializer
libxt_CHAOS.c:106: warning: (near initialization for ‘chaos_tg_reg’)
libxt_CHAOS.c: In function ‘chaos_tg_ldr’:
libxt_CHAOS.c:111: warning: implicit declaration of function ‘xtables_register_target’
make[2]: *** [libxt_CHAOS.oo] Error 1
make[2]: se sale del directorio `/usr/src/xtables-addons-1.17/extensions'
make[1]: *** [all-recursive] Error 1
make[1]: se sale del directorio `/usr/src/xtables-addons-1.17'
make: *** [all] Error 2
[/code]

Alguna idea de que puede ser.

Gracias y a triunfar ; )

Paloke

Páginas