Que tal
Lo que quiero explicarles es una conexion ssh inversa segura, normalmente en los IRC cuando alguien necesita ayuda en la configuracion de su OS, o es nuevo en el tema informatico y no sabe abrir puertos, el SSH inverso es la solucion, lo que me preocupa es que me ha tocado que ver que lo hacen permitiendo al usuario remoto obtener un shell al hacer la conexion, le explicare como hacerlo sin dar ese SHELL
Supongamos que tenemos un OS debian y nuestro usuario es chapo182, si estamos en el sudoers para agregar usuarios ponemos:
sudo adduser tunnel
Una ves creado el usuario tunnel vamos a la siguiente ruta
nano /etc/passwd
Ahi veremos el usuario chapo182, y la ultima linea sera este usuario tunnel, al final de ese linea dice bin/bash; esto permite que al conectarse por SSH y agregar credenciales nos de un shell.
Para evitar eso y no dar acceso a un shell a alguien que sepa nuestro usuario o password para ayudarlo con la conexion inversa, cambiamos el bin/bash por bin/false, salvamos y seguimos con el proceso.
1 El usuario al que ayudaremos esta en russia (es el pc que no tiene los puertos abiertos) abrira un shell y pondra:
ssh -R 9898:localhost:22 -l tunnel 201.X.X.X -N
-R Esto nos dice que se le dio al equipo remoto (al ruso) el puerto 9898 y se le hara forward al usuario local (el que ayuda)
-l especificamos el usuario del equipo del ayudante en este caso es tunnel
La parte de 9898:localhost:22 es importante que siempre respeten la sintaxis el puerto que le quedara a mi equipo para que me ayuden en el localhost y el puerto 22 es el puerto default por donde corre el protocolo
-N Esto sirve para no perder la conexion, por que recordaremos que tenemos
al usuario tunnel con bin/false, lo que impide una conexion con un shell, el parametro-N hace que la conexion este establecida pero sin generar shell
2 ahora es nuetro turno de conectarnos con el usuario ruso y ayudarle
abrimos un shell y ponemos lo siguiente
ssh -p 9898 tunnel@localhost
Y listo tenemos control del ruso y le podemos ayudar.
Cabe mencionar que la explicacion del puerto fue con los valores por default del protocolo, por seguridad les recomiendo cambiar el puerto y lo mejor de todo si en sus trabajos no pueden sacar un shell a su casa por que el maldito FW bloquea el puerto 22, les recomiendo abrir el 443 para enganar al firewall y piense que es trafico HTTPS, aunque algunos FW revisan la cabecera del paquete, de igual manera bajamos el codigo fuente de SShy lo re compilamos con la cabecera HTTP y wala. tambien no olviden modificar el /etc/ssh/sshd_config, quitar el login con root, los intentos de passwords, el tiempo para hacer login, etc...
Espero que les puda servir de algo
Un cordial saludo