Problemas con conexiones remotas
Horst H. von Brand
vonbrand en inf.utfsm.cl
Vie Dic 28 14:35:18 CLST 2007
César Sepúlveda Barra <cesar.sepulveda.b en gmail.com> wrote:
> El Thursday 27 December 2007 10:49:42 Juan Pablo San MartÃn escribió:
> > Adjunto script:
Que sirve para... ?
En todo caso, esta mal estructurado. La idea es aceptar solo lo requerido,
y rechazar todo lo demas (REJECT).
> > #!/bin/sh
> >
> > iptables -F
> > iptables -X
> > iptables -Z
> > iptables -t nat -F
> >
> > iptables -P INPUT ACCEPT
> > iptables -P OUTPUT ACCEPT
> > iptables -P FORWARD ACCEPT
> > iptables -t nat -P PREROUTING ACCEPT
> > iptables -t nat -P POSTROUTING ACCEPT
Politicas (== valor por omision) debieran ser REJECT. Debieras aprovechar
lo de stateful:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
> > iptables -A INPUT -i lo -j ACCEPT
> > iptables -A INPUT -s 192.168.168.0/24 -i eth0 -j ACCEPT
> > iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 25 -j ACCEPT
-s 0.0.0.0/0 es redundante.
> > iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 110 -j ACCEPT
> ¿Tienes servidor de correo en la maquina que hace NAT?
Y aceptas POP3 desde todos lados?
> > iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 1723 -j ACCEPT
> > iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 3389 -j ACCEPT
> ¿A la maquina que hace NAT te conectas por escritorio remoto?
De cualquier parte? Esto lo restringiria a la "red local".
> > iptables -A FORWARD -s 192.168.168.0/24 -i eth0 -p tcp --dport 80 -j ACCEPT
> > iptables -A FORWARD -s 192.168.168.0/24 -i eth0 -p tcp --dport 443 -j
> > ACCEPT iptables -A FORWARD -s 192.168.168.0/24 -i eth0 -p tcp --dport 53 -j
> > ACCEPT iptables -A FORWARD -s 192.168.168.0/24 -i eth0 -p udp --dport 53 -j
No veo mucho sentido a esto... son direcciones privadas de todas formas.
> podrias dejar el equipo que natea tambien cono servidor de dns y eliminar la
> salida de los equipos por el puerto 53
No necesariamente es buena idea.
> > ACCEPT iptables -A FORWARD -s 192.168.168.0/24 -i eth0 -p tcp --dport 25 -j
> > ACCEPT iptables -A FORWARD -s 192.168.168.0/24 -i eth0 -p tcp --dport 110
> > -j ACCEPT
> >
> > iptables -A FORWARD -s 192.168.168.5 -i eth0 -j ACCEPT
> > iptables -A FORWARD -s 192.168.168.193 -i eth0 -j ACCEPT
> >
> > iptables -A FORWARD -s 192.168.168.0/24 -i eth0 -j DROP
> creo que ese drop no te funcionara si ya dijiste anteriormente que se dabas
> ACCEPT por defecto (iptables -P FORWARD ACCEPT)
Si funciona, pero es mejor fijar la politica del caso. Y como he dicho
innumerables veces ya, DROP es grosero. Usa REJECT.
> > iptables -t nat -A POSTROUTING -s 192.168.168.0/24 -o eth1 -j MASQUERADE
> >
> > echo 1 > /proc/sys/net/ipv4/ip_forward
> > iptables -A INPUT -s 0.0.0.0/0 -i eth1 -p tcp --dport 1:1024 -j DROP
> > iptables -A INPUT -s 0.0.0.0/0 -i eth1 -p udp --dport 1:1024 -j DROP
> > iptables -A INPUT -s 0.0.0.0/0 -i eth1 -p tcp --dport 30000:50000 -j DROP
> > iptables -A INPUT -s 0.0.0.0/0 -i eth1 -p udp --dport 30000:50000 -j DROP
> mejor cerrar el INPUT que tienes por defecto y abrir sólo lo necesario.
Exacto.
> Espero te ayuden de algo las recomendaciones. y la primera regla es la
> que se toma en cuenta, recuerda eso, si en algn momento dices a iptables
> que habra para cierto equipo el puerto 8080, lu luego mas abajo
> especificas cerrar el rango de puertos del 1 al 8081, el 8080 seguira
> habierto porque cuando se buscaba en tus reglas si podia pasar trafico
> por el puerto 8080 se encontro primero con la regla de que si podia y
> deja de revisarlas. espero se entienda la idea, por eso para que sea todo
> un poco más simple y tener menos error, cerrar todo por defecto primero y
> luego abrir cosas especificas.
Exacto. Reglas a seguir:
- Politicas REJECT, abrir lo requerido.
- Usar -m state donde se pueda! Es muy util...
- Dejar pasar ICMP, al menos echo-request y echo-reply (ping(1)). Si, hay
ICMPs toxicos... y los hay imprescindibles para el funcionamiento de la
red, pero usar estados RELATED se hace cargo de esos.
- De lo mas especifico a lo mas general.
- Factorizar! Crear cadenas propias para p.ej. manejar subredes etc. Ordena
harto... y puede ser mas eficiente (las reglas se procesan estrictamente
en orden!)
La manera en que se construyo el cortafuegos aca fue cerrar todo, abrir lo
necesario a ojo (todo esto hacia una IP unicamente), y luego con un
conejillo de indias ir viendo que requiere, y abrir lo necesario; una vez
que el cuye estaba contento, extender al resto del mundo y estar atento a
reclamos de cosas que no funcionan.
--
Dr. Horst H. von Brand User #22616 counter.li.org
Departamento de Informatica Fono: +56 32 2654431
Universidad Tecnica Federico Santa Maria +56 32 2654239
Casilla 110-V, Valparaiso, Chile Fax: +56 32 2797513
Más información sobre la lista de distribución Linux