Iptables DMZ CentOS

Forums: 

Bueno despues de unos dias peleandome con esto y leerme 50 manuales, no se que hago mal, y no me queda mas que recurrir a buscar ayuda en vosotros

Os pongo en situacion a ver si veis donde estoy fallando, os lo agradeceria mucho ya que me estoy volviendo loco

un esquema de lo que quiero montar

[IMG]http://i54.tinypic.com/3355poo.jpg[/IMG]

la imagen igual tiene erratas, el codigo no

[quote]!/bin/bash

##FLUSH DE LAS REGLAS

iptables -F
iptables -X
iptables -Z
iptables -t nat -F

##REGLAS DEFAULT

iptables -P INPUT DROP
iptables –P OUTPUT DROP
iptables –P FORWARD DROP
iptables –t nat –PREROUTING DROP
iptables –t nat –POSTROUTING DROP

##PERMITIR LOCAL

/sbin/iptables –A INPUT–i lo –j ACCEPT
/sbin/iptables –A OUTPUT –o lo –j ACCEPT

##ACCESO DE LA LAN AL FIREWALL VIA SSH

iptables –t nat –A PREROUTING –i eth1 –j ACCEPT
iptables –A INPUT –s 172.26.1.4 –p tcp –dport 8686 –j ACCEPT
iptables –A OUTPUT –d 172.26.1.4 –p tcp –sport 8686 –j ACCEPT

##BLOQUEO DE SPOOFING

iptables –A INPUT –i eth0 –s 172.26.1.0/24 –j DROP
iptables –A INPUT –i eth0 –s 172.26.2.0/29 –j DROP

Echo “1” > /proc/sys/net/ipv4/ip-forward

##ACCESO WAN-DMZ

iptables –t nat –A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 172.26.2.2:80
iptables –t nat –A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to-destination 172.26.2.2:443

iptables –t nat –A PREROUTING -i eth0 -p tcp --dport 3062 -j DNAT --to-destination 172.26.2.4:3062
iptables –t nat –A PREROUTING -i eth0 -p tcp --dport 3063 -j DNAT --to-destination 172.26.2.4:3063
iptables –t nat –A PREROUTING -i eth0 -p tcp --dport 3064 -j DNAT --to-destination 172.26.2.4:3064

iptables –t nat –A PREROUTING -i eth0 -p udp --dport 3060 -j DNAT --to-destination 172.26.2.4:3060
iptables –t nat –A PREROUTING -i eth0 -p udp --dport 3061 -j DNAT --to-destination 172.26.2.4:3061

##apertura de puertos

iptables -A FORWARD -p tcp --dport 80 -i eth0 -o eth2 -j ACCEPT
iptables -A FORWARD -p tcp --sport 80 -i eth2 -o eth0 -j ACCEPT

iptables -A FORWARD -p tcp --dport 443 -i eth0 -o eth2 -j ACCEPT
iptables -A FORWARD -p tcp --sport 443 -i eth2 -o eth0 -j ACCEPT

iptables -A FORWARD -p tcp --dport 3062 -i eth0 -o eth2 -j ACCEPT
iptables -A FORWARD -p tcp --sport 3062 -i eth2 -o eth0 -j ACCEPT
iptables -A FORWARD -p tcp --dport 3063 -i eth0 -o eth2 -j ACCEPT
iptables -A FORWARD -p tcp --sport 3063 -i eth2 -o eth0 -j ACCEPT
iptables -A FORWARD -p tcp --dport 3064 -i eth0 -o eth2 -j ACCEPT
iptables -A FORWARD -p tcp --sport 3064 -i eth2 -o eth0 -j ACCEPT

iptables -A FORWARD -p udp --dport 3060 -i eth0 -o eth2 -j ACCEPT
iptables -A FORWARD -p udp --sport 3060 -i eth2 -o eth0 -j ACCEPT
iptables -A FORWARD -p udp --dport 3061 -i eth0 -o eth2 -j ACCEPT
iptables -A FORWARD -p udp --sport 3061 -i eth2 -o eth0 -j ACCEPT

##LAN WAN

iptables -t nat -A POSTROUTING -s 172.26.1.0/24 -o eth0 -j MASQUERADE

iptables -A FORWARD -p tcp -i eth1 -o eth0 -m state --state NEW,ESTABLISHED,RELATED --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED --sport 80 -j ACCEPT

iptables -A FORWARD -p tcp -i eth1 -o eth0 -m state --state NEW,ESTABLISHED,RELATED --dport 443 -j ACCEPT
iptables -A FORWARD -p tcp -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED --sport 443 -j ACCEPT[/quote]

Tengo una ip publica, pero bueno a nivel de reglas "creo" que no influye,
-En el router (uno de estos blancos de telefonica wireless)
he cambiado la ip interna y he quitado todas las reglas de nat que habia antes.
-La central de alarmas tiene como puerta de enlace 172.26.2.1
-el cableado router-tarjeta de red firewall debe ser cruzado o recto ?(ahora es recto)
-se ha ejecutado el script con [I]sh script[/I] y luego se han guardado las politicas con [I]service iptables save[/I]

-no es necesario iniciar sesion en el servidor para que el netfilter actue no?
-Esta activado el forwarding en /etc/sysctl.conf
-Esta activado el forwarding /proc/sys/net/ipv4/ip_forward
-se me ha pasado alguna configuracion en el servidor?

se que el problema viene de que la politica por defecto esta a default pero creo que he creado las reglas pertinentes que afectan a lo que si quiero dejar abierto

Con las politicas por defecto a DROP desde el propio firewall no consigo hacerle ping a las interfaces, si lo pongo todo en accept si, pero entiendo que es porque el trafico icmp no esta espeficifado aceptarlo.

con todo conectado desde un equipo de la lan no puedo hacerle ping a la patita del firewall (puerta de enlace), tampoco ssh (que si esta especificado)

no se si me he dejado alguna cosa

se que es un follon pero gracias

muchisimas gracias

donde tienes la IP publica en

Imagen de Ascii

donde tienes la IP publica en el router???si es así tienes que activar el NAT y activar un DMZ hacia el IP que tiene el eth0 10.0.0.2
Tienes que hacer un doble NAT y doble DMZ para que funcione con el IP real en el router.
Si no quieres hacer un doble NAT tienes que llamar a tu proveedor para que ellos te indiquen como poner el IP real en la eth0 de tu server.
(y retirar la 10.0.0.2)

salu2
A

Hola ante todo gracias por

Hola ante todo gracias por contestar

La ip publica esta configurada en el router, el cual es un router standard de un isp tradicional, lo que te refires es que haga una regla en el router para que todo el trafico entrante vaya redirigido a la interfaz eth0 no?
El router tiene una apartado donde configuras la public ip y la internal ip, ambas estan configuradas

El principal problema que tengo esque no puedo acceder desde el equipo de la LAN autorizado (172.26.1.4) por ssh tampoco, es mas no puedo hacer ping ni nada.

El caso es que he probado a poner todas las reglas default en ACCEPT y si puedo hacer ping desde el propio firewall a las propias interfaces pero desde el equipo de la LAN sigo sin conexion,(esta todo configurado,ip, mask, gateway)

No se si es algun tipo de error de configuracion o de conexion

CONEXION:

router ---> tarjeta eth0

tarjeta eth1 a switch LAN
tarjeta eth2 a switch DMZ

Todos cables rectos

No se si se os ocurre algun fallo..

desactiva todo el firewall en

Imagen de Ascii

desactiva todo el firewall en el equipo y prueba tratando de conectarte por ssh a la 10.0.0.2 desde el internet (conectandote a la IP publica del router)
Si esto no trabaja significa que el primer paso de redireccionar el trafico hacia la 10.0.0.2 no esta trabajando y por tanto tampoco te va a trabajar el resto de tu configuración.

Ejemplo un paquete TCP que quieras que llegue a la 172.26.2.2:80 sigue esta ruta

1
IP Internet -> IP publica:80

2 (primera redireccion)
IP publica:80 -> 10.0.0.2:80

3 (segunda redireccion)
10.0.0.2:80 -> 172.26.2.2:80

El 3 es lo que estas configurando el tu servidor linux, te falta el 2 en tu router.

salu2
A

oki, esa parte, esta por

oki, esa parte, esta por hacer se me ha pasado, con lo que debo de redireccionar todo el trafico a la ip 10.0.0.2 sea del tipo que sea pero lo que no me cuadra es que desde la lan (172.26.1.0/24) no pueda hacerle ping a la puerta de enlace (1.1) ni hacerle ssh, cuando el ssh esta escuchando en la 1.1...

se te ocurre porque puede ser?

iptables -P INPUT

Imagen de Ascii

iptables -P INPUT DROP
iptables –P OUTPUT DROP

la política por default es DROP. Tienes que permitir en tu firewall el ICMP hacia la 172.26.1.1

vale pero entonces las

vale pero entonces las conexiones SSH que si permito con:

iptables –t nat –A PREROUTING –i eth1 –j ACCEPT
iptables –A INPUT –s 172.26.1.4 –p tcp –dport 22 –j ACCEPT
iptables –A OUTPUT –d 172.26.1.4 –p tcp –sport 22 –j ACCEPT

?

Iptables Firewall

Imagen de jcalderon

despues de un pequeño analisis te pongo algunos datos espero te sean de mucha utilidad.

* Acceso SSH me imagino que lo quieren hacer desde una solo maquina que se encuentra en la "Red B" te sugiero especificar la interfaz y supongo que el puerto de escucha es el 8686 puesto que por default es el 22, quedarian de la siguiente forma:
iptables -A INPUT -i eth1 -p tcp -s 172.26.1.4 -d 172.26.1.1 --sport 1024: --dport 8686 -j ACCEPT
iptables -A OUTPUT -o eth1 -p tcp -s 172.26.1.1 -d 172.16.1.4 --sport 8686 --dport 1024: -j ACCEPT

* Ping hace uso de paquetes ICMP de solicitud y respuesta, como tienes política DROP debes permitir ICMP para todas las interfaces (eth0, eth1 y eth2) si así lo crees necesario. En mi caso me gusta trabajar con lo tipos de ICMP - 0 (solicitud) y ICMP - 8 (respuesta) mira:
#Poder hacer ping desde el firewall a la "Red B" y desde la "Red B" al firewall.
iptables -A INPUT -i eth1 -p icmp --icmp-type 0 -s 172.26.1.0/24 -d 172.16.1.4 -j ACCEPT
iptables -A INPUT -i eth1 -p icmp --icmp-type 8 -s 172.26.1.0/24 -d 172.16.1.4 -j ACCEPT
iptables -A OUTPUT -o eth1 -p icmp --icmp-type 0 -s 172.16.1.4 -d 172.26.1.0/24 -j ACCEPT
iptables -A OUTPUT -o eth1 -p icmp --icmp-type 8 -s 172.16.1.4 -d 172.26.1.0/24 -j ACCEPT

Similar para el resto de interfaces teniendo en cuenta el direccionamiento de las otras redes. Y si quieres permitir ping desde la "Red B" al mundo.
#Habilitar "icmp" desde la "Red B" a la red pública (internet)
iptables -A FORWARD -i eth1 -o eth0 -p icmp -s 172.26.1.0/24 -d 0.0.0.0/0 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p icmp -s 0.0.0.0/0 -d 172.26.1.0/24 -j ACCEPT

#Habilitar "icmp" desde la "Red B" a la "DMZ"
iptables -A FORWARD -i eth1 -o eth2 -p icmp -s 172.26.1.0/24 -d 172.26.2.0/29 -j ACCEPT
iptables -A FORWARD -i eth2 -o eth1 -p icmp -s 172.26.2.0/29 -d 172.26.1.0/24 -j ACCEPT

La mejor forma de comprobar si las reglas hacen macth con "iptables -nvL" te pongo una imagen y fijate en la parte izquierda.
http://twitpic.com/3iri5w

En el script que tienes faltan algunas cosas o bueno mejor dicho no se si en verdad lo requieres para todo te pongo:
- Resolución de Dns en el mismo firewall.
- Navegación desde la "Red B"
- Usar variables para la cosas muy repetitivas.

Bueno es mi pequeño aporte espero sea de mucha ultilidad :)
Happy Hacking

Saludos:

Hola Jcalderon, ante todo

Hola Jcalderon, ante todo muchas gracias

Creo que el problema reside en que la politica de PREROUTING y POSROUTING por defecto es DROP.

No he tenido tiempo de probarlo, solo he podidido revisarlo porque para hacerlo tengo que parar la red, (temas aparte) pero creo que el error reside en que permito el prerouting , pero no permito la salida (postrouting)

[quote]iptables –t nat –A PREROUTING –i eth1 –j ACCEPT
iptables –A INPUT –s 172.26.1.4 –p tcp –-dport 22 –j ACCEPT
iptables –A OUTPUT –d 172.26.1.4 –p tcp –-sport 22 –j ACCEPT[/quote]

Creo que asi lo solucionaria (el puerto si es el 22, lo cambie para hacer pruebas pero es el 22)corrigeme si crees que me equivoco

[quote]iptables –t nat –A PREROUTING –i eth1 –j ACCEPT
iptables –t nat –A POSTROUTING –o eth1 –j ACCEPT
iptables –A INPUT –s 172.26.1.4 –p tcp –-dport 22 –j ACCEPT
iptables –A OUTPUT –d 172.26.1.4 –p tcp –-sport 22 –j ACCEPT[/quote]

El tema es, deberia permitir post y pre en todo tipo de conexiones? por ejemplo en las de LAN-WAN para que la red B pueda acceder a internet?

Sobre el icmp, tambien lo he puesto en el script ya pero como te he comentado no lo he podido probar aun. El ping hacia/desde internet no lo creo necesario al menos demomento

Sobre la resolucion de dns y la navegacion, corrigeme porfavor si me equivoco pero en teoria esto permitiendo el trafico por port 80 luego el dns se encarga el router no?

Si no es asi seria algo tal que asi no:
[quote]
iptables -t nat -A POSTROUTING -s 172.26.1.0/24 -o eth0 -j MASQUERADE

iptables -A FORWARD -p tcp -i eth1 -o eth0 -m state --state NEW,ESTABLISHED,RELATED --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED --sport 80 -j ACCEPT

iptables -A FORWARD -p tcp -i eth1 -o eth0 -m state --state NEW,ESTABLISHED,RELATED --dport 443 -j ACCEPT
iptables -A FORWARD -p tcp -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED --sport 443 -j ACCEPT

iptables -A FORWARD -p udp -i eth1 -o eth0 --dport 53 -j ACCEPT
iptables -A FORWARD -p udp -i eth0 -o eth1 --sport 53 -j ACCEPT
[/quote]

gracias denuevo por todo