Category Archives: ipp2p

INSTALACIÓN DE IPP2P

Seguramente muchos de ustedes dueños o administradores de redes que tienen a cargo una red wiriless o una cabina de internet, les habrá fastidiado, los programas tipo p2p como el ares, limewire, bittorrent .. etc, pues para quienes tengan implemetado un proxy como squid (si no, pueden ver como se instala en ubuntu ), existe un módulo como Ipp2p, el cual permite justamente bloquear y controlar estos programas p2p, basándose en el comportamiento que tienen estos, a la hora de querer conectarce a sus nodos por medio de muchos puertos simultaneamente.
Nota:
A mí me funcionó según lo provisto, esto es que sí filtraba los p2p, pero cuando teníamos una máquina en donde ya había un ares con descargas pauseadas, osea ya estaba funcionando, en este caso cuando dicha máquina entraba en nuestra red, como parte de nuestra lan, entonces, los p2p’s en particular ares sí podían descargar, violando las reglas del ipp2p, entonces decidimos hacer un bloqueo por puertos esto lo podemos ver en bloqueo de p2p por iptables.

Ahora veamos como se instala este módulo en nuestro ubuntu 9.04:
Empecemos:

su
cd /usr/src

*Preparando al sistema

apt-get install iptables-dev
apt-get install linux-source-$(uname -r)
apt-get install build-essential kernel-package libncurses5
apt-get install linux-headers-$(uname -r)

*Descomprimimos el kernel-source

bunzip2 linux-source-$(uname -r).tar.bz2
tar -xvf linux-source-2.6.18.tar

*Creamos un enlace simbolico a linux-source-*

ln -s linux-source-2.6.18/ linux

*Descargar IPP2P y los parches para el kernel 2.8.22 y 2.8.28 (el nuestro es 2.8.28-11-generic), además de parches para iptables 1.4.0 y 1.4.1.

wget http://www.ipp2p.org/downloads/ipp2p-0.8.2.tar.gz
wget http://aur.archlinux.org/packages/ipp2p/ipp2p/ipp2p-0.8.2-kernel-2.6.22.patch
wget http://aur.archlinux.org/packages/ipp2p/ipp2p/ipp2p-0.8.2-kernel-2.6.28.patch
wget http://aur.archlinux.org/packages/ipp2p/ipp2p/ipp2p-0.8.2-iptables-1.4.0.patch
wget http://aur.archlinux.org/packages/ipp2p/ipp2p/ipp2p-0.8.2-iptables-1.4.1.patch

*Parchamos IPP2P para nuestro kernel.

tar xvzf ipp2p-0.8.2.tar.gz
  cd ipp2p-0.8.2
  patch -p1 < ../ipp2p-0.8.2-kernel-2.6.22.patch
  patch -p1 < ../ipp2p-0.8.2-kernel-2.6.28.patch
  patch -p1 < ../ipp2p-0.8.2-iptables-1.4.0.patch
  patch -p1 < ../ipp2p-0.8.2-iptables-1.4.1.patch

*Editamos el archivo “libipt_ipp2p.c”
y editamos la estructura:

struct xtables_match ipp2p=
{
.next = NULL,
.name = "ipp2p",
.family = PF_INET,
.version = XTABLES_VERSION, ##<-- Aquí hacemos el cambio
.size = XT_ALIGN(sizeof(struct ipt_p2p_info)),
.userspacesize = XT_ALIGN(sizeof(struct ipt_p2p_info)),
...
}

*Guardamos cambios
*Editamos el archivo “Makefile”
*Editamos la linea:

ld -shared -o libipt_ipp2p.so libipt_ipp2p.o

-cambiando “ld” por el compilador gcc “$(CC)”

$(CC) -shared -o libipt_ipp2p.so libipt_ipp2p.o

*Guardamos cambios
*Ejecutamos:

  make

-Hasta aqui no debe de presentarnos ningún error, en caso de error revisemos los pasos anteriores.
*Y finalmente copiamos los archivos compilados en carpetas pertenecientes a iptables y squid.

  cp libipt_ipp2p.so /lib/xtables/
  cp ipt_ipp2p.ko /lib/modules/$(uname -r)/kernel/net/netfilter/
  depmod -a

* Probamos:

  iptables -m ipp2p --help

Ejemplo de uso:

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

o en su forma simplificada:

iptables -I FORWARD -p tcp -m ipp2p --ipp2p -j DROP
iptables -I FORWARD -p udp -m ipp2p --ipp2p -j DROP

Saludos.