Tuneliando la vida con OpenSSH

8 views
Skip to first unread message

Tio Oscar

unread,
Sep 30, 2008, 12:49:42 PM9/30/08
to uni...@googlegroups.com
De casa al trabajo? el server en produccion a tu maquina laboral o a la red de tu empresa?

:-) He aqui una de mis cosas favoritas del OpenSSH, o simplemente SSH :P (Secure SHell).

Bueno capas que muchos tiene un consepto.. no errado pero si muy pobre de los que es el ssh, muchos creen que solo es una especie de entrada a usar una PC remota por una consola :-P, y que si o si siempre tiene ejecutar un bash apenas nos conectamos xD

Pero sabiendo el verdadero significado de shell: (concha, xD), una shell es una capa entre el sistema operativo y algo, eso puede ser un humano o un programa.

Si bien ssh trabaja con los usuarios del sistema, no es solo para editar un virtual en un server en produccion, puede ser util para muchas cosas, y la ventaja de este que es seguro (SECURE shell), usando juegos de llaves DSA y RSA para certificar y encriptar los datos.

Se pueden hacer tuneles TCP/IP, esto es, crear un tunel desde una PC con un cliente ssh (ssh, putty, etc) y un equipo con sshd (ssh-server), este tunel es manejado por esta SHELL (capa o interfaz/interface), pero para la conexion esto es transparente... osea..

      [MAQUINA LOCAL    puerto 300:-ssh]-------------------------------------------->[sshd-> puerto 300 MAQUINA REMOTA]

le decimos que el ssh habra un puerto local (300) y haga un puente con el 300 de la maquina remota, esta se conectara al sshd remoto (puerto 22) y le dira al sshd que se conecte al puerto 300. Alla hay un cliente local conectandose al puerto 300, y aca hay un servicio abriendo un puerto local, para la aplicacion que trabaja con esto es totalmente transparente, pero para la comunicacion no, hay una encriptacion de los datos en vivo.

Supongamos que un programa le manda un HOLA a otro:

   [PC 1 HOLA ]  -----------> HOLA -----------> [PC 2]

la informacion viaja en plano y la comunicacion puede ser sniffeada o spoffeada falsificando conexiones, paquetes y etc... Ahora el puente

   [PC1 HOLA --> () SSH ) ---------~jEoi8SaiO-------> [() SSHD ) -> HOLA PC 2]

La clave DSA sertifica por medio de una firma digital que ese HOLA vino de PC 1, y aparte encripta los datos para que otra PC no pueda ver que se envia, a [PC 3] por ejemplo ~jEoi8SaiO no le va a servir de nada si no tiene la llave privada para desencriptarlo (RSA).

Ahora al asunto practico, abrimos un puerto ssh y lo redirigimos... (con ssh)

ssh -N -L 300:127.0.0.1:300 server.com

aca creariamos abririamos un puerto local (300) el cual ssh tunealearia* al sshd de server.com y este a la vez al puerto 300 local.

Pero supongamos que tenemos un server WEB y un server Mysql, solo el web tiene salida a internet,asi que seria algo asi:


   [PC] ----------------------------------> [WS] ----------->[MYSQLD]
   190.54.233.176                           server.com       192.168.1.2
                                        
no nos podemos conectar al server de mysql directo, pero el servidor web si, asi que se lo pedimos:

    ssh -N -L 5000:192.168.1.2:3306 server.com

eso lo que le dice al sshd (server.com) es que nos concete al 3306 (mysql) de 192.168.1.2 (la ip interna del server mysql), de esa forma no solo nos sirve para asegurara la cominicacion, sino que tambien sirve paraconectarnos a maquinas que esten en el la red interna y no con acceso directo a nosotros, saltandonos firewalls, y demas.

Con el cliente de MySql no conecteriamos

  mysql -u usuario -h localhost -P 5000 -p

Y es como conectarnos de alla (usuario@localhost).

Obviamente si deseamos que nuestros usuarios creen tuneles hay opciones, en /etc/ssh/sshd_config (en linux, en otros SO unix no sé)

AllowTcpForwarding yes
#X11Forwarding no

Con eso se puede desabilitar/habilitar el fordwardeo de puertos y el de interface gráfica (X11).

--
El Tio ~ http://blog.exodica.com.ar

Andrés Gattinoni

unread,
Sep 30, 2008, 10:23:34 PM9/30/08
to uni...@googlegroups.com
La verdad es algo que uso bastante y es genial.
A otra escala, un groso mal es OpenVPN, que te agrega una interfaz de red virtual por la que se rutean todos los paquetes que van a la red remota, todo cifrado, por supuesto.

Tio Oscar

unread,
Oct 1, 2008, 12:26:46 AM10/1/08
to uni...@googlegroups.com
Una sola vez me meti con las VPNs, que me tuve que conectar a una de win2. Como encripta? tambien por DSA/RSA ?

2008/10/1 Andrés Gattinoni <andresg...@gmail.com>

Andrés Gattinoni

unread,
Oct 1, 2008, 8:35:24 AM10/1/08
to uni...@googlegroups.com
Sep. Vos ponés a correr el server de OpenVPN en un gateway, y le ponés sus correspondientes certificados. Después los flaquitos que se quieren conectar necesitan los certificados públicos y a eso le podés agregar por ejemplo autenticación con user y pass del SO en donde está instalada la VPN.
Después vos en el cliente configurás el openvpn client y te olvidás de andar forwardeando cada puerto. Ponés en un archivo de configuración dónde están los certificados y alguna opción más, arrancás el cliente, ponés tu user y password y dale que va.

Salu2

A
Reply all
Reply to author
Forward
0 new messages