Blogia
Blog de Ignacio Martin Rodriguez Haberlin (Nachazo)

Parchear Kernel en ubuntu 8 server con L7 e iptables 1.4

Bueno chicos me decidí a realizar un router semi profesional con ubuntu e iptables. Y lo primero que no te de esto hace bastante es la necesidad de tener l7 en el kernel.

 

para los que no conozcan L7 aquí una breve descripción del proyecto:

http:// l7-filter.sourceforge.net

 

• Análisis de PATRONES en paquetes / conexiones

• Patrones/protocolos programables por el usuario

• Se acabaron las IP y los PUERTOS

• Se controla desde IPTABLES (se engancha allí)



Bueno manos a la obra:

http://wiki.nix.hu/cgi-bin/twiki/view/IMQ/HowToInstall#Configuring_the_kernel

 

Primero bajar todo lo que necesitemos desde apt-get

Nos loguemos como root (no me gusta usar sudo)


apt-get install linux-source fakeroot kernel-package libncurses5-dev


Descarga de paquetes necesarios Layer7

Entra al proyecto y chequea cual es la ultima version remplaza las x con lo que coresponda.

wget http://downloads.sourceforge.net/l7-filter/netfilter-layer7-vxxxx.tar.gz

L7-filter userpace

wget http://downloads.sourceforge.net/l7-filter/l7-filter-userspace-xxxx.tar.gz

L7 descarga de definiciones de protocolos

wget http://downloads.sourceforge.net/l7-filter/l7-protocols-xxxx.tar.gz

preparar el kernel:

tar -xvf /usr/src/linux-source-2.6.xxx.tar.bz2
ln -s /usr/src/linux-source-2.6.xxx /usr/src/linux

cd /usr/src/linux

patch -p1 < ../netfilter-layer7-v2.xxx/kernel-2.6.xxx-layer7-2.xxx.patch




Fichero .config

Para no partir de cero en la configuración del kernel, partimos del fichero

.config original y lo copiamos al directorio /usr/src/linux.

cp /boot/config-2.6.xxx-server /usr/src/linux/.config

Habilitar opciones del kernel para netfilter-L7

A continuación accedemos a los menús de configuración del kernel:

cd /usr/src/linux

make menuconfig

Y debemos asegurarnos que están seleccionadas:

* Networking support

 * Networking options

  * Network packet filtering framework (Netfilter)

   * Core Netfilter Configuration

    * Connection tracking flow accounting  

    * Connection mark tracking support

    *  Layer 7 match support

    *  Layer7 debugging support


guardamos el archivo .cofig

y ahora compilamos!

make-kpkg clean
make-kpkg --append-to-version=.XXXX --initrd kernel_image

remplacen las xxxx con lo que quieran (se suele poner la fecha).

Si todo lo anterior ha ido bien, en el directorio /usr/src se debe haber creado un archivo de nombre:
kernel-image-2.6.8.1.XXXX_10.00.Custom_i386.deb

Este es el archivo que contiene nuestro kernel compilado listo para instalar, lo que haremos con:

dpkg -i kernel-image-2.6.8.1.XXXX_10.00.Custom_i386.deb

Esta orden es equivalente a las clásicas make modules_install y make install, además de colocar en su sitio la imagen initrd generada y
actualizar el grub o el lilo.


Iptables

Descarga de Iptables (versión 1.4.xxx)

wget http://www.netfilter.org/projects/iptables/files/iptables-1.4.xxx.tar.bz2
tar -xvf netfilter-layer7-v2.xxx.tar.gz

Aplicar el parche e instalar Iptables

tar -xvf iptables-1.4.x.tar.bz2
cd iptables-1.4.x
cp /usr/src/netfilter-layer7-v2.xx/iptables-1.4.xforward-for-kernel-2.6.xxforward/* /usr/src/iptables-1.4.x/extensions/
./configure --with-ksource=/usr/src/linux
make
make install
cd /usr/src
tar -xvf l7-protocols-xxxxxxxx.tar.gz
cd l7-protocols-xxxxxxxxx.tar.gz
make install

hacemos reboot
y cuando vuelve a arrancar probamos un regla de iptables con l7

 
/usr/local/sbin/iptables -t mangle -A POSTROUTING -m layer7 --l7proto ares -j DROP

si todo va bien nos fijamos que la regla exista:

/usr/local/sbin/iptables -L -t mangle -n -v

tiene que salir listada en el output.

De ser asi todo salio bien!

 

www.arwifi.com.ar



 

2 comentarios

Ignacio -

Hey gracias Daniel por tu sugerencia!!!

Estuve tentado pero como vengo de debian quise probarel ubuntu server... El cual no esta nada mal bien bien peladito!

Anduve mirando tu ISPDISTRO! Te felicito! espero que algun dia podamos trabajar tods juntos! Abrazo!

Daniel (El Guapo Dan) -

Nacho, prueba hacerlo con Archlinux, me duele decirlo pero esta superando a debian y el pacman es genial, mucho mejor que el apt-get.

Saludos.