[CentOS-es] Problema Squid y Iptables

Walter Cervini wcervini en gmail.com
Mar Jul 1 08:12:16 UTC 2008


Una pequeña critica constructiva, sin animos de ofender.
Lo que te puedo recomendar, es que la ultima regla de cada una de las
cadenas de iptables sea drop o reject . Por otro lado tienes reglas de mas,
como el caso de forward en squid, squid es un servicio local de tu GW por
ende solo tienes que usar reglas en INPUT y OUTPUT. Otra recomendacion es
que si tienes una regla doble para cada una de las redes elimines el origen
como por ejemplo
iptables -A FORWARD -s 192.168.1.0/25 -i eth1 -p tcp --dport 80 -j ACCEPT

iptables -A FORWARD -s 192.168.1.0/25 -m state --state NEW -p tcp --dport 80
-j ACCEPT
de esta manera se asume que como es una nueva peticion venga de la LAN

otra cosa, como primera regla podria
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
esto evita volver a leer todas las reglas de filtrado, se supone que ya paso
por algunas de las reglas y no debes volver a consultarlas

2008/7/1 Aland Laines <aland.laines en gmail.com>:

>
> bueno otra ves molestandolos, el problema que tengo es que tengo dos redes
> en el instituto ambas salen por un centos 5.1 con nat y squid transparente,
> el problema esta en que la red 192.168.1.0 navega de manera normal, pero
> la la red 192.168.2.0 navega pero no pueden loguearse en gmail ni en
> hotmail, cosa que si puede el primer rango, ya probe haciendo el flush de
> reglas e insertarlas de nuevo pero aun asi, lo raro es que estuvo todo
> funcionando bien con el centos 5 que tenia el squid 2.5 y ahora es el 2.6 ,
> les pongo mis scripts de iptables y el de squid para que me den alguna pista
> o la manera de mejorar ambos, (en iptables ando medio perdido pero al menos
> pude hacer ese script con modelos de la web).
>
> Gracias de antemano,
>
>
> #!/bin/sh
> ## SCRIPT de IPTABLES
> ## Ejemplo de script para firewall entre red-local e internet
> ## con filtro para que solo se pueda navegar.
> echo Aplicando Reglas de Firewall...
> ## FLUSH de reglas
> /sbin/iptables -F
> /sbin/iptables -X
> /sbin/iptables -Z
> #modulos
> modprobe ip_conntrack
> modprobe ip_conntrack_ftp
> modprobe ip_conntrack_irc
> modprobe ipt_REJECT
> modprobe ipt_REDIRECT
> modprobe ipt_TOS
> modprobe ipt_MASQUERADE
> modprobe ipt_LOG
> modprobe iptable_mangle
> modprobe iptable_nat
> modprobe ip_nat_ftp
> modprobe ip_nat_irc
> ## Establecemos politica por defecto
> /sbin/iptables -P INPUT ACCEPT
> /sbin/iptables -P OUTPUT ACCEPT
> /sbin/iptables -P FORWARD ACCEPT
> /sbin/iptables -t nat -P PREROUTING ACCEPT
> /sbin/iptables -t nat -P POSTROUTING ACCEPT
> # Hacemos un proxy transparente
> iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT
> --to-port 3128
> iptables -t nat -A PREROUTING -i eth2 -p tcp --dport 80 -j REDIRECT
> --to-port 3128
> ## Empezamos a filtrar
> ## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN
> # El localhost se deja (por ejemplo conexiones locales a mysql)
> iptables -A INPUT -i lo -j ACCEPT
> # Al firewall tenemos acceso desde la red local
> iptables -A INPUT -s 192.168.1.0/25 -i eth1 -j ACCEPT
> iptables -A INPUT -s 192.168.2.0/25 -i eth2 -j ACCEPT
> # Cerramos acceso de 192.168.2.1 por la eth1
> iptables -A INPUT -s 192.168.2.0/25 -i eth0 -j DROP
> iptables -A INPUT -s 192.168.2.0/25 -i eth0 -j DROP
>
> ## Ahora con regla FORWARD filtramos el acceso de la red local
> ## al exterior. Como se explica antes, a los paquetes que no van dirigidos
> al
> ## propio firewall se les aplican reglas de FORWARD
> #Aceptamos que vayan a puertos 80
> iptables -A FORWARD -s 192.168.1.0/25 -i eth1 -p tcp --dport 80 -j ACCEPT
> iptables -A FORWARD -s 192.168.2.0/25 -i eth2 -p tcp --dport 80 -j ACCEPT
> #Aceptamos que vayan a puertos https
> iptables -A FORWARD -s 192.168.1.0/25 -i eth1 -p tcp --dport 443 -j ACCEPT
> iptables -A FORWARD -s 192.168.2.0/25 -i eth2 -p tcp --dport 443 -j ACCEPT
> # Aceptamos salida a FTP
> iptables -A FORWARD -s 192.168.1.0/25 -i eth1 -p tcp --dport 21 -j ACCEPT
> iptables -A FORWARD -s 192.168.2.0/25 -i eth2 -p tcp --dport 21 -j ACCEPT
> # Aceptamos que vayan a puertos SQUID
>
###############################
Estas reglas al squid estan de mas
###############################

>
> iptables -A FORWARD -s 192.168.1.0/25 -i eth1 -p tcp --dport 3128 -j
> ACCEPT
> iptables -A FORWARD -s 192.168.2.0/25 -i eth2 -p tcp --dport 3128 -j
> ACCEPT
> # Aceptamos que consulten los DNS
> iptables -A FORWARD -s 192.168.1.0/25 -i eth1 -p tcp --dport 53 -j ACCEPT
> iptables -A FORWARD -s 192.168.1.0/25 -i eth1 -p udp --dport 53 -j ACCEPT
> iptables -A FORWARD -s 192.168.2.0/25 -i eth2 -p tcp --dport 53 -j ACCEPT
> iptables -A FORWARD -s 192.168.2.0/25 -i eth2 -p udp --dport 53 -j ACCEPT
> #Aceptamos que conecten SSH y Telnet
> iptables -A INPUT -p tcp --dport 22 -j ACCEPT
> #Aceptamos puerto HTTP y MySql desde fuera
> iptables -A INPUT -i eth0 -p tcp -m tcp --dport 80 -m state --state NEW -j
> ACCEPT
> iptables -A INPUT -p tcp -m tcp --dport 3306 -m state --state NEW -j ACCEPT
> iptables -A INPUT -i eth0 -p tcp -m tcp --dport 8080 -m state --state NEW
> -j ACCEPT
>
> #MSN messenger
> iptables -A FORWARD -p TCP --dport 1863 -j REJECT
> # Ahora hacemos enmascaramiento de la red local
> # y activamos el BIT DE FORWARDING (imprescindible!!!!!)
> iptables --table nat --append POSTROUTING --out-interface eth0 -j
> MASQUERADE
> iptables --append FORWARD --in-interface eth1 -j ACCEPT
> iptables --table nat --append POSTROUTING --out-interface eth0 -j
> MASQUERADE
> iptables --append FORWARD --in-interface eth2 -j ACCEPT
>
> # Con esto permitimos hacer forward de paquetes en el firewall, o sea
> # que otras máquinas puedan salir a traves del firewall.
> echo 1 > /proc/sys/net/ipv4/ip_forward
> ## Y ahora cerramos los accesos indeseados del exterior:
> # Nota: 0.0.0.0/0 significa: cualquier red
> # Cerramos el rango de puerto bien conocido
> iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 1:1024 -j DROP
> iptables -A INPUT -s 0.0.0.0/0 -p udp --dport 1:1024 -j DROP
> echo " OK . Verifique que lo que se aplica con: iptables -L -n -v"
> # Fin del script
> # Configuracion de servidor Proxy Squid
> #
> #-------------------------------------------
> #
> #Puerto de Servidor Proxy
> http_port 192.168.1.253:3128 transparent
> http_port 192.168.1.253:3128 transparent
> # Cache de memoria
> cache_mem  1024 MB
> cache_swap_low 90
> cache_swap_high 95
> maximum_object_size 8192 KB
> # Espacio de cache en HDD
> cache_dir ufs /var/spool/squid 2000 25 300
> # Ftp anonimo
> ftp_user anonymous en ipp.edu.pe
> ftp_passive on
> visible_hostname anubis
> # Etiquetas
> acl all src 0.0.0.0/0.0.0.0
> acl manager proto cache_object
> acl localhost src 127.0.0.1/255.255.255.255
> acl red-navegacion src 192.168.1.0/255.255.255.0
> acl red-navegacion2 src 192.168.2.0/255.255.255.0
> acl indeseados url_regex "/etc/squid/paginasprohibidas"
> acl download urlpath_regex "/etc/squid/download"
> # Reglas de Filtrado
> # Negamos el acceso a paginas listadas en el archivo
> "/etc/squid/paginasprohibidas"
> http_access allow localhost manager
> http_access allow red-navegacion !indeseados !download
> http_access allow red-navegacion2 !indeseados !download
> http_access deny all
>
> --
> Aland Laines Calonge
> Tecnico en Informatica
> http://www.lainessoluciones.com (en construccion)
>
> _______________________________________________
> CentOS-es mailing list
> CentOS-es en centos.org
> http://lists.centos.org/mailman/listinfo/centos-es
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://lists.centos.org/pipermail/centos-es/attachments/20080702/9fc863e5/attachment.htm


Más información sobre la lista de distribución CentOS-es