Conéctese a un servidor en las instalaciones a través del proxy y el tunel SSH

0

Estoy tratando de acceder a una aplicación web que actualmente está alojada detrás del firewall de la compañía desde la computadora portátil de mi casa.

Encontré muchas preguntas y respuestas sobre cómo crear túneles SSH, proxy SSH o túnel SSH a través de múltiples saltos. Pero, todavía no puedo hacer que funcione. Creo que mi caso es un poco diferente a los demás. Dejame explicar :

  • No tengo acceso SSH al servidor que aloja la aplicación web (cuadro rojo), solo tiene una IP interna.
  • Tengo acceso a una caja de Linux local (caja naranja) que puede llegar al servidor que aloja la aplicación web.
  • El cuadro naranja no tiene una dirección IP pública (por lo que no puedo usar SSH desde Internet), pero tiene acceso a Internet y podría ejecutar SSH a un servidor alojado en Internet (por ejemplo, conectarme al cuadro azul de la caja naranja).
  • Tengo un servidor Linux en Internet con una dirección IP pública (cuadro azul).

ingrese la descripción de la imagen aquí

Intenté cosas diferentes sin éxito, pero honestamente me estoy perdiendo.

¿Alguien sería lo suficientemente amable como para iluminarme? :-)

Alfallouji
fuente

Respuestas:

0

Este es el comando para la computadora naranja :

ssh -N -R:<chosen-port>:10.0.0.101:<web-app-port> -p <blue-ssh-port> <blue-user>@<blue-public-ip>

(Cómo hacer que sobreviva a su cierre de sesión desde la naranja : es un problema separado. Vea esto ; o tmux/ screen, disowno nohupcon un script personalizado).

El comando anterior hace que el servidor SSH en el azul escuche en el (TCP) <chosen-port>de su elección en la interfaz de bucle invertido. Las conexiones entrantes se tunelizarán a la naranja y se enviarán a 10.0.0.101:<web-app-port>(es decir, la roja ) desde allí. Esto crea un túnel sin ejecutar un comando ni shell en el azul (gracias a la -Nopción).

Hay una manera de hacer que el azul escuche en la otra interfaz (sin bucle invertido), pero no se recomienda por seguridad; Esta opción puede ser incluso deshabilitado en azul (se explica en man ssh, -Ropción).

Para llegar a la interfaz azul de bucle invertido desde su máquina doméstica verde , use otro túnel. En verde :

ssh -N -L:<chosen-port-2>:127.0.0.1:<chosen-port> -p <blue-ssh-port> <blue-user>@<blue-public-ip>

Ahora deberías poder alcanzar el rojo desde el verde usando la dirección:

127.0.0.1:<chosen-port-2>

<chosen-port>y <chosen-port-2>puede o no ser el mismo número, realmente no importa. Lo que importa es que debe elegir puertos altos (de 1024 a 65535).


La diferencia entre -Ly -Rtúneles:

  • -Lescucha en el lado local, es decir, donde invoca ssh;
  • -Rescucha en el lado remoto, es decir, donde usted ssh.

Sabiendo esto, deberías poder rastrear lo que acabamos de hacer. Tenga en cuenta que creamos los túneles moviéndose hacia el verde porque (para mí) parecía más lógico trabajar de esta manera. Su conexión irá desde el verde, así que rastreemos la ruta completa en esta dirección. Es como sigue:

  1. El cliente SSH en el verde escucha 127.0.0.1:<chosen-port-2>debido al segundo túnel.
  2. Reenvía los paquetes al servidor SSH en el azul que los envía 127.0.0.1:<chosen-port>allí. Desde la perspectiva azul , estos son paquetes locales generados por el servidor SSH.
  3. El mismo servidor SSH escucha en ese puerto debido al primer túnel. El servidor toma los paquetes y los reenvía a la naranja .
  4. El cliente SSH en el naranja envía los paquetes al rojo . Desde la perspectiva roja , los paquetes son del naranja , no sabe nada sobre el azul ni el verde .
Kamil Maciorowski
fuente