SSH: Tuneles y más

por | 03/03/2015

Hace un tiempo hice una entrada un poco mas compleja llamada “Tunel SSH con TOR y/o bypass proxy” pero la idea de este post es explicar algo mas básico, que es SSH y alguna de sus ventajas.

Ante todo, les dejo la entrada de Wikipedia para que empiecen a leer: http://es.wikipedia.org/wiki/Secure_Shell

Hace un par de años este protocolo se volvió uno de los mejores métodos, con respecto a seguridad, para administrar servidores de forma remota; vino a ser un remplazo del antiguo “Telnet”. Trabaja con un esquema Cliente(ssh)/Servidor(sshd) donde múltiples clientes pueden establecer una conexión segura contra un servidor ( usualmente *nix, BSD o Gnu/Linux ), todo tráfico que suceda por medio de la conexión va encriptado de forma robusta. Su uso principal se puede resumir en 3 funciones:

  1. Administración remota de servidor por consola
  2. Administración remota de un equipo mediante exportación de X
  3. Armado de túneles y forward de puertos

Administración remota de servidor por consola

Este es el uso básico y primordial, existen clientes para todo OS, tanto de servidores, máquinas de escritorio o celulares. Para poder realizar dicha conexión simplemente necesitan que a donde se vayan a conectar tenga el SSHD corriendo, la IP y credenciales de acceso.

En el caso de un Gnu/Linux pueden conectarse simplemente haciendo:

ssh [usuario]@[IP]
Otra manera
ssh [IP] -l [usuario]

ssh

 

Administración remota de un equipo mediante exportación de X

Este caso es casi tan simple como el anterior, solamente tienen que usar la opción “-Y” y tener en cuenta que en el servidor tienen que tener configurado (  /etc/ssh/sshd_config ) la opción “X11Forwarding yes” y una vez establecida la sesión tienen que ejecutar alguna aplicación que levante X. En el caso de usar Window$, por ejemplo, tienen que instalar Cygwin

Ejemplos:

ssh -Y [usuario]@[IP]
[usuario]@[host]:~$ xclock

Armado de túneles y forward de puertos

Si hay algo que realmente molesto para un administrador es no poder acceder directamente, desde la pc donde se esta trabajando, a los puertos de un servidor; pero gracias a SSH todo esto se solucionó. Muchas veces para administrar equipos o realizar ciertas tareas nos dan acceso SSH pero no así acceso al puerto donde corre un servicio que es necesario probar. La solución a todo esto también la tiene el esplendido SSH que nos deja realizar un forward de un puerto local a un puerto remoto. Hablando simple, hacemos que un puerto del “servidor” sea un puerto del “cliente” mediante lo que se llama un túnel SSH, acá un ejemplo de la opción “-L” que nos ayuda para esto:

ssh -L [puerto_local]:[IP]:[puerto_remotor] [usuario]@[IP]

Vamos a explicar un poco esto…

El túnel propiamente dicho se arma en la primer parte “-L [puerto_local]:[IP]:[puerto_remoto]” donde vamos a especificar el puerto local nuestro, en el caso de usar un puerto por debajo del 1024 van a tener que ejecutar el mismo con privilegios de root o administrador, la IP remota y el puerto remoto que va a pasar a ser nuestro puerto local.

ssh_tunel

Ahora bien, existen algunos casos que se nos complica aún mas, como estos:

ssh_tunel_pivote

El “escenario 1” es el mas complejo porque tenemos que generar 2 túneles, ya que no tenemos acceso directo o a través del pivote al puerto 80 del servidor 192.168.2.222 y el “escenario 2” es mas simple dado que desde el pivote si tenemos acceso a dicho puerto e ip.

En ambos ejemplos les dejé los comandos para que puedan ver cómo se arman los túneles necesarios para poder llegar a nuestro objetivo ;)

Todos los casos de túneles con forward a puerto local:

Para probar los túneles tienen que acceder a localhost:8080 desde su maquina cliente ( en este caso sería desde 192.168.1.1 ). Pueden probar con “nc” o en este caso que es HTTP podrían usar un navegador y en la url utilizarían “http://localhost:8080” y estarían llegando al 192.168.2.222:80 ( obvio, si funciona todo bien jeje ).

Para ir finalizando les voy a comentar, que seguramente sea un post más adelante, que no sólo existe el método de usuario/contraseña para autenticarse por SSH, sino que existen:

  • Clave pública (id.rsa, authorized_keys)
  • Contraseña
  • Kerberos/GSSAPI

Les dejo un documento interesante sobre el tema: http://es.tldp.org/Tutoriales/doc-ssh-intro/introduccion_ssh-0.2.pdf

Sinceramente espero que les sirva y cualquier duda o consulta simplemente me tienen que dejar vuestro comentario.

Un pensamiento en “SSH: Tuneles y más

  1. Pingback: Túnel inverso con SSH – El Blog de Sepa

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.