enchufado
   RSS
#
Entendiendo mejor los túneles ssh con gSTM (Networking) 2012-08-12 21:12:42

En un pasado mencionamos de pasada el uso de túneles como uno de los métodos para conseguir la redirección de puertos y recientemente hemos visto cómo establecer un túnel ssh entre 2 hosts. Hoy daremos un paso más allá y usaremos un host intermedio para establecer un túnel entre otros 2 hosts. Y lo haremos de la mano de una herramienta gráfica que nos ayudará a ver qué se ejecuta por detrás: gSTM.

Para los despistados, tal y como comenta la Wikipedia, un tunel es el uso de unos protocolos para encapsular a otros con diferentes propósitos (asegurar los datos de una transmisión, hacer una redirección de puertos, evitar/circunvalar firewalls...). Nosotros vamos a usarlo para realizar una redirección de puertos (que como vimos también puede hacerse con la tabla NAT de iptables). Como una imagen vale más que mil palabras y siempre ayuda a clarificar el asunto, vamos a imaginar la siguiente topología de red:


        workstation     -->     INTERNET     -->     FW     -->     LAN
      (ip pública dinámica)                       (ip pública)   (ips privadas)

Tenemos una workstation que es la máquina física desde dónde operamos. Queremos conectarnos a distintos servicios (Terminal Server, SQL Server, MySQL) de los hosts de la LAN que no son ni deben ser accesibles a través de Internet, y lo haremos a través del host FW/GW (fw.testtunnel.org), un firewall/gateway para los hosts de LAN. Éste es el único host con ip pública en la LAN, mientras que los demás sólo disponen de ips privadas.

Así pues, instalamos gSTM y crearemos (Añadir/Afegeix) un túnel dándole un nombre. En mi caso y aunque ya tengo otros, será Test tunnel:

A continuación pasamos a su configuración. Vamos a las Propiedades/Propietats y en el apartado Tunnel configuration ponemos la dirección/puerto (fw.testtunnel.org, aunque podría ser directamente una ip) y el usuario (root) con el que crearemos el tunel. Y en el apartado Port redirection definiremos las redirecciones: serán "locales" (hechas en el propio host fw.testtunnel.org) y en los puertos locales que definamos (p.ej. 1234), seguido de la ip y el puerto de cada host de la LAN (p.ej. la ip 192.168.2.4 y el puerto 3389). Hecho esto para cada redirección quedaría algo así:

Esto en cuanto a configuración. Cuando queramos iniciar el túnel, iremos a la pantalla inicial de gSTM, seleccionaremos el túnel que acabamos de configurar (Test tunnel) y pulsaremos Start/Iniciar. Si el icono de túnel se vuelve verde es que la operación fue sin problemas.

Ahora bien,¿qué ha hecho esto exactamente? El mejor modo de verlo es haciendo un grep a los procesos ejecutándose en la workstation. Veríamos algo como esto:

ssh fw.testtunnel.org -p 22 -l root -nN -L1234:192.168.2.4:3389 -L1235:192.168.2.5:1433 -L1236:192.168.2.6:3306 -o NumberOfPasswordPrompts=1

En definitiva, vemos que se conecta a fw.testtunnel.org y lanza las redirecciones de puertos en ese host, de modo que podremos conectarnos a los puertos "locales" de dicho host (1234, 1235 y 1236) para acceder a:

  • el Terminal Server del host 192.168.2.4
  • el MS SQL Server del host 192.168.2.5
  • y el MySQL del host 192.168.2.6

Si nos fijamos en los parámetros, el -n se usa para cuando es necesario ejecutar ssh en background. El parámetro -N le indica a ssh que no ejecute ningún comando en remoto; útil para cuando quiere usarse para redireccionar puertos, como es el caso. Finalmente, el parámetro -o NumberOfPasswordPrompts=1 instruye a ssh a preguntar por contraseña una sola vez.


Comentarios (4)


Volver al indice

login, admin, form, register