SSH INVERSO

Iniciado por chapo182, 30 Septiembre 2012, 06:28 AM

0 Miembros y 1 Visitante están viendo este tema.

chapo182

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

adastra

" -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"


No, la opción "-N" sirve para que no se puedan ejecutar comandos en el host remoto desde el cliente, la conexión no se perderá a menos que se indique de forma explicita y eso no tiene relación con esta opción. Normalmente se utiliza solamente para hacer "forwarding" de conexiones (que es lo que has intentado explicar aquí), ademas solo esta disponible desde la versión 2.0 del protocolo SSH.