Ayuda con script iptables

Iniciado por sworksht, 30 Abril 2011, 19:30 PM

0 Miembros y 1 Visitante están viendo este tema.

sworksht

Buenas a todos, es mi primer mensaje en este foro, aprovecho para presentarme y plantear un problema que tengo con un script de iptables.

Tengo un ordenador con 2 tarjetas de red, corriendo debian únicamente cono firewall entre el router y un switch, para proteger una red interna.

Los servicios hacía el exterior funcionan todos correctamente, es decir, las reglas que aplico en forward, funcionan bien, el problema lo tengo con la redirección de servicios hacia máquinas internas, en concreto, un servidor windows al cual necesitamos acceder a el por escritorio remoto desde el exterior y que también provee de un servidor FTP.

No consigo que funcione ninguno de esos dos servicios, al igual que tampoco funciona la regla SSH que abre este servicio en el firewall para acceder desde internet a el.

Os pego el script y a ver si alguien me puede ayudar en lo que está fallando.

Gracias anticipadas.

Script:


#!/bin/sh
## SCRIPT de IPTABLES - ejemplo del manual de iptables
## Ejemplo de script para firewall entre red-local e internet
## con servicios abiertos de puerto 25, 110, y 1723
## Pello Xabier Altadill Izura
## www.pello.info - pello@pello.info

echo -n Aplicando Reglas de Firewall...

## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

## 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

## Empezamos a filtrar

# Servicios redirigidos a maquinas internas
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 3389 -j DNAT --to 192.168.1.2:3389
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 3389 -j DNAT --to 192.168.1.2:3389
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8245 -j DNAT --to 192.168.1.2:8245
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 21 -j DNAT --to 192.168.1.2:21



## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN
# El localhost se deja (por ejemplo conexiones locales a mysql)
iptables -A INPUT -i lo -j ACCEPT

# Al firewall tenemos acceso desde la red local
iptables -A INPUT -s 192.168.1.0/24 -i eth1 -j ACCEPT
#iptables -A INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT

# Y abrimos el puerto SSH
iptables -A INPUT -s 0.0.0.0 -p tcp --dport 22 -j ACCEPT

## Ahora con regla FORWARD filtramos el acceso de la red local
## al exterior. Como se explica antes, a los paquetes que no van dirigidos al
## propio firewall se les aplican reglas de FORWARD

# Aceptamos que vayan a puertos 80
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 80 -j ACCEPT
# Aceptamos que vayan a puertos https
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 443 -j ACCEPT

# Aceptamos que consulten los DNS
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p udp --dport 53 -j ACCEPT

#Dejo salir al Noip
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p udp --dport 8245 -j ACCEPT

#Dejo salir a FTP
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p udp --dport 21 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p udp --dport 22 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p udp --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT

#Dejamos salir el correo
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p udp --dport 110 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p udp --dport 25 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p udp --dport 993 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p udp --dport 465 -j ACCEPT

# Y denegamos el resto. Si se necesita alguno, ya avisaran
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -j DROP

# Ahora hacemos enmascaramiento de la red local
# y activamos el BIT DE FORWARDING (imprescindible!!!!!)
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

# Con esto permitimos hacer forward de paquetes en el firewall, o sea
# que otras máquinas puedan salir a traves del firewall.
echo 1 > /proc/sys/net/ipv4/ip_forward

## Y ahora cerramos los accesos indeseados del exterior:
# Nota: 0.0.0.0/0 significa: cualquier red

# Cerramos el rango de puerto bien conocido
iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp --dport 1:1024 -j DROP
iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p udp --dport 1:1024 -j DROP

# Cerramos un puerto de gestión: webmin
iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp --dport 10000 -j DROP

echo " OK . Verifique que lo que se aplica con: iptables -L -n"

# Fin del script

c0d3rSh3ll

lo ideal es que no copies y pegues script que no sabes lo que hacen.

que puertos quieres abrir?? y en que ip. cual es tu tarjeta que se conecta a internet?

sworksht

Hola, los puertos que quiero abrir Redireccionados un pc de la red son el 3389 y el 21 en la ip 192.168.1.2 y en el propio firewall el 22. La tarjeta que se conecta a internet es la eth0.

Gracias.

SokarTefnut

#3
Hay un par de cosas que no tienen mucha lógica en tu enunciado:
1 .- Si solamente utilizas el Firewall, no necesitamos acceso a localhost
2.-  No necesitamos utilizar NAT, pues el router externo se encargará de hacer la conversion de IP




Usando la politica ACCEPT,básicamente quedaría:

# Permitir  SSH a Debian desde eth0

iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -j ACCEPT

# Permitir Escritorio remoto y FTP

iptables -A FORWARD -p tcp --dport 3389 -j ACCEPT
iptables -A FORWARD -p tcp --dport 20 -j ACCEPT
iptables -A FORWARD -p tcp --dport 21 -j ACCEPT

iptables -A FORWARD -p tcp --sport 3389 -j ACCEPT
iptables -A FORWARD -p tcp --sport 20 -j ACCEPT
iptables -A FORWARD -p tcp --sport 21 -j ACCEPT


# El resto DROP
iptables -A INPUT -j DROP
iptables -A OUTPUT -j DROP
iptables -A FORWARD -j DROP




"Saber romper medidas de seguridad no hace que seas hacker, al igual que saber hacer un puente en un coche no te convierte en un ingeniero de automoción"
-- Eric Raymond -- http://en.wikipedia.org/wiki/Eric_S._Raymond

sworksht

Cita de: SokarTefnut en  3 Mayo 2011, 20:45 PM
Hay un par de cosas que no tienen mucha lógica en tu enunciado:
1 .- Si solamente utilizas el Firewall, no necesitamos acceso a localhost
2.-  No necesitamos utilizar NAT, pues el router externo se encargará de hacer la conversion de IP




Usando la politica ACCEPT,básicamente quedaría:

# Permitir  SSH a Debian desde eth0

iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -j ACCEPT

# Permitir Escritorio remoto y FTP

iptables -A FORWARD -p tcp --dport 3389 -j ACCEPT
iptables -A FORWARD -p tcp --dport 20 -j ACCEPT
iptables -A FORWARD -p tcp --dport 21 -j ACCEPT

iptables -A FORWARD -p tcp --sport 3389 -j ACCEPT
iptables -A FORWARD -p tcp --sport 20 -j ACCEPT
iptables -A FORWARD -p tcp --sport 21 -j ACCEPT


# El resto DROP
iptables -A INPUT -j DROP
iptables -A OUTPUT -j DROP
iptables -A FORWARD -j DROP

Gracias por contestar y me vas a perdonar pero creo que ando un poco "perdido"

En el router, en el apartado Virtual host, he creado un NAT para que todo lo que entra en el rango de puertos 1-66355 los direccione a la ip del firewall, por eso desde ahí establezco esas reglas para que redireccione el tráfico.
Tal vez el fallo está en la configuración del router entonces....
Podríais aclararme este punto ?

Antes andaba perdido, pero con tu respuesta ya si que no me aclaro... Gracias de nuevo.


SokarTefnut

Explica un poco la topología de la red, ¿ Están todos los equipos conectados a mismo switch ó está el router fisicamente conectado solo a la eth0 y el resto de equipos a la eth1 via otro switch ?



"Saber romper medidas de seguridad no hace que seas hacker, al igual que saber hacer un puente en un coche no te convierte en un ingeniero de automoción"
-- Eric Raymond -- http://en.wikipedia.org/wiki/Eric_S._Raymond

sworksht

Cita de: SokarTefnut en  4 Mayo 2011, 08:01 AM
Explica un poco la topología de la red, ¿ Están todos los equipos conectados a mismo switch ó está el router fisicamente conectado solo a la eth0 y el resto de equipos a la eth1 via otro switch ?


La última opción es la correcta. Toda la red local conectada al switch, y entre medias del router y el switch, está el firewall con 2 tarjetas de red. La eth0 al router y la eth1 al switch. De ahí las reglas de redireccionamiento.

Gracias de nuevo.