Utilice iptables para reenviar ssh

Utilice iptables para reenviar ssh

Encontré varios tutoriales sobre cómo hacerlo, pero ninguno funcionó :/

Mi configuración:

FIREWALL - accesible desde Internet - eth0: xxx.xxx.xxx.xxx (ip pública) - eth1: 192.168.1.1

SERVIDOR - accesible desde FIREWALL - eth0: 192.168.1.5

Como todavía quiero poder conectarme al firewall en el puerto 22, me gustaría reenviar las conexiones entrantes en el puerto 2222 a 192.168.1.5:22.

ping y ssh desde FIREWALL al SERVIDOR funcionan. ping y ssh desde el SERVIDOR al FIREWALL también funcionan (aunque el inicio de sesión solo se permite con la clave pública y el SERVIDOR no está permitido...)

ping y ssh desde cualquier lugar para que FIREWALL funcione.

El reenvío de IP está habilitado:

# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

Publicar mis reglas de iptables no tiene mucho sentido porque ninguna de las reglas funcionó (se usó PREROUTING, POSTROUTING, FORWARD...) y no hay otras reglas.

Sí, mi firewall no bloquea nada. Pero no se trata de seguridad (todavía).

Intenté todo lo que encontré en las primeras páginas de: https://www.google.de/search?q=iptables+forward+ssh

¿Alguna sugerencia?

Saludos, Jens.

ACTUALIZAR Aquí está el resultado tcpdump -n -i anydespués de usar el comando iptables de Khaled:

15:42:33.852718 IP home-ip.56008 > firewall-public-ip.2222: Flags [S], seq 1141341765, win 14600, options [mss 1460,sackOK,TS val 871214 ecr 0,nop,wscale 7], length 0
15:42:33.852752 IP home-ip.56008 > 192.168.1.5.22: Flags [S], seq 1141341765, win 14600, options [mss 1460,sackOK,TS val 871214 ecr 0,nop,wscale 7], length 0

Habría adivinado que en la segunda línea habría algo como... IP 192.168.1.1.45678 > 192.168.1.5.22...

Estas dos líneas se repiten varias veces mientras mi cliente ssh intenta conectarse varias veces. Pero no hay ninguna respuesta.

2da actualización Las rutas del servidor (192.168.1.5) sonaquí. Acabo de agregar una ruta

public-firewall-ip  255.255.255.255      192.168.1.1     192.168.1.5       1

pero esto no tiene ningún efecto. En el servidor se ejecuta Win XP con el sshd de cygwin instalado. No mencioné esto antes porque ssh desde el firewall al servidor funciona bien. Pero cuando se trata de enrutamiento, creo que Windows es algo limitado.

Ahora estoy instalando Wireshark en el servidor y pegaré el resultado en unos minutos.

Seguimiento en el servidor El seguimiento en el servidor muestra un SYN de llegada en el puerto 22 y un SYN, ACK de salida a mi IP de inicio. Creo que ahí está el error. El ACK debe enviarse al firewall y luego enmascararse porque en el paquete saliente la IP/puerto de origen ahora es 192.168.1.5:22. No hay forma de que esto llegue a mi computadora portátil en casa detrás de un NAT... ¿o hay alguna manera?

Respuesta1

Si permite que el tráfico pase a través de su firewall y tiene habilitado el reenvío de IP, solo necesita una regla NAT para reenviar el tráfico SSH en el puerto 2222. Una como esta debería hacer el trabajo:

$ iptables -t nat -A PREROUTING -d x.x.x.x -p tcp --dport 2222 -j DNAT --to-destination 192.168.1.5:22

Actualizar:

El rastreador de red es su amigo a la hora de depurar este tipo de problemas. Puede ejecutar tcpdump en la máquina del firewall y ver si puede detectar la solicitud entrante y la misma solicitud debería salir de la máquina del firewall.

información relacionada