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

RE: Tengo una duda para asegurar el firewall.



 --- Pablo Braulio <brulics@gmail.com> escribió:

> Hola a todos.
> 
> Estoy tratando de depurar el firewall, para proteger
> mejor la red local. 
> Necesito la opinión de mas gente.
> 
> La estructura es esta:
> 
> Un equipo haciendo de firewall con 3 interfaces. No
> hay router, va directo al 
> modem cable.
> 
> 	eth0 -->Puerta de enlace dhcp
> 	eth1 -->LAN
> 	eth2 -->Servidor www, mail.
> 
> Tengo puestas todas las reglas que se piden para que
> funcione (politica por 
> defecto, modulos, Forwarding, NAT para la LAN y DMZ,
> Interfaz local). Eso 
> funciona bien.
> 
> La política es:
> 
> 		iptables -P INPUT DROP
>                 iptables -P OUTPUT ACCEPT
>                 iptables -P FORWARD DROP <-- Esta es
> la que quiero dejar ahora
> 
> Poniendo en FORWARD DROP he tenido que poner las
> siguientes reglas para que 
> los equipos, tanto de la LAN como el servidor que
> está en la DMZ, pueda salir 
> a Internet.
> 
> 		iptables -A INPUT -i eth0 -m state --state
> ESTABLISHED,RELATED -j ACCEPT
>                 iptables -A OUTPUT -o eth0 -m state
> --state 
> NEW,ESTABLISHED,RELATED -j ACCEPT
> 
>                 iptables -A FORWARD -i eth2 -m state
> --state 
> NEW,ESTABLISHED,RELATED -j ACCEPT
>                 iptables -A FORWARD -o eth2 -m state
> --state 
> ESTABLISHED,RELATED -j ACCEPT
> 
>                 iptables -A FORWARD -i eth1 -m state
> --state 
> NEW,ESTABLISHED,RELATED -j ACCEPT
>                 iptables -A FORWARD -o eth1 -m state
> --state 
> ESTABLISHED,RELATED -j ACCEPT
> 
> Como podéis ver, la eth0 acepta sólo conexiones
> nuevas salientes, la eth1 y la 
> eth2 a la inversa. Esto lo he puesto así, pues
> acepta las conexiones desde la 
> LAN y el servidor de la DMZ. Supongo que será lo
> correcto.
> 
> Lo que quiero hacer, es evitar que desde el firewall
> y el servidor de la DMZ, 
> se tenga acceso a la LAN. Al contrario si.
> 
> Lo curioso es que por ssh puedo acceder a todos los
> equipos, incluso la DMZ, 
> pero al firewall no. Tengo que poner una regla para
> que me lo permita. No 
> entiendo el porque. El servidor ssh no tiene ninguna
> configuración especial 
> que no lo permita.

Me parece estupendo que crees tu propio script de
iptables, se aprende bastante y tienes toda la
flexibilidad para poder hacer lo que desees.

Antes de nada te voy a dar un par de consejos que a mi
me han ayudado bastante:

1 Identifica cada subred con un nombre. Asi por
ejemplo la subred que forma el cable-modem con el
firewall se podría llamar HADES, la LAN la puedes
llamar OLIMPO, y la DMZ la puedes llamar TARTARO.
Puedes elegir los nombres que quieras, no tienen
porque ser de la mitología. Hay un RFC bastante majo
para elegir nombres, pero no recuerdo el link.

2 A cada equipo asignale un nombre: Firewall=CERBERO,
Web-server=PERSEFONE, Cable-Modem=ZEUS....

3 Hazte un esquema de como quieres que interactue cada
red con las demás, que tráfico aceptar, que tráfico
denegar...

4 Empezamos el script, empieza por definir variables:
 #redes
 HADES=eth0
 OLIMPO=eth1
 TARTARO=eth2

 #equipos
  #en HADES
  ZEUS=10.10.1.1
  CERBERO_HADES=10.10.1.2
  #en OLIMPO
  ATENEA=192.168.1.2
  CERBERO_OLIMPO=192.168.1.1
   ...
  #en TARTARO
  ...
  CERBERO_TARTARO=192.168.2.1

El uso de variables simplifica mucho el script, ya que
ademas de ser más descriptivo, si cambia algún
parametro solo tienes que cambiarlo en una línea y no
en todas las reglas en las que aparezca.

Enmascara las redes internas a la hora de salir al
exterior:

$IPT -t nat -A POSTROUTING -s $CERBERO_OLIMPO/24 -o
$HADES -j SNAT --to $CERBERO_HADES

$IPT -t nat -A POSTROUTING -s $CERBERO_TARTARO/24 -o
$HADES -j SNAT --to $CERBERO_HADES

Define ahora las reglas para la interaccion de unas
redes con otras. En las reglas procura discriminar por
interfaz entrante e interfaz saliente:

#OLIMPO->TARTARO
iptables --new-chain olimpo_a_tartaro

iptables -A FORWARD -i $OLIMPO -o $TARTARO -j
olimpo_a_tartaro

iptables -A olimpo_a_tartaro -p tcp --dport 80 -j
ACCEPT
...
(en cada cadena, despues de especificar todo lo que
aceptas, deniega el resto y logealo, los logs son
importantes. Si, aunque tu politica por defecto sea
DROP vuelve a denegarlo, total, no cuesta nada)
#TARTARO->OLIMPO
...
#OLIMPO->HADES

...
#HADES->OLIMPO
...
.....


y por ultimo establece las reglas de cada red a la
hora de interactuar con el propio firewall. Esto es lo
que te falla, por eso no puedes entrar por ssh al
firewall, porque es como si no hubieras definido la
interaccion de cada red con el firewall.

#OLIMPO->CERBERO
iptables --new-chain olimpo_a_cerbero

iptables -A INPUT -i $HADES -j olimpo_a_cerbero

iptables -A olimpo_a_cerbero -p tcp --dport 22 -j
ACCEPT (con esto permites que los equipos de la red
olimpo puedan acceder por ssh al firewall) 
...

(lo mismo de antes, en cada cadena, despues de
especificar todo lo que aceptas, deniega el resto y
logealo, los logs son importantes. Si, aunque tu
politica por defecto sea DROP vuelve a denegarlo,
total, no cuesta nada)
#CERBERO->OLIMPO
...
#HADES->CERBERO

...
#CERBERO->HADES
...
......

Bueno, me ha quedado un poco largo. Se que hacer asi
el script puede ser más tedioso, pero a la hora de
depurarlo es mucho más facil porque queda mucho más
claro.

Un saludo.


		
______________________________________________ 
Renovamos el Correo Yahoo! 
Nuevos servicios, más seguridad 
http://correo.yahoo.es



Reply to: