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 ves que se reinicie el proxy.
saludos.

Comentarios
Creo que hace falta dedinir la politica DROP en las cadenas. no??
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.
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.
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.”