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!
2 comentarios
Ignacio -
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) -
Saludos.