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:
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 -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 -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):
Nos conectamos a 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.