Información blog

Linux, tutoriales, noticias, sistemas, redes y seguridad informática, entre otras cosas.

miércoles, 14 de enero de 2015

Tunel inverso SSH

En ocasiones uno puede tener la necesidad de que le administren remotamente el equipo o servidor pero se carece de VPN alguna o de una redirección de puertos desde el router con la que dejar que la otra persona pueda entrar directamente al servidor. También puedes toparte con que el firewall esté bloqueando las conexiones entrantes al puerto ssh y que por cuestiones de seguridad no se abra bajo ninguna circunstancia.

A todos estos problemas existe una solución llamada túnel inverso por ssh el cual requiere que el servidor al que queremos acceder tenga openssh instalado y una servidor ssh al que tanto el servidor que se quiere administrar cómo la persona que quiere entrar en éste, tengan acceso. 

El túnel inverso consiste en conectar dos equipos entre sí por ssh con la peculiaridad de que requiere que el equipo al que se quiere tener acceso, sea el que se encargue de facilitar el acceso al otro. Es decir que si el equipo cliente no da el paso inicial, es imposible conectarse remotamente. Eso puede parecer poco práctico, pero puede evitar dificultades en muchas situaciones, ya que es muy habitual en la mayoría de los sitios que se tengan muy restringidas las conexiones desde exterior pero que haya vía libre para todas las conexiones salientes.

Lo ideal sería que el servidor ssh tuviese un usuario “enjaulado” para esta tarea. Dicho usuario solamente permitiría que se logueen con él pero no podría realizar acción alguna (el mero hecho de conectarse al otro equipo aún sin poder hacer acción alguna es suficiente para crear el túnel). En caso de no tener ningún usuario con esas características y no querer crear uno no pasaría nada, el túnel se puede realizar con cualquier tipo de usuario. De todas formas, lo que si que recomendaría encarecidamente sería que se usase un usuario sin permisos de super usuario para esta operación.

El proceso del túnel inverso solo requiere dos pasos muy sencillos. 
  • Paso 1:
Lo primero que tenemos que hacer es especificar desde el equipo final que abra una conexión inversa (-R) al puerto 10000 (o el que se quiera) hacia el localhost del equipo al que sí podemos acceder vía ssh, mediante el puerto que tengan habilitado para dicha conexión. Luego habría que poner un usuario valido del servidor ssh y su dirección ip (@ip). El puerto 10000 o el que se especifique en –R tiene que estar libre, ya que en caso contrario tendremos problemas. 

comando linux: 


ssh –R <source port>:<host destino>:<puerto destino> user@host

ejemplo: ssh -R 10000:127.0.0.1:22 tunel@<ip_servidor_ssh>

En caso de tener interfaz gráfica, para aquellos que prefieran utilizar putty debido a su amigable interfaz o debido al miedo a la consola, habría que hacer lo siguiente:

En la sección sesión que aparece por defecto habría que poner la ip del servidor ssh y su puerto.


Para crear el tunel remoto habría que acceder a la sección connection --> SSH --> Tunnels. Allí habría que poner cómo Source port, el puerto del equipo al que accederemos por ssh. En Destination simplemente habría que poner la ip localhost (127.0.0.1) y el puerto que tenemos habilitado para el acceso por ssh (por defecto el 22) separado con dos puntos, quedando así 127.0.0.1:22. Muy importante pulsar el botón Add antes de clickar en aceptar, ya que en caso contrario no se crearía el túnel.


  • Paso 2: 
Desde el servidor ssh habría que escribir simplemente lo siguiente

comando linux: 

ssh <user>@<localhost> –p <puerto usado para el tunel>

ejemplo: ssh root@127.0.0.1 –p 10000

Si tuviese interfaz gráfica y tuviésemos también miedo a la consola del servidor ssh, habrá que rellenar los parámetros tal y cómo aparecen en la siguiente pantalla y clickar en Open.




Y con esto ya estaríamos dentro del servidor que hasta ahora estaba “aislado” y sin posibilidades de gestionarlo remotamente; Requiere tener a una persona al otro lado para poder acceder al servidor, pero es una buena forma de evitar que configuren el firewall o el router para atender una necesidad puntual.


No hay comentarios :

Publicar un comentario