Crear un túnel SSH con PuTTY para Escritorio remoto (RDP) (local port forwarding)
https://www.zonasystem.com/2018/08/crear-tunel-SSH-con-putty-para-escritorio-remoto-rdp.html
Un tunel SSH
se utiliza principalmente para tunelizar tráfico sobre internet o sobre
una red local de una manera segura. Podemos encapsular un tipo de
protocolo sobre una conexión establecida SSH (Secure SHell).
Supongamos que nos queremos conectar a un servidor interno de una red
local a través de Internet, pero el firewall de la compañía restringe
las conexiones origen dirigidas a determinados puertos, entre ellos el
3389 (puerto por defecto usado para RDP), sin embargo si permite
conexiones al puerto 22 (puerto por defecto para SSH). La compañía
expone un único equipo accesible desde la WAN (Wide Area Network) de Internet. Por lo que tienen definada una regla en el firewall que hace port forwarding
permitiendo las conexiones origen dirigidas al puerto 22 a través de la
dirección IP pública se redirigen a una determina IP interna que
pertenece a un servidor Linux, este será el servidor SSH que usaremos
para hacer pivoting al servidor al que nos conectaremos por Escritorio
remoto RDP por el puerto 3389. El equipo cliente definirá mediante una
herramienta de terceros la configuración de tunel SSH y se conectará a
la IP pública de la compañía por el puerto 22, una vez establecida la
conexión al servidor SSH el cliente se conectará por Escritorio remoto a
sí mismo (127.0.0.1 o localhost) por el puerto configurado en el tunel
SSH, ese puerto redirigirá la conexión al servidor SSH que a su vez
redirigirá a la IP interna del servidor que aceptará la conexión de
Escritorio remoto.
En el siguiente squema se muestra un funcionamiento de ejemplo para
establecer conexiones de Escritorio remoto sobre un tunneling SSH. Se
encapsulará el protocolo RDP sobre un el protocolo SSH.
Figura 1: Esquema de conexión tunneling SSH para conectarse por Escritorio remoto (RDP). |
Para establecer la configuración usaremos el cliente SSH PuTTY
(podría ser otro que tenga la opción de poder configurar túneles SSH).
Abrimos Putty y nos desplazamos a la sección: "Conecction > SSH >
Tunnels".
Indicamos el puerto origen para nuestro equipo y el destino IP:PUERTO al
que se redirigirá la conexión. En este caso el puerto 3333 sería el
puerto origen local de la máquina cliente y redirigirá las peticiones a
ese puerto al destino 10.0.0.12:3389 sería el servidor remoto al que nos
conectaremos por Escritorio remoto.
Figura 2: Putty - Configurar conexión port forwarded tunelizada para usar con SSH. |
En la sección "Session" especificamos el nombre o IP del que sería el
servidor SSH remoto al que nos conectaremos inicialmente. (Para este
ejemplo me he conectado a una IP local sería la miasma configuración
para una IP Pública en Internet de un sitio remoto).
Figura 3: Putty - Conectarse al equipo servidor SSH. |
Una vez nos conectamos a al servidor SSH remoto, en el equpo cliente
abrimos una ventana de conexión de Escritorio remoto (Windows +R >
mstsc) y nos conectamos como localhost:3333. Ese puerto reenviará
la pentición al servidor SSH al que estamos conectados pivotando a
través de este se establecerá la comunicación tunelizará de forma segura
(previamente así lo habíamos definido -ver figura 2-) autenticándonos hacia el servidor destino que aceptará la conexión de Escritorio remoto.
Figura 4: Autenticación para Escritorio remoto usando un reenvío de puertos configurado para un tunel SSH. |
Finalmente la conexión se estableció correctamente. En la siguiente
captura de pantalla se puede ver como la conexión por Escritorio remoto
se hizo a través de localhost:3333, en el servidor SSH se ve la
redirección de puertos y en el eventlog de Putty el tunel SSH definido
inicialmente.
Las peticiones que vengan del puerto local 3333 las renviará al destino
10.0.0.12:3389 (IP del servidor al que nos conectaremos y puerto por
defecto RDP).
Figura 5: Conexión de Escritorio remoto establecida usando un tunel SSH. |