Tunelizando conexiones sobre SSH.

Una de las aplicaciones que podemos dar a SSH es la creación de túneles seguros, es decir, crear conexiones TCP seguras a través de una canal o red insegura. Ya sabemos que muchas aplicaciones usan protocolos inseguros que envían, por ejemplo, nombre de usuario y contraseña en texto. SSH cifra los datos para que viajen seguros tanto por redes locales como hosts remotos a través de internet. Podemos también, por poner otro ejemplo, crear un canal seguro entre un servidor y un cliente MySQL, leer correo o tunelizar conexiones remotas via VNC.

La primera aplicación que vamos a explicar aquí es el uso de SSH con OpenSSH para tunelizar conexiones con VNC o RealVNC.

Pasos previos.

Tenemos que indicar al sistema que VNC va a realizar conexiones del tipo Loopback. Esto se realiza en el registro de windows. El contenido de un archivo .reg (archivo de registro de win32) para realizar la operación sería el siguiente:

Windows Registry Editor Version x.xx

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Registro de window.
;
; Añadir claves para Loopback
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

[HKEY_LOCAL_MACHINE\SOFTWARE\ORL\WinVNC3\Default]

«AllowLoopback»=dword:00000001

Tanto en el servidor como en el cliente se ha de editar el archivo ssh_config y añadir:

GatewayPorts yes

 

Esquema básico de conexión para VNC sobre SSH

tunelizacion open ssh vnc

  • En 192.168.1.30 insertamos los siguientes comandos ssh

C:\>ssh -2 -C -N -L 5902:localhost:5901 user1@192.168.1.40

  • Desde 192.168.1.30 abrimos vncviewer.exe:

vncviewer localhost:2

o

vncviewer localhost:5902

Explicación de los comandos ssh para realizar el túnel:

-2 Usa el protocolo SSH2

-C Realiza compresión de los datos

-N (solo para la versión SSH2) Indicamos a ssh que no se ejecutaran comandos en el servidor, sólo el túnel.

-L Realizar túnel

5902 puerto local (dispaly 2 para vncviewr) para conexión remota. Este es el puerto que indicaremos a wncviewer

localhost Ip servidor, en este caso localhost para realizar el tunel.

5901 puerto remoto donde escuhará VNC (display 1)

user1@192.168.1.40 usuario/IP máquina segura ejecutando SSH.

Otro comando opcional a usar:

-S: que destruye el tunel cuando acabe la conexión. Fija un tiempo de espera o Delay para nueva conexión y si no se realiza se destruye el tunel.

 

Una vez creado el túnel, tan sólo tendremos que ejecutar VNC Viewer introduciendo en el campo VNC Server:

localhost:5902 ó localhost:2

El túnel SSH también lo podemos realizar con un cliente win32 como PuTTY. Desde este cliente para realizar dicho túnel:

Session:
Specify your connection by host name or Ip address:
Host Name (or Ip address): 192.168.1.40 Port 22 (SSH)

SSH > Tunnels>
Add new forwarded port:
Source port: 5902 (este es el puerto localhost)
Destination: 192.168.1.40:5901
(pulsar Add) y (Open)

Para comprobar que la conexión se realiza a través del canal seguro:

Si cerramos la consola MSDOS donde introducimos las líneas ssh para tunelización o el cliente ssh (PuTTy), debe cerrarse también la conexión VNC.

Tunelización de conexión para HTTP sobre SSH

Esquema pasarela de conexión para HTTP sobre SSH

Para este ejemplo de aplicación de tunelización vamos a suponer que queremos conectar un cliente navegador http a un servidor seguro apache sobre OpenSSH.

Esquema de la conexión:

tunelizacion open ssh putty

Este comando lo ejecutamos en 192.168.1.40:

C:\>ssh -2 -C -N -L 8001:192.168.1.30:80 user2@192.168.1.30

Desde 192.168.1.50:

http://192.168.1.40:8001/

Responde el servidor SSH y Apache en 192.168.1.30

 

Esta entrada fue publicada en Seguridad y redes y etiquetada , , , , , , , . Guarda el enlace permanente.

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s