Esta web utiliza cookies, puedes ver nuestra política de cookies, aquí Si continuas navegando estás aceptándola

Tunelización mediante SSH


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.

Podemos montar túneles directos y reversos.

 

Túnel directo:

 

 

 

 

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

 

La forma de montar el túnel es:

ssh -L PuertoServidor1:Servidor3:PuertoServidor3 -A -g [email protected]


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

dig www.whatismyip.com
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 [email protected]  --> 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 [email protected] --> 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 [email protected]  --> 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 [email protected]'|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 [email protected] &
        #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.

 


Autor: Kr0m -- 21/02/2014 20:02:39