Esta pagina se ve mejor con JavaScript habilitado

Tunelización mediante SSH

 ·  🎃 kr0m

SSH además de permitirnos acceder de forma segura a nuestros servidores nos brinda funcionalidades de tunneling muy interesantes sobre todo cuando estamos trabajando en entornos muy restringidos.

Todos estos temas de tunneling pueden parecer mas o menos útiles pero conocerlos pueden ayudarnos en ciertos casos cuando la red funciona mal haciendo pasar el tráfico por otro equipo o para casos puntuales en los que no vale la pena modificar las reglas del FW solo para hacer una operación aislada.

Podemos montar túneles directos y reversos.


Túnel directo:

El comando lo ejecutaremos en Servidor1, desde PC comprobaremos el correcto funcionamiento.

La forma de montar el túnel es:

ssh -L PuertoServidor1:Servidor3:PuertoServidor3 -A -g root@Servidor2

En nuestro ejemplo utilizaremos como Servidor3 www.whatismyip.com de este modo podremos comprobar que la ip pública es la de Servidor2 ;)

www.whatismyip.com. 240 IN A 141.101.120.14

Nos conectamos a Servidor1:

ssh Servidor1
ssh -L 8080:141.101.120.14:80 -A -g root@Servidor2 –> Pedirá pass de Servidor2

En PC:

http://Servidor1:8080 --> Aparecerá la IP de Servidor2

Lo que ha ocurrido es que nos conectamos a Servidor1:8080, este por el puerto 22 envía el tráfico a Servidor2 y allí reenvía a 141.101.120.14:80

Imaginemos que no queremos utilizar un Servidor2, si no que simplemente queremos tunelizar el tráfico a través de Servidor1:

En este caso www.whatismyip.com será Servidor2

Nos conectamos a Servidor1:

ssh Servidor1
ssh -L 8080:141.101.120.14:80 -A -g root@localhost –> Pedirá pass de Servidor1

En PC:

http://Servidor1:8080 --> IP Servidor1

De este modo podemos enmascarar nuestra ip detrás de otro server ya sea por temas de privacidad o por restricciones de fw en el servidor final ;)


Túnel reverso:

Este tipo de túnel nos permitirá conectar a servidores donde no tenemos acceso SSH, por ejemplo cuando nos dan acceso por teamviewer o algún otro software parecido, la idea es iniciar la conexión desde este servidor a uno externo para luego recuperar esta conexión, una auténtica jugada de crack ;)

Nos conectamos a Servidor2(teamviewer):

ssh -R 8080:localhost:22 root@Servidor1 –> Pedirá pass de Servidor1

Nos conectamos a Servidor1:

ssh Servidor1
ssh localhost -p 8080 –> Boom, tenemos una bonita shell por SSH en Servidor2!!

Podemos dejarnos en el cron de nuestro servidor remoto el siguiente script:

#! /bin/bash
N=$(ps aux|grep 'ssh -nNT -R 4000:localhost:22 root@www.alfaexploit.com'|grep -v grep|wc -l)
#echo -e "N: $N"

if [ $N -lt 1 ]; then
        #echo -e "-- Starting reverse tunnel"
        ssh -nNT -R 4000:localhost:22 root@www.alfaexploit.com &
        #echo -e "++ Done"
fi

De este modo si se cae el túnel al minuto volverá a estar disponible ;)

Todos estos temas de tunneling pueden parecer mas o menos útiles pero conocerlos pueden ayudarnos en ciertos casos cuando la red funciona mal haciendo pasar el tráfico por otro equipo o para casos puntuales en los que no vale la pena modificar las reglas del FW solo para hacer una operación aislada.

Si te ha gustado el artículo puedes invitarme a un RedBull aquí