Manual de configuración para hacer SSH Tunneling con WinSCP en Windows

Manual de configuración para hacer SSH Tunneling con WinSCP en Windows

Sergio De Luz

Cuando queremos conectarnos a un servidor remoto que solamente está accesible a través de la red local (LAN), una de las técnicas más utilizadas es utilizando un túnel SSH contra un servidor que sí es accesible a través de Internet. Realizando la técnica de SSH Tunneling, o también conocida cómo «túnel SSH», podremos conectarnos en un primer momento al servidor SSH accesible, para posteriormente «saltar» al otro servidor que solamente está accesible a través de la red local. Este túnel SSH también serviría con la finalidad de navegar por Internet de forma segura, si nos conectamos a redes inalámbricas que no son de confianza como las redes WiFi de hoteles, aeropuertos etc.

Esquema de red con ejemplo

Imaginemos que tenemos un servidor SSH situado en el propio router o en un servidor de la LAN, en este segundo caso, necesitamos hacer el popular «reenvío de puertos» o «Port forwarding» en el router, porque normalmente estaremos detrás de la NAT en nuestro hogar o en la empresa. Una vez que nos hayamos conectado al servidor SSH del router, o de un servidor con el puerto del SSH abierto (no importa que sea el puerto por defecto, el 22, o cualquier otro, lo importante es que sea accesible a través de Internet), podremos conectarnos al segundo servidor SSH que en un primer momento solamente está accesible a través de la LAN. Esto nos permitirá acceder al servidor SCP o SFTP basado en SSH de forma indirecta.

En el siguiente esquema se puede comprobar cómo estaría instalada esta red que os comentamos:

  • El usuario se intenta conectar al SERVIDOR 2 (IP: 192.168.1.3 y puerto 22 abierto de forma local). Esta conexión no se puede realizar porque no tenemos un puerto abierto hacia este servidor, es decir, únicamente se puede acceder a él vía LAN. Si este servidor 2 tiene un firewall impidiendo cualquier conexión excepto las conexiones de las IP de la red local, también podríamos conectarnos.
  • Usando el SERVIDOR 1 que sí tiene acceso a Internet, y al cual nos podemos conectar vía SSH porque el router tiene un puerto abierto, y el firewall del propio servidor 1 lo permite, estableceremos un túnel SSH para posteriormente conectarnos al SERVIDOR 2 como si estuviera accesible desde Internet. En lugar de hacerlo todo en una conexión, haremos uso de dos conexiones SSH.

Esta arquitectura también podría darse si el router incorpora un servidor SSH, en este caso no necesitaríamos el SERVIDOR 1 como «pasarela», porque el propio router hará de «pasarela» al estar dentro de la red local del mismo servidor 2 al que queremos conectarnos.

winscp_ssh_tunneling_esquema

Para la realización de esta técnica de SSH Tunneling, vamos a utilizar un programa para Windows llamado WinSCP, aunque también podríamos hacer uso del popular Putty para hacer esto mismo, pero de esto ya tenéis un completo tutorial en RedesZone. Un detalle importante, es que Putty dispone de más opciones avanzadas, como, por ejemplo, varios saltos de SSH hasta llegar a nuestro objetivo, WinSCP sólo permite un único salto, pero nos servirá para la gran mayoría de casos donde solamente necesitaremos «pivotar» una única vez y no varias.

Configuración de WinSCP para SSH Tunneling

Lo primero que tenemos que hacer es descarganos WinSCP desde la página web oficial, este software es completamente gratis y tiene una interfaz gráfica de usuario bastante amigable. Un detalle muy importante, es que el idioma de WinSCP puede ponerse en inglés y también en español. Nosotros lo hemos puesto en español para que veáis lo sencillo que resulta la configuración de un nuevo servidor SSH/SFTP/FTP con el programa, y cómo hacer el SSH Tunneling fácilmente.

Otras características de este programa, es que nos permitirá transferir archivos de forma totalmente gráfica a través de SFTP y SCP, por lo que es una muy buena alternativa a las típicas órdenes de un terminal.

En el menú principal podremos ver todos los perfiles para «Iniciar sesión» que hemos guardado anteriormente, podremos hacer uso de diferentes protocolos como SFTP, SCP, FTP, WebDAV y Amazon S3. Aquí tendremos que introducir la dirección IP (la dirección IP privada del servidor 2 en el esquema) así como el puerto, y también la autenticación con usuario/contraseña o con claves SSH. Para poder realizar SSH Tunneling y conectarnos a un servidor remoto debemos pinchar en «Avanzado…» para tener acceso a opciones adicionales de configuración.

En el apartado «Conexión/Tunel» tendremos que configurar el acceso al servidor SSH alcanzable, es decir, al SERVIDOR 1 en nuestra arquitectura de red. Deberemos introducir la dirección IP pública del servidor remoto así como el puerto, usuario y clave de acceso. WinSCP permite la conexión a través de una clave privada RSA/DSA por lo que también tendremos disponible esta opción.

Nota: Si estamos conectándonos al SERVIDOR 1 y este actúa como puerta de enlace, deberemos introducir una IP privada, la de la propia puerta de enlace.

Una vez que hemos introducido los datos, debemos pinchar en «Aceptar» para usar esta conexión posteriormente.

Una vez que hemos rellenado lo anterior, en el apartado «Sesiones» hacemos doble click al perfil que hemos guardado anteriormente para cargarlo como conexión de primer salto. En la pantalla de sesión introduciremos la dirección IP, puerto y credenciales de acceso al SERVIDOR 2. Al hacer una conexión a través del SERVIDOR 1, podremos poner sin problemas un direccionamiento privado, es decir, podremos poner 192.168.1.3 que corresponde al SERVIDOR 2 dentro de la red local a la que hemos accedido.

Una vez rellenado todo pinchamos en «Conectar» y nos conectaremos al SERVIDOR 2 a través de la conexión SSH del SERVIDOR 1. En la siguiente captura de pantalla del log de conexión se puede comprobar los siguientes aspectos:

  • Abrimos el túnel y nos autenticamos correctamente en el servidor SSH del SERVIDOR 1.
  • Una vez establecido el túnel al SERVIDOR 1, nos conectamos con el SERVIIDOR 2, que en el caso del ejemplo tiene dirección IP privada 10.10.2.14 pero que podría ser la 192.168.1.3 del SERVIDOR 2 perfectamente. Como véis, hemos usado una IP privada ya que una vez creado el túnel es como si estuviéramos en la propia red local.

winscp_ssh_tunneling_windows_4

Diferencias entre Putty y WinSCP

Al ser programas parecidos, algunos os estaréis preguntando en qué se diferencian, y es relativamente sencillo responder a esta interrogante.

El caso es que WinSCP se utiliza prácticamente en exclusiva para realizar transferencias de archivos desde y hacia nuestro servidor, mientras que con el Putty lo utilizamos para interactuar directamente con el servidor. Putty simplemente tiene una interfaz de línea de comandos hacia nuestro servidor y WinSCP es una aplicación para transferir archivos utilizando un protocolo FTP seguro.

Recordemos también que utilizando WinSCP podemos fácilmente conectar un servidor SSH y SFTP o un servicio SCP a un servidor FTP o un servidor HTTP con servicio WebDAV o sistema de almacenamiento que soporte el protocolo S3.

Y precisamente debido a que son diferentes y tienen diferentes aplicaciones, podemos utilizarlos en combo, configurando la conexión SSH y si utilizas linux el SSHD desde el Putty y utilizando el WinSCP al mismo tiempo para realizar la copia o transferencia de archivos de manera segura mediante el canal seguro SSH que hemos creado previamente con el Putty.

Ventajas y desventajas de WinSCP

Dicho esto, también tenemos que destacar algunas ventajas y desventajas del propio WinSCP y ya os avisamos que tiene muchas más ventajas, ya que poco se le puede reprochar a esta herramienta que resulta muy completa y eficaz.

Por un lado, debemos destacar que, a pesar de ser una aplicación gratuita, goza de muchísimas ventajas y características, es fácil de usar e intuitivo, y tiene una interfaz gráfica bastante buena.

Tiene funcionalidades de sincronización automática para el manejo y de archivos y además tiene un editor de texto integrado que permite que los usuarios puedan abrir y editar archivos HTML, PHP, o CSS y si no fuera suficiente también pueden integrarse fácilmente editores externos como el Notepad++.

Pero como no todo pueden ser buenas noticias, también os podemos decir que tiene un par de cositas, que, aunque no sean graves, vale la pena mencionar, y es que, una de las cosas que hemos notado es que en ocasiones cuando realiza la transmisión de datos, su rendimiento baja considerablemente tornándose muy lenta dicha transmisión y además de eso únicamente podemos destacar que no admite rutas UNC, el WinSCP se “crashea” si intentas importar algún sistema de este tipo.

Hasta aquí hemos llegado con nuestro manual de cómo hacer un SSH Tunneling con WinSCP para acceder a servidores remotos que no estarían accesibles a través de Internet, pero que sí lo están a través de la propia red local. Esta técnica es ampliamente utilizada porque nos permitirá «pivotar» en un servidor de administración que esté fuertemente protegido, y posteriormente conectarnos a servidores internos de la organización de forma fácil y rápida, esto es comúnmente utilizado en empresas para proteger toda la infraestructura interna, siempre vigilando que el servidor que está expuesto incorpore todo lo necesario para tener la máxima seguridad como firewall, IDS/IPS, un completo sistema de logging para ver y detectar cualquier evento relacionado con la seguridad, etc.

1 Comentario