Túnel Reverso en SSH
¿Cuantas veces se ha tenido la intención de ayudar a un usuario que no puede abrir los puertos de su router para poder ingresar a su equipo remotamente ?La solución es un tunnel reverso, lo que nos permite una conexión segura y en el mejor de los casos si un usuario estará en esta implementación debemos crear un usuario bin/false para que al momento de hacer el reverso el no tenga acceso a una shell.
Plantearemos el siguiente escenario: Tenemos un OS Debian y crearemos un nuevo usuario que será el que participe en la conexión reversa, en nuestro caso creamos un usuario llamado osisecurite.
Para entender bien el bin/false veremos que pasaría si el usuario final no sabe abrir puertos y le mandamos la instrucciones para crear un tunnel reverso, si lo hacemos sin poner al usuario osisecurite bin/false implica un riesgo de seguridad debido a que se le daría una shell.
ssh -R 9898:localhost:22 -l osisecurite XX.XX.XX.XXX
Este comando lo que hace es que el usuario establezca una conexion a nuestra PC y nos permita acceder por medio de redireccionamiento a su PC por medio del localhost desde nuestra PC.
Como se puede observar se le ha dado al usuario un shell en la cual puede utilizar el sistema operativo.
Se puede evitar modificando el archivo /etc/passwd y poniendo un bin/false al usuario osisecurite para que no se le de el shell pero mantenga la conexión para realizar la inversa.
Veamos de nuevo lo que pasa ingresando el comando anterior.
ssh -R 9898:localhost:22 -l osisecurite XX.XX.XX.XXX
ssh -R 9898:localhost:22 -l osisecurite XX.XX.XX.XXX -N
Solamente ahora nos basta con hacer un ssh al localhost en el puerto especificado por el usuario que era 9898 desde nuestro PC y de esa manera tenemos acceso a la PC del usuario final.
ssh -p 9898 osisecurite@localhost
Como pueden ver SSH es un protocolo muy util y de una gran utilidad en administracion de servidores, traspaso de archivos, conexiones reversas, las cuales nos facilitan el trabajo al momento de interactuar con usuarios finales.