Re direccionamiento de conecciones entrantes a servidor interno web

Forums: 

Antes que todo saludos.

Espero que alguien me pueda ayudar con un problema que tengo al configurar las reglas iptables en un servidor Centos 5 el cual tiene dos interfaces de red para la salida a internet y la red interna y tengo un equipo interno en el que tengo instalado un windows xp SP3 y apache tomcat 5.5 como servidor web escuchando por el puerto 8080 y deseo redireccionar las conecciones entrantes de un puerto diferente por ejemplo el 880 del equipo que hace NAT a mi servidor web interno en el puerto 8080, el problema es que he probado con la mayoria de los scripts que he encontrado en el internet pero no logro establecer la redireccion

Este es el script actual que tengo:

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

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

## REDIRECCIONES

# Todo lo que venga por el exterior y vaya al puerto 880 lo redirigimos
# a una maquina interna
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 880 -j DNAT --to 192.168.12.241:8080

# Los accesos de un ip determinada a Terminal server se redirigen e esa
# maquina
#iptables -t nat -A PREROUTING -s 221.23.124.181 -i eth1 -p tcp --dport 3389 -j DNAT --to 192.168.12.12:3389

## Nota: eth1 es el interfaz conectado al router y eth0 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.12.0/24 -i eth0 -j ACCEPT

## Abrimos el acceso a puertos de correo

# Abrimos el puerto 25, hay que configurar bien el relay del servidor SMTP
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 25 -j ACCEPT
# Abrimos el pop3
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 110 -j ACCEPT

# Y abrimos el puerto pptpd para la ip del adsl de casa del jefe
iptables -A INPUT -s 211.45.176.24 -p tcp --dport 1723 -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.12.0/24 -i eth0 -p tcp --dport 8080 -j ACCEPT
# Aceptamos que vayan a puertos https
iptables -A FORWARD -s 192.168.12.0/24 -i eth0 -p tcp --dport 443 -j ACCEPT

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

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

# Ahora hacemos enmascaramiento de la red local
# y activamos el BIT DE FORWARDING (imprescindible!!!!!)
iptables -t nat -A POSTROUTING -s 192.168.12.0/24 -o eth1 -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 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

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

# Y cerramos el puerto del servicio PPTPD, solo abierto para el jefe.
iptables -A INPUT -s 0.0.0.0/0 -i eth1 -p tcp --dport 1723 -j DROP

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

# Fin del script

Esperando que puedan ayudarme, les agradezco de antemano.

hombre nada + facil iptables

Imagen de falcom

hombre nada + facil

iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 80 -j DNAT --to 192.168.0.1:880

donde 192.168.0.1 es la ip de la pc dentro de la lan la windoze
eth1, es la interfaz publica
easy!

Gracias por responder. Ya lo

Gracias por responder.

Ya lo he hecho tengo las interfaces

eth1 = internet
eth0 = intranet

En realidad lo que deseo es que al poner en cualquier navegador desde fuera de mi red

http://ip-publica:880

me redireccione a mi servidor interno que tiene el apache tomcat escuchando en el 8080

tengo esta regla pero no se porque no me funciona:

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 880 -j DNAT --to 192.168.12.241:8080

»

Prueba con esto

Amigo, te enseñare un mecanismo infalible.

Pon la regla con la opción "-I" asi esta se ubicará por encima de cualqiuer otra y ya no tendrás que preocuparte por cualquier otra regla ya existente que pueda ser mas general en comparación a la que pondrás (con la opción "-A" si tendrías que verificar que no haya una regla eneral que anule la que colocarás).

Por ejemplo, sea cual sea las reglas de iptables que tengas cargadas ejecuta lo siguiente:

iptables -t nat -I PREROUTING -p tcp -i eth1 -d --dport 80 -j DNAT --to :8080
iptables -I INPUT -i eth1 -p tcp --dport 80 -j ACCEPT <--- Aunque creo que no es necesario esta (90% seguro)
iptables -I FORWARD -d -p tcp --dport 8080 -j ACCEPT

y para hacerte mas facil la vida, desactiva el selinux (esto lo hara de forma momentanea hasta el próximo reinicio) si es RedHat o derivados.

setenforce 0

y asegurate que haya un "1" en ip_forward

echo 1 > /proc/sys/net/ipv4/ip_forward

Alberto Vidal A.
RHCE, RHCVA, Linux OCA.