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