[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: configuración regla iptable dmz-lan



El Jueves, 20 de Abril de 2006 16:14, Raul Alonso escribió:
> Hola listeros,
>
> De nuevo os traigo mi duda y os adjunto dos archivos: el dibujo de mi
> red y el archivo sh de configuración.
>
> El problema mas grave que tengo es que no consigo que el equipo de la
> DMZ pueda acceder a los archivos compartidos de un ordenador de la red
> local protegida.
>
> El otro problema es el balanceo de carga... no consigo que me funcione
> desde la red local. Es decir: desde el firewall me hace balanceo y
> luego si me pongo en cualquier ordenador de la red local no tengo
> acceso a internet. Si quito el balanceo y pongo que acceda siempre por
> un gateway no hay problema.
>
> Una vez mirado en muchiiiiisimos comos y habiéndome vuelto loco de
> tanto buscar.... ¿alguna ayudita? Muchas gracias y saludos

Pego de nuevo tu script y te lo voy comentando linea a linea, eliminaré las 
partes no relevantes, para no hacer esto muy largo.

>## Variables de nuestra red
>IPLOCAL="192.168.0.21"
>IPINTERNET1="192.168.1.2"
>IPINTERNET2="192.168.2.2"
> IPDMZ="192.168.2.3"
> GATEWAY1="192.168.1.1"
> GATEWAY2="192.168.2.1"
> INTERNET1="eth1" # Ono
> INTERNET2="eth2" # Telefonica
> REDLOCAL="eth0" # Red local
[...]
> ip route show table main | grep -Ev ^default | while read ROUTE ; do ip
> route add table 1 $ROUTE ; done ip route show table main | grep -Ev
> ^default | while read ROUTE ; do ip route add table 2 $ROUTE ; done

Estas dos lineas no sé que hacen .. pero no tienen buena pinta.

[..]
> # Balanceo de carga (2 gateways)
> ip route add default scope global equalize nexthop via $GATEWAY1 dev
> $INTERNET1 weight 1 nexthop via $GATEWAY2 dev $INTERNET2 weight 1

equalize no sirve para hacer balanceo de carga, lo mas probable es que la 
mayoría de las conexiones se establezcan y luego fallen más que una escopeta 
de feria .. ¿me equivoco o eso es lo que te pasa?

[...]
> # Establecemos politica por defecto
> iptables -P INPUT ACCEPT
> iptables -P OUTPUT ACCEPT
> iptables -P FORWARD ACCEPT
> iptables -t nat -P PREROUTING ACCEPT
> iptables -t nat -P POSTROUTING ACCEPT

Umm .. ok, si luego metes al final de cada canal una regla de denegación, 
aunque yo lo suelo hacer al revés, lo pongo todo a DROP o REJECT y al final 
del canal meto una regla de logeo para saber que ha intentado escaparse.

> # Permito FTP PASV
> modprobe ip_conntrack
> modprobe ip_conntrack_ftp ports:21,20
> modprobe ip_nat_ftp ports:21,20

Esto no es para FTP Pasivo .. al contrario, se cargan esos módulos para poder 
hacer FTP activo

> # Al firewall tenemos acceso desde la red local
> iptables -A INPUT -s 192.168.0.0/24 -i $REDLOCAL -j ACCEPT

Redundante ... ya tienes puestas que la política por defecto es ACEPTAR.

> # DENEGAMOS ACCESOS
> iptables -A FORWARD -s 192.168.0.20 -i $REDLOCAL -p tcp --dport 80 -j DROP
> #Eneko iptables -A FORWARD -d 64.4.32.7 -j REJECT # HOTMAIL
> iptables -A FORWARD -d 207.46.1.0/24 -j REJECT # MESSENGER
> iptables -A FORWARD -d 64.4.15.61 -j REJECT # MESSENGER
> iptables -A FORWARD -d 64.4.13.0/24 -j REJECT # MESSENGER
> iptables -A FORWARD -d 213.199.148.191 -j REJECT # MESSENGER
> iptables -A FORWARD -p TCP --dport 1863 -j REJECT # PUERTO MSN

Al messenger es mas facil pillarlo con un squid en transparente y un par de 
ACL's, además pillarías también el yahoo messenger y yerbas derivadas. Si no 
quieres usar Squid, usa el parche de L7 y pescalo por protocolo, por IP es 
una soberana tontería, pueden cambiar en cualquier momento.

> # Y denegamos el resto. Si se necesita alguno, ya avisaran
> iptables -A FORWARD -s 192.168.0.0/24 -i $REDLOCAL -j DROP

Ojo a esto, que es lo que te está causando problemas para el acceso desde la 
DMZ al servidor de ficheros de la LAN, luego verás porqué.

> iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o $INTERNET2 -j
> MASQUERADE iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o $INTERNET1
> -j MASQUERADE echo "Rutas enmascaradas."

Mal, muy mal, debería de ser solo una y de esta manera.
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d ! 192.168.2.0/24 -j 
MASQUERADE

> ## Permitimos el paso de la DMZ acceder al intercambio de archivos con
> 192.168.0.1 iptables -A FORWARD -s 192.168.0.1 -d $IPDMZ -p tcp --sport
> 1024:65535 --dport 139 -j ACCEPT iptables -A FORWARD -s $IPDMZ -d
> 192.168.0.1 -p tcp --sport 139 --dport 1024:65535 -j ACCEPT
> ## Permitimos abrir el VNC server de la DMZ desde la IP 192.168.0.2
> iptables -A FORWARD -s 192.168.0.2 -d $IPDMZ -p tcp --sport 1024:65535
> --dport 5900 -j ACCEPT 
> iptables -A FORWARD -s $IPDMZ -d 192.168.0.2 -p tcp --sport 5900 --dport 
1024:65535 -j ACCEPT

Estas reglas son inútiles, ya has dicho mas arriba en el script QUE DENIEGAS 
EL RESTO DEL TRÁFICO FORWARD, y estas reglas las estás AÑADIENDO (-A), que nó 
INSERTANDO (-I) después de la regla de denegación, si miras con un -v los 
contadores de estas reglas verás que están a 0 patatero, jamás ha llegado un 
paquete a ellas. Te recuerdo lo que te dije al principio, si la política por 
defecto es ACEPTAR, la regla de DENEGACIÓN va AL FINAL del canal.

> # Cerramos el rango de puerto bien conocido
> iptables -A INPUT -i $INTERNET1 -s 0.0.0.0/0 -p tcp --dport 1:1024 -j DROP
> iptables -A INPUT -i $INTERNET1 -s 0.0.0.0/0 -p udp --dport 1:1024 -j DROP
> iptables -A INPUT -i $INTERNET2 -s 0.0.0.0/0 -p tcp --dport 1:1024 -j DROP
> iptables -A INPUT -i $INTERNET2 -s 0.0.0.0/0 -p udp --dport 1:1024 -j DROP
>
> # Cerramos el puerto de gesti n: webmin
> iptables -A INPUT -i $INTERNET1 -s 0.0.0.0/0 -p tcp --dport 10000 -j DROP
> iptables -A INPUT -i $INTERNET2 -s 0.0.0.0/0 -p tcp --dport 10000 -j DROP

Umm .. yo te recomendaría que cambiases a la política "Está prohibido todo lo 
que no está explícitamente permitido", osea que cambies a DROP los canales, y 
solo ACEPTES lo que quieres, es mas fácil de mantener, y segundo, que uses 
algún script ya hecho para firewalls, te recomiendo firehol ó fwbuilder.
Tu script de firewall es un buen intento, pero deja muchas cosas en el aire, 
para empezar, no es un statefull firewall, osea .. no se comprueba la 
integridad de los paquetes en los canales correspondientes (que no te 
intenten mandar un paquete FIN sin existir un STABLISHED primero, etc)

En cuanto al balanceo de carga, te recomiendo echarle un ojo al script 
mpath.sh que podrás encontrar en el histórico de la lista de LARTC.

-- 
Saludos.

Raúl Alexis Betancor Santana
Director Gerente
Dimensión Virtual S.L.



Reply to: