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.

Post a comment or leave a trackback: Trackback URL.

Comentarios

  • Cristian T  On 23 septiembre, 2010 at 7:03 pm

    Creo que hace falta dedinir la politica DROP en las cadenas. no??

    • keikurono01  On 23 septiembre, 2010 at 8:05 pm

      Claro, podría hacerse así también, pero en este caso, date cuenta que al final en el POSTROUTING se hace un nateo. Pero solo cuando cumplen esas condiciones, por ello los demás no quedaran nateados y por ello se “dropearan” indirectamente.

  • Erick Colindres  On 11 septiembre, 2011 at 7:46 pm

    estaba probando tu configuracion para iptables, y me regreso esto en la consola, habra algun problema

    iptables v1.4.4:
    The “nat” table is not intended for filtering, the use of DROP is therefore inhibited.

    Try `iptables -h’ or ‘iptables –help’ for more information.

  • Erick Colindres  On 21 septiembre, 2011 at 5:11 pm

    yo hice este script con iptables me podrias dar tu opinion de experto, si esta bien o exagere o esta mal o le hace falta, tu diras, gracias de antemano por tu ayuda.
    # Teniendo en cuenta que ppp0 es la interface por la que nos conectamos a internet
    # y etho la interface conectada a la red local
    # Declaramos variables de Entorno.
    iptables=”/sbin/iptables”
    echo ” Aplicando reglas de Seguridad…”
    echo “”
    echo 1 > /proc/sys/net/ipv4/tcp_syncookies
    echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
    echo 1 > /proc/sys/net/ipv4/ip_forward
    echo ” Cargando Modulos del Kernel…”
    /sbin/modprobe ip_nat_irc
    /sbin/modprobe ip_conntrack_irc
    /sbin/modprobe ip_conntrack_ftp
    /sbin/modprobe ip_nat_ftp
    echo ” Borrando las Cadenas existentes…”
    iptables -F INPUT
    iptables -F OUTPUT
    iptables -F FORWARD
    iptables -F -t nat
    echo ” Estableciendo Politica por Defecto (DENEGAR)”
    iptables -P INPUT DROP
    iptables -P OUTPUT DROP
    iptables -P FORWARD DROP
    echo ” Habilitamos el trafico sobre la interface eth0(LAN Interna)”
    # iptables -A FORWARD -i eth0 -j ACCEPT
    iptables -A INPUT -i eth0 -j ACCEPT
    iptables -A OUTPUT -o eth0 -j ACCEPT
    iptables -A FORWARD -m state –state ESTABLISHED,RELATED -j ACCEPT
    echo ” Lo que salga al Exterior lo hara a traves de la IP X.Y.Z.W”
    iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.1.0/24 -j MASQUERADE
    echo ” Todo el trafico en el Loppback es aceptado”
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT
    iptables -A INPUT -s 192.168.1.1 -j ACCEPT
    iptables -A OUTPUT -d 192.168.1.1 -j ACCEPT
    echo ” Permitir conexiones al FIrewall bajo ppp0″
    iptables -A INPUT -i ppp0 -m state –state ESTABLISHED,RELATED -j ACCEPT
    echo ” Bloquear conexiones que provengan de direcciones privadas”
    iptables -I INPUT -i ppp0 -s 10.0.0.0/8 -j DROP
    iptables -I INPUT -i ppp0 -s 172.16.0.0/12 -j DROP
    iptables -I INPUT -i ppp0 -s 192.168.0.0/16 -j DROP
    iptables -I INPUT -i ppp0 -s 127.0.0.0/8 -j DROP
    iptables -I FORWARD -i ppp0 -s 10.0.0.0/8 -j DROP
    iptables -I FORWARD -i ppp0 -s 172.16.0.0/12 -j DROP
    iptables -I FORWARD -i ppp0 -s 192.168.0.0/16 -j DROP
    iptables -I FORWARD -i ppp0 -s 127.0.0.0/8 -j DROP
    echo ” Aplicando reglas para ICMP”
    iptables -A OUTPUT -p icmp -m state –state NEW -j ACCEPT
    iptables -A INPUT -p icmp -m state –state ESTABLISHED,RELATED -j ACCEPT
    iptables -A FORWARD -p tcp –tcp-flags SYN,ACK,FIN,RST RST -m limit –limit 1/s -j ACCEPT
    iptables -A INPUT -p icmp –icmp-type echo-request -m limit –limit 1/s -i ppp0 -j ACCEPT
    iptables -A FORWARD -p tcp –tcp-flags SYN,ACK,FIN,RST RST -m limit –limit 1/s -j ACCEPT
    iptables -A INPUT -p icmp –icmp-type echo-request -m limit –limit 1/s -i ppp0 -j ACCEPT
    echo ” Bloqueando conexiones hacia ICMP no validas”
    echo “”
    iptables -I INPUT -p icmp –icmp-type redirect -j DROP
    iptables -I INPUT -p icmp –icmp-type router-advertisement -j DROP
    iptables -I INPUT -p icmp –icmp-type router-solicitation -j DROP
    iptables -I INPUT -p icmp –icmp-type address-mask-request -j DROP
    iptables -I INPUT -p icmp –icmp-type address-mask-reply -j DROP
    echo ” Redireccionamos las peticiones de www hacia Squid Proxy”
    echo “”
    iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j REDIRECT –to-port 3128
    iptables -A INPUT -p tcp –dport 21 -j ACCEPT
    iptables -A INPUT -p tcp –dport 22 -j ACCEPT
    iptables -A INPUT -p tcp –dport 80 -j ACCEPT
    iptables -A INPUT -p tcp –dport 443 -j ACCEPT
    iptables -A OUTPUT -p tcp –dport 80 -j ACCEPT
    iptables -A OUTPUT -p tcp –dport 21 -j ACCEPT
    iptables -A OUTPUT -p tcp –dport 22 -j ACCEPT
    iptables -A OUTPUT -p tcp –dport 443 -j ACCEPT
    iptables -A OUTPUT -p tcp –dport 53 -j ACCEPT
    iptables -A OUTPUT -p udp –dport 53 -j ACCEPT
    iptables -A OUTPUT -p tcp –dport 3128 -j ACCEPT
    iptables -A OUTPUT -p tcp –dport 8080 -j ACCEPT
    iptables -A OUTPUT -p tcp –dport 139 -j ACCEPT
    iptables -A OUTPUT -p tcp –dport 445 -j ACCEPT
    iptables -A OUTPUT -p udp –dport 67 -j ACCEPT
    echo ” Redireccionamos peticiones hacia Maquinas Internas”
    echo “”
    iptables -A FORWARD -s 192.168.1.0/24 -p tcp –dport 21 -j ACCEPT
    iptables -A FORWARD -s 192.168.1.0/24 -p tcp –dport 22 -j ACCEPT
    iptables -A FORWARD -s 192.168.1.0/24 -p tcp –dport 80 -j ACCEPT
    iptables -A FORWARD -s 192.168.1.0/24 -p tcp –dport 443 -j ACCEPT
    iptables -A FORWARD -s 192.168.1.0/24 -p tcp –dport 1863 -j ACCEPT
    iptables -A FORWARD -s 192.168.1.0/24 -p udp –dport 1863 -j ACCEPT
    iptables -A FORWARD -s 192.168.1.0/24 -p tcp –dport 53 -j ACCEPT
    iptables -A FORWARD -s 192.168.1.0/24 -p udp –dport 53 -j ACCEPT
    iptables -A FORWARD -s 192.168.1.0/24 -p tcp –dport 110 -j ACCEPT
    echo ” Cerrando los Puertos restantes del Firewall.”
    iptables -A INPUT -i ppp0 -p tcp –dport 0:65535 -j DROP
    iptables -A INPUT -i ppp0 -p udp –dport 0:65535 -j DROP
    iptables -A OUTPUT -o eth0 -p tcp –dport 0:65535 -j DROP
    iptables -A OUTPUT -o eth0 -p udp –dport 0:65535 -j DROP
    iptables -A FORWARD -s 192.168.1.0/24 -p tcp –dport 0:65535 -j DROP
    iptables -A FORWARD -s 192.168.1.0/24 -p udp –dport 0:65535 -j DROP
    echo ” Terminando la Configuracion del Firewall.”

  • Roberto Sosa  On 21 enero, 2014 at 2:27 pm

    hola buen dia, me prodrian ayudar a bloquear paginas con el squid, ya lo tengo configurado de modo transparente y de igual manera tengo instalado el haarpcache 1.2 de antemano muchas gracias!

  • Roberto Sosa  On 21 enero, 2014 at 4:53 pm

    muchas gracias por la información, saludos

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: