Tunneling o Túneles SSH

Antes de hablar de tunneling hay que recordar la serie de artículos que se publicó en Flu Project anteriormente sobre el protocolo SSH y el potencial de éste. Esta serie de artículos está totalmente recomendada para su lectura, ya que ayuda a entender mejor las posibilidades que ofrece este protocolo.

El tunneling es el proceso por el que se utiliza el protocolo SSH para fortificar la comunicación entre otros protocolos inseguros. se puede crear un túnel de tipo SSH y mediante el uso de dicho túnel realizar peticiones HTTP, SMTP, FTP, etc. Los túneles pueden ser locales o remotos. En los túneles locales, es nuestra máquina la que redirecciona un puerto hacia un puerto remoto de una segunda máquina, a la que se tiene acceso. Los túneles remotos es a la inversa, es decir, la máquina remota redirecciona un puerto hacia nuestra máquina.

Túneles locales

La sintaxis para la creación de un túnel local hacia el puerto remoto de la máquina remota es la siguiente ssh –L [dirección escucha:]puerto escucha:máquina remota:puerto remoto usuario@ip. 

Supongamos el siguiente entorno:

- Máquina A con conexión a Internet se quiere conectar a la máquina C, la cual se encuentra detrás de un servidor que impide el paso. En otras palabras, la máquina C no es accesible desde Internet.

- El usuario de la máquina A dispone de cuenta en una máquina B. La máquina B es el servidor que proporciona la salida a Internet a la máquina C. La máquina A creará un túnel con la máquina B y a través del forwarding de la máquina B se llegará a la máquina C.

- Lo importante es proteger la comunicación en Internet entre la máquina A y B. La comunicación entre B y C puede ir sin cifrar, ya que se encuentra en una Intranet.

Ejecutaríamos esto:

ssh –L 8080:MáquinaC:80 user@máquinaB

De esta forma se creará un túnel desde la máquina A hasta C, utilizando la máquina B para dar acceso a la red interna.

Se utilizará para realizar el forwarding mediante el túnel SSH, se puede visualizar como se ha habilitado el puerto 8080, en este caso de manera local, por lo que se si envía algo a localhost al puerto 8080.