Túnel http: ssh a través de un proxy

Si nos encontramos en una red con conexión a través de un Proxy y Firewall que sólo permite tráfico http y https, existe una posibilidad de salir al ‘exterior’ mediante ssh. Esto es posible si se usa un túnel para encaminar el protocolo ssh a través de http, atravesando así el bloqueo del Proxy/Firewall.
Existen varias herramientas para realizar túneles sobre http. De todas ellas, voy a usar corkscrew, pues es muy sencilla y no requiere aplicaciones adicionales, ni modificaciones en el lado del servidor ssh.

Una de las aplicaciones prácticas de este proceso es poder acceder a mi servicio hosting, donde tengo esta web, y poder realizar operaciones de mantenimiento, sftp, etc.

El escenario es el siguiente:

  • (A) Ordenador en la red corporativa, tras un Proxy/Firewall que sólo permite tráfico http/https (puertos 80/443). El tráfico ssh (puerto 22) está bloqueado.
  • (B) Ordenador fuera de la red corporativa, con el servidor ssh (en mi caso, mi proveedor de hosting proporciona acceso ssh, aunque se trata de un servidor virtual compartido, y por tanto muy limitado)

Preparativos, Descarga e Instalación de corkscrew

Si nuestro ordenador (A) es un sistema Linux, basta con descargar desde la página oficial http://www.agroman.net/corkscrew/  e instalar siguiendo las instrucciones allí indicadas (muy sencillo).

Si nuestro ordenador (A) es un sistema Windows XP (mi caso), primero es necesario instalar un entorno en el que podamos disponer de corkscrew y ssh. El emulador de Linux para Windows, cygwin es la herramienta adecuada.

INSTALCIÓN DE CYGWIN

La instalación es muy sencilla, basta con acceder a la página de cygwin http://cygwin.com/install.html y ejecutar setup.exe, del enlace allí (instalación clásica de programas en Windows..). Es importante tener en cuenta que, cuando aparece la ventana de instalación de paquetes hay que seleccionar los paquetes OpenSSH y corkscrew.

  • OpenSSHcygwin openssh
  • corkscrewcygwin corkscrew

Surgieron problemas con la instalación del paquete corkscrew mediante el setup del cygwin (quizás por el Proxy), pues daba error y no se podía descargar. Un método alternativo es descargar directamente los archivos ya compilados desde los repositorios de cygwin.corkscrew download

El archivo corkscrew-2.0-1.tar.bz2 descargado ha de copiarse en alguna carpeta de la estructura de directorios que crea cygwin, por ejemplo en /home)

Arrancamos cygwin y descomprimimos e insralamos corkscrew:descomprimir corkscrew

Esto nos habrá creado una estructura de carpetas y archivos en el directorio actual (/home), para una instalación correcta hemos de mover los archivos al directorio raiz (en concreto todos bajo /usr), siguiendo la estructura de carpetas. Después conviene cerrar cygwin y volver a ejecutarlo, de modo que corkscrew ya esté reconocido en el entorno (path).

Comprobando el bloqueo de SSH por el Proxy/Firewall

Dentro del entorno cygwin, comprobamos que nuestro Proxy/Firewall nos bloquea el acceso al servidor ssh:

ssh -v -l [usuario] abrazalaweb.net

conectamos a mi acceso ssh de mi hosting (la opción -v es el modo verbose y la opción -l es el login con mi nombre de usuario)

bloqueo SSH por el Proxy/Firewall

Configuración de corkscrew y acceso al servidor SSH

Hay que configurar el corkscrew para indicarle el Proxy y nuestro usuario y contraseña del mismo:

  • Creamos en nuestro directorio de cygwin  /home/usuario un directorio ‘.ssh’ y dentro de él dos archivos: ‘config’ y ‘proxyauth’ con el siguiente contenido (asignando los valores correspondientes al Proxy, usuario y clave)

config

Host *
ProxyCommand corkscrew nombre-proxy.dominio-proxy puerto-proxy %h %p

proxyauth

usuario:clave

Con esto ya tenemos todo listo, repetimos el intento de acceso al servidor ssh:

ssh -l [usuario] abrazalaweb.net

Y el resultado es ahora:Acceso SSH mediante tunel HTTP por corkscrew

El acceso al servidor ssh ha sido posible.

NOTAS FINALES

  • Una vez que tenemos acceso SSH ya podemos hacer todo lo que este protocolo nos permite
  • Mi idea era poder realizar túneles SSH (redirección local y reversa) para poder conectarme desde casa, pero mi servicio hosting, a pesar de que incluye acceso ssh, forma parte de un servidor virtual compartido, y la configuración del servidor ssh es limitada y no permite el redireccionamiento y por tanto los túneles ssh. (Investigaré más sobre ello…, pues existen otros métodos alternativos al ssh)
  • Enlaces y fuente:

http://www.mtu.net/~engstrom/ssh-proxy.php
http://cygwin.com/
http://www.agroman.net/corkscrew/

3 Comments

  1. Maikel · jueves, 22 octubre, 2015 Reply

    Muchas gracias, explicaste con lujo de detalle como crear el Tunel SSH y resultándose de mucha ayuda. Dios te bendiga.

Leave a Reply

Tu dirección de correo electrónico no será publicada.