Configurando Túneles SSH (locales, remotos y dinámicos)

,
Configurando Túneles SSH

Vializar el tráfico a través de túneles SSH seguros es una forma de saltarse las restricciones de un cortafuego. Además, es una forma de encriptar el tráfico de red sobre una conexión no segura. En este tutorial te enseñaré cómo configurar túneles SSH que pueden ser tan útiles.

Configurando un Túnel Local hacia un Servidor

Las conexiones SSH pueden ser usadas para pasar, a través de un tunel, el tráfico desde puertos en una estación local hacia puertos en una estación remota. Esto es lo que se conoce como túneles ssh locales.

Una conexión local es una forma de acceder a una ubicación de red desde tu computador local a través de una estación remota. Primero, una conexión SSH es establecida en tu estación remota. En dicha estación, una conexión es hecha hacia una dirección de red externa (o interna) especificada por el usuario y el tráfico hacia esa ubicación pasa por el túnel a través de tu computadora local en un puerto especificado.

Para establecer un túnel local hacia tu servidor remoto, debes de especificar la opción -L cuando te conectes y especificar los siguientes datos:

  • El puerto local por el cual quieres acceder a la conexión tunelizada.
  • La estación a la que quieres que tu servidor remoto se conecte.
  • El puerto al que quieres que se conecte tu servidor remoto.

Cada uno de los datos anteriores deben ser especificados en orden y separados por dos puntos. Por ejemplo, para conectarse a host.com en el puerto 80 desde mi servidor remoto y habilitar el túnel por el puerto 8888 debo hacer esto:

La opción -f, hace que el cliente SSH sea ejecutado en background y la opción -N, indica que no debe abrirse un Shell o ejecutar un programa en el servidor remoto. Si abres un navegador web y lo apuntas a la dirección http://127.0.0.1:8888 podrás ver el contenido de host.com en el puerto 80. Para host.com es como si estuvieras visitándolo desde mi.servidor.remoto.com.

Debido que en el ejemplo anterior la conexión fue enviada a ejecutarse en background, para terminarla debes encontrar su PID. Esto puede hacerse localizando qué proceso tiene abierto el puerto 888:

Donde el PID es el número de la segunda columna, en este caso 5965. Para terminar dicho proceso, ejecuta:

Otra opción es ejecutar la conexión sin la opción -f y terminar la conexión presionando “Ctrl+c”.

De forma general los túneles ssh locales se implementan de la siguiente forma:

Configurando un Túnel Remoto hacia un Servidor

Las conexiones SSH pueden ser empleadas para enviar, a través de túneles, tráfico desde puertos en una estación local hacia puertos en una estación remota. Esto es lo que se conoce como túneles ssh remotos.

En un túnel remoto, una conexión es hecha hacia una estación remota. Durante la creación del túnel, un puerto remoto es especificado. Este puerto, en la estación remota, será tunelizado hacia una combinación de estación y puerto que es conectada desde la computadora local. Esto permitirá a la computadora remota acceder a una estación a través de tu computadora local. Este tipo de túnel es útil si necesitas acceso a una red interna que no permite conexiones externas.

Para establecer un túnel remoto hacia tu servidor remoto, debes especificar la opción -R y además, los siguientes datos:

  • El puerto al cual la estación remota puede acceder para establecer la conexión a través del túnel.
  • La estación a la cual quieres que tu computadora local se conecte.
  • El puerto al cual quieres que tu computadora local se conecte.

Estas opciones deben especificarse en orden y separadas por dos puntos. Por ejemplo, para conectarse a host.com en el puerto 80 en tu computadora local, haciendo la conexión disponible en tu estación remota en el puerto 8888 debes hacer esto:

La opción -f, hace que el cliente SSH sea ejecutado en background y la opción -N, indica que no debe abrirse un Shell o ejecutar un programa en el servidor remoto. Si abres un navegador web en la estación remota y lo apuntas a la dirección http://127.0.0.1:8888 podrás ver el contenido de host.com en el puerto 80.

Debido a que en el ejemplo anterior la conexión fue enviada a ejecutarse en background, para terminarla debes encontrar su PID. Esto puede hacerse localizando qué proceso tiene el puerto 888 abierto:

Donde el PID es el número de la segunda columna, en este caso 5965. Para terminar dicho proceso ejecuta:

Otra opción es ejecutar la conexión sin la opción -f y terminar la conexión presionando “Ctrl+c”.

De forma general los túneles ssh remotos se implementan de la siguiente forma:

Configurando un Túnel Dinámico hacia un Servidor Remoto

Un túnel dinámico es similar a un túnel local en que permite a una computadora local conectarse a otros recursos a través de una estación remota. Un túnel dinámico hace esto simplemente especificando un solo puerto local. Las aplicaciones que utilicen este mecanismo deben ser capaces de comunicarse usando el protocolo SOCKS para que los paquetes puedan ser correctamente redireccionados hacia la otra parte del túnel.

El tráfico que es pasado hacia el puerto local será enviado hacia la estación remota. Desde ahí, el protocolo SOCKS será interpretado para establecer una conexión con la ubicación final deseada. Esta configuración permite a las aplicaciones que soportan SOCKS conectarse a cualquier ubicación a través del servidor remoto, sin múltiples túneles estáticos.

Para establecer una conexión de túnel dinámico debes especificar la opción -D, así como el puerto local por el cual se tendrá acceso al túnel. Por ejemplo, para establecer un túnel dinámico en el puerto 7777:

La opción -f, hace que el cliente SSH sea ejecutado en background y la opción -N, indica que no debe abrirse un Shell o ejecutar un programa en el servidor remoto.

Una vez activo el túnel dinámico puedes especificar en tu aplicación (como un navegador web) que use el puerto 7777. Recuerda que la aplicación debe soportar el protocolo SOCKS.

Debido a que, en el ejemplo anterior, la conexión fue enviada a ejecutarse en background para terminarla debes encontrar su PID. Esto puede hacerse localizando qué proceso tiene el puerto 888 abierto:

Donde el PID es el número de la segunda columna, en este caso 5965. Para terminar dicho proceso, ejecuta:

Otra opción es ejecutar la conexión sin la opción -f y terminar la conexión presionando “Ctrl+c”.

0 comentarios

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *