Iptables no redirecciona SSH

Forums: 

Buenos días,

Estimados, tengo una máquina usada como gateway y firewall de una red lan, tengo dos interfaces de red la eth0 está conectada al modem del ISP, la eth1 está conectada a la red LAN con una ip fija dentro de una red 10.0.0.0/24 la ip es la 10.0.0.3, la eth0 es una ip dinámica. Ahora bien, todo lo que entre por el puerto 22 lo quiero enviar a otra máquina que posee asterisk y la cual quiero que esté disponible para yo poder ingresar vía ssh. la ip de esa máquina es la 10.0.0.2 no se que estoy haciendo mal

De momento no he cerrado puertos por que no he conseguido redireccionar:

Anexo mi Script

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

echo "Enrutando"

iptables -t nat -A PREROUTING -i eth0 \
-p tcp --dport 22 -j DNAT --to 10.0.0.2:22

echo "Dando permisos locales"
iptables -A INPUT -i lo -j ACCEPT

echo "Dando salida a internet y enmascarando la ip"

iptables -A INPUT -s 10.0.0.0/24 -i eth1 -j ACCEPT

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

echo "Activando bit de forward"
echo 1 > /proc/sys/net/ipv4/ip_forward

echo "Haciendo Forward"
#190.200.131.56 es la dirección ip pública que otorga el dhcp a la eth0

iptables -A FORWARD -s 190.200.131.56 -d 10.0.0.2 -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -s 10.0.0.2 -d 190.200.131.56 -p tcp --sport 22 -j ACCEPT
echo "Ok"

Nota: No sé que se me puede estar olvidando.

Gracias de antemano.

Pues no veo ninguna regla que

Imagen de jcyepez

Pues no veo ninguna regla que haga el redireccionamiento que dices.

Prueba con algo así:


iptables -t nat -A PREROUTING -p tcp --dport 22 -j DNAT --to ip_destino

Esto redireccionará el tráfico que llegue por el puerto 22 hacia la ip que especifiques en ip_destino.

Espero te sirva

Saludos

Juan Yépez
0993681879
Dj - Discomovil Quito

Ok, Gracias, voy a tomar tu

Ok, Gracias, voy a tomar tu sugerencia y colocarla junto a la regla del Forward, ahora la regla del forward está bien así o debería especificarle las interfaces también por que he pensado que podría hacer el forward de la siguiente manera:

iptables -A FORWARD -p tcp -i eth0 -o eth1 -d 10.0.0.2 --dport 22 -m state --state NEW -j ACCEPT

Saludos

Hola, Juan, he intentado de

Hola,

Juan, he intentado de mil maneras hasta me hice un script para inicializar y parar los servicios del firewall pero no hay manera de que enrute internamente la conexión y la enrute al servidor que yo necesito

#Firewall creado por otrejo
#!/bin/bash

case "$1" in
start)

#Limpieza de reglas.
echo -n "Limpiando reglas iptables: "
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
echo "hecho."

#Cargando modulos.
echo -n "Cargando modulos: "
/sbin/depmod -a
modprobe ip_tables
modprobe ip_conntrack
modprobe iptable_filter
modprobe iptable_nat
modprobe ipt_state
modprobe ipt_MASQUERADE
modprobe ipt_LOG
modprobe ip_nat_irc
echo "hecho."

#Forwarding.
echo -n "Activando forwarding: "
echo "1"> /proc/sys/net/ipv4/ip_forward
echo "hecho."

#Política por defecto.
echo -n "Aplicando políticas por defecto: "
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
echo "hecho."

#NAT
echo -n "Activando NAT: "
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
echo "hecho."

#Interfaz lo.
echo -n "Activando interfaz lo: "
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
echo "hecho."

##Acceso

#SSH
#ssh desde fuera redireccionado al server.
echo -n "Activando redireccionamiento conexión ssh externa al server: "
iptables -A INPUT -i eth0 -p tcp --dport 22 -j LOG --log-prefix "CONEXION_SSH"
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED,RELATED -j DNAT --to 10.0.0.2:22

iptables -A FORWARD -i eth0 -p tcp --dport 22 -d 10.0.0.2 -j ACCEPT
echo "hecho."

#Interfaces internas.
echo -n "Activando interfaces eth0 eth1: "
iptables -A INPUT -i eth0 -j ACCEPT
iptables -A OUTPUT -o eth0 -j ACCEPT

iptables -A INPUT -i eth1 -s 10.0.0.0/24 -j ACCEPT
iptables -A OUTPUT -o eth1 -d 10.0.0.0/24 -j ACCEPT

echo "hecho."

##Cerrar

#Conexiones no necesarias.
echo -n "Cerrando conexiones no necesarias: "
iptables -A INPUT -i eth0 -m state --state NEW,INVALID -j DROP

iptables -A OUTPUT -o eth0 -m state --state NEW,INVALID -j DROP

iptables -A FORWARD -i eth0 -m state --state NEW,INVALID -j DROP
echo "hecho."
;;

stop)
echo -n "Parando el firewall: "
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -F
iptables -t nat -F
echo "hecho."
;;

restart)
$0 stop
echo -n "Reiniciando el firewall: "
sleep 2
$0 start
echo "hecho."
;;

status)
iptables -L -n
;;
*)
echo "usar: $0 {start|stop|restart|status}"
exit 1
esac
exit 0

Ahora si necesito ayuda es urgente...!!!

No logro hacer que enrute...!!!

Gracias.

Mira, prueba este

Imagen de jcyepez

Mira, prueba este script


##Firewall configuration
## eth1 = local network interface
## eth0 = remote network interface
## default policy for input/forward DROP
## FLUSH de reglas

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

#Carga de módulos
modprobe ip_conntrack_ftp
modprobe ip_conntrack
modprobe ip_nat_ftp

# set default policies for the INPUT, FORWARD and OUTPUT chains
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

#Habiliar ruteo
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.xxx.yyy/24 -o eth0 -j MASQUERADE

#################LOCAL INPUT########################
#Allow all from localhost
iptables -A INPUT -s 127.0.0.1 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#From my machine
iptables -A INPUT -s 192.168.xxx.yyy -j ACCEPT
#correo
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 110 -j ACCEPT
#de mi ip publica
iptables -A INPUT -s 200.105.xxx.yyy -i eth0 -j ACCEPT
#dns
iptables -A INPUT -p tcp --sport 53 -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT
#Allow established or related connections
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#################FROWARD ########################
#ssh a mi equipo
iptables -A FORWARD - i eth0 -p tcp --dport 22 -d 192.168.xxx.yyy -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to 192.168.xxx.yyy:22
#Allow established or related connections
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Personalmente yo escucho en un puerto diferente al 22 en mi interfaz pública, por cuestiones de seguridad. Ese tráfico lo redirecciono hacia mi máquina al puerto 22 y listo, debe funcionarte.

Saludos

Juan Yépez
0993681879
Dj - Discomovil Quito

Hola, Juan Gracias por la

Hola, Juan Gracias por la info.

Pero ya lo solucioné, lo que pasaba era que el enmascaramiento de retorno no lo estaba haciendo, entonces el paquete se perdía, puesto que la petición no se inicio con la ip interna y este la estaba entregando con la ip interna lo solucioné haciendo un MASQUERADE a todo lo que salga del puerto 22 la configuración quedó asi:

#Acceso ssh
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2022 -j DNAT --to-destination 10.0.0.2:22
iptables -t nat -A POSTROUTING -p tcp --dport 22 -j MASQUERADE

#FORWARD del ssh
iptables -A FORWARD -i eth0 -p tcp --dport 2022 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -o eth0 -p tcp --sport 2022 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

Muchas gracias a todos por su ayuda.

Que bueno que lo

Imagen de jcyepez

Que bueno que lo solucionaste.

Solo una observación que espero no estar equivocado. La línea que te puse en el script:
[quote]iptables -t nat -A POSTROUTING -s 192.168.xxx.yyy/24 -o eth0 -j MASQUERADE[/quote]

hace el enmascaramiento de todo el tráfico saliente hacia internet. Esto debería bastar para que te funcione.

Saludos

Juan Yépez
0993681879
Dj - Discomovil Quito

El "enmascaramiento de

El "enmascaramiento de retorno" como tu lo llamas no es necesario. Si con eso te funcionó, lo más probable es que no tengas configurada adecuadamente la puerta de enlace en tu servidor destino (10.0.0.2).

Saludos,

----
Edwin Boza
about.me/edwinboza

Páginas