Category Archives: p2p

BLOQUEO DE P2P CON IPTABLES

Con esto estamos diciendo que en nuestro proxy transparente sólo tendra salida ciertos puertos, como el 80(http), 53(dns), 443(https)..etc, y los demás van a estar bloqueados, como el p2p, que usan los puertos del 1025 a 65535.
Tengamos en cuenta que estamos haciendo uso de un squid transparente, para mas info vea la instalación y configuración de squid en ubuntu
Las siguientes lineas, se guardan en un archivo “proxy_rules.sh” en “/etc/init.d/” :

la LAN es: 192.0.2.0/24 y su puerta de enlace es 192.0.2.1(en la interfaz eth1 del proxy) y su salida a internet es atraves del ip: 192.168.1.191(de la interfaz eth0 del proxy).


LAN="192.0.2.0/24"
PROXY_IP="192.168.1.191"
WAN="eth0"
LAN_I="eth1"

iptables -t nat -A PREROUTING -i $LAN_I -p tcp --dport 80 -j DNAT --to $PROXY_IP:3128
iptables -t nat -A PREROUTING -i $WAN -p tcp --dport 80 -j REDIRECT --to-port 3128
#HTTP
iptables -t nat -A POSTROUTING -o $WAN -s $LAN -p tcp --dport 80 -j SNAT --to $PROXY_IP
iptables -t nat -A POSTROUTING -o $WAN -s $LAN -p udp --dport 80 -j SNAT --to $PROXY_IP
#DNS
iptables -t nat -A POSTROUTING -o $WAN -s $LAN -p udp --dport 53 -j SNAT --to $PROXY_IP
iptables -t nat -A POSTROUTING -o $WAN -s $LAN -p tcp --dport 53 -j SNAT --to $PROXY_IP
#SSH
#ICMP
iptables -t nat -A POSTROUTING -o $WAN -s $LAN -p icmp -j SNAT --to $PROXY_IP
#HTTPS
iptables -t nat -A POSTROUTING -o $WAN -s $LAN -p tcp --dport 443 -j SNAT --to $PROXY_IP
#POP3
iptables -t nat -A POSTROUTING -o $WAN -s $LAN -p tcp --dport 995 -j SNAT --to $PROXY_IP
#MSN
iptables -t nat -A POSTROUTING -o $WAN -s $LAN -p tcp --dport 1863 -j SNAT --to $PROXY_IP
#ATAQUES DDOS
iptables -t nat -N SYN-FLOOD
iptables -t nat -A SYN-FLOOD -m limit --limit 12/s --limit-burst 24 -j RETURN
iptables -t nat -A SYN-FLOOD -j DROP
#
iptables -t nat -A PREROUTING -i $WAN -d $PROXY_IP -p tcp --syn -j SYN-FLOOD 
echo 1 > /proc/sys/net/ipv4/ip_forward

Luego le damos permisos de ejecución:

chmod +x proxy_rules.sh

Luego editamos el archivo “/etc/init.d/rc.local” y le agregamos al inicio:

cd /etc/init.d
./proxy_rules.sh

Con esto las reglas iptables se cargan automáticamente cada vez que se reinicie el proxy.

saludos.

Anuncios

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.