Memory vault

An attemp to store volatile memories

View My GitHub Profile

Tunel SSH remoto con máquina de salto

Situación de ejemplo:

Equipo A (192.168.0.10) -> Equipo B (192.168.0.11) -> Equipo C (192.168.1.10)

  • Podemos conectar mediante SSH desde A hasta B.
  • Podemos conectar mediante Web (puerto 80) desde B hasta C.
  • No podemos conectar mediante Web (puerto 80) desde A hasta C (por ejemplo, porque no hay ruta).

En el host B:

Configuramos SSH para que nos permita hacer reenvío de puertos remotos desde fuera del equipo.

En el fichero /etc/ssh/sshd_config modificamos la línea:

GatewayPorts no

por

GatewayPorts yes

Cuidado: esto permitirá a cualquier persona (cualquier IP) usar para el reenvío de paquetes los puertos del Equipo B que se definan en la conexión (la conexión la creamos en el siguiente punto). En la práctica, todas las peticiones a C estarían llegando desde B, por lo que esto se podría usar para enmascarar un ataque que se estuviera produciendo desde A o desde otro equipo D que sea capaz de ver a B.

Ten presente esto si configuras la opcin GatewayPorts en un servidor expuesto a Internet. Consulta en la documentacin de ssh la opción clientspecified si necesitas permitir el reenvío sólo para ciertas IP.

En el host A:

Lanzamos una conexión SSH al host B (192.168.0.11) mapeando el puerto 9000 (local del equipo A, 192.168.0.10) al puerto 80 (remoto, del equipo C, 192.168.1.10)

ssh -R 9000:192.168.1.10:80 usuario@192.168.0.11

En el host A:

En el navegador web abrimos:

http://192.168.0.11:9000

la petición se enviará al Equipo B, que la reenviará al puerto 80 del equipo C