Fijo que entre los amigos de PCDM hay muchos usuarios del SSH (verdad tocayo ;)). Posiblemente muchos de estos usuarios han usado alguna vez una de las características más interesantes del SSH que es el tunneling (túneles SSH) desde PC con distintos sistemas operativos (aunque es más habitual usarlos en SO like unix).
1. ¿Qué demonios es eso del SSH y tunneling?
Empecemos por explicar lo que es cada cosa para los amigos que estaban despistados y no lo conocían.
SSH son las siglas de Secure Shell. Es un protocolo de red que permite el intercambio de datos entre dos ordenadores a través de un canal de comunicaciones encriptado. SSH normalmente se usa para conectarse a un ordenador remoto y ejecutar comandos en el.
Otra de las características interesantes de SSH es el X forwarding que permite ejecutar un programa gráfico en remoto pero verlo en el ordenador local siempre y cuando este disponga de un servidor X (X11 o Xorg para sistemas like unix o port del mismo como el Xming para sistemas Win32. Esta característica yo personalmente la uso mucho para ejecutar programas con gui en mis servidores linux que no tienen entorno gráfico desde otros pc con linux (no necesito nada al tener ya el servidor X) o windows (iniciando primero el servidor X Xming)
Otra de las características interesantes de SSH es el tunneling que es de lo que trata esto. El tunneling lo que hace es encapsular un protocolo de red dentro de otro a través de un túnel seguro entre el ordenador local y el remoto (por ejemplo, enviar tráfico ftp a través de tráfico http). Para ello se se hace un mapeado de un puerto remoto a uno local.
2. ¿Para qué nos sirve eso del SSH y tunneling?
Ahora os preguntareis para que demonios nos sirve estas cosas tan raras. Pues para muchas cosas, por ejemplo, hacer seguros protocolos que de por si son inseguros (pop, smtp, http, …..), si tenemos un firewall que solo nos permite conexiones http, podremos saltarlo haciendo un túnel y encapsulando otro protocolo dentro de http (es lo que hacen muchas aplicaciones de control remoto de equipos que son capaces de saltarse los firewall corporativos).
Por ejemplo, yo lo uso para poder administrar mis router o la Via Epia que uso 24/365 como server, todo ello Via web desde cualquier sitio.
Para ello uso el PuTTY que lo tenéis tanto para Win32 como para linux, unix, …..
En este caso configuro que el puerto local 8080 se corresponda al puerto 80 de mi router ADSL y el 8081 local se corresponda al router Linksys WRT54GL.
Desde el Putty hago la conexión contra mi server ssh y a partir de ese momento tengo un túnel seguro desde el ordenador local contra el interfaz web de mis routers. Solo tengo que usar http://localhost:8080 para acceder a la configuración web de mi router adsl y http://localhost:8081 para acceder al interfaz web del WRT54GL.
Como es evidente, para hacer túneles ssh necesitáis por un lado poder crear un túnel Via Putty, ssh en consola, …., y por otro un servidor ssh. En mi caso la Via Epia que tengo montada como server ya me hace esas funciones. Los que posean un router neutro como el Linksys WRT54GL si usan firmwares alternativos como el Tomato o DD-WRT pueden hacer lo mismo ya que tiene ssh (esto se puede aplicar a cualquier router que tenga ssh). Supongo que esto será lo que hace nuestro pequeño saltamontes para administrar todos esos wrt54 que tiene perdidos por esos mundos creando redes wifi.
En el caso de que usemos un SO like unix y tengamos instalado el cliente de ssh solo tendremos que teclear en una consola:
ssh -P – L 8080:tu_ip:80
ssh -P -L 8081:tu_ip:80
También lo podemos hacer desde windows si tenemos el port del cliente de SSH para win32.
Yo personalmente uso este último sistema a través de scripts que me automatizan la conexión. También uso el putty en ordenadores que no tienen el cliente de ssh instalado. El putty es una de las herramientas que llevo siempre conmigo en un pendrive.
3. ¿Y para que nos vale todo eso en una web de pocketpc?
Después de todo este rollo supongo que alguno se pregunta para que demonios nos sirve eso para nuestros pocketpc.
Pues sirve porque podemos hacer lo mismo desde nuestros chiquifones. Hace tiempo prepare una revisión del zaTelnet un cliente de ssh y telnet. Pues bien, del mismo desarrollador tenemos el zaTunnel que nos permite crear túneles ssh desde nuestras pequeñitas.
Según el desarrollador el zaTunnel es un software freeware que nos permite crear túneles ssh para Smartphones y Pocket PC.
zaTunnel: SSH Tunnel and Portforwarding client for Smartphones and Pocket PC
Tunneling, or port forwarding, is a way to forward otherwise insecure TCP traffic through SSH Secure Shell for Workstations. You can secure for example POP3, SMTP, Telnet, FTP, VNC and HTTP connections that would otherwise be insecure.
You can control not only SSH server but all computers in your intranet network. ZaTunnel is a SSH tunnel and port forwarding program for devices supporting Microsoft Compact Framework 2.0. ZaTunnel boasts a handful of improvements that make remote administration of Unix and other servers via Telnet/FTP/VNC protocol using mobile devices safely and more efficient.
There are two variants of this software available for MS CF 2.0.
MS Pocket PC with CF 2.0
and MS Smartphone 2005 with CF2 for newest devices like MototolaQ, T-Mobile DASH, Samsung BlackJack and so one.
He probado el zaTunnel en mi ipaq HX4700 con WM2003SE y funciona bien, de vez en cuando da algún error pero considerando que es un software en fase alpha funciona razonablemente bien.
La instalación no tiene complicación ya que nos descargamos un fichero comprimido que solo tiene el ejecutable. Lo copiamos a la PDA y lo ejecutamos.
El funcionamiento tampoco tiene complicación, introducimos la dirección del servidor SSH, el puerto del servidor ssh si usamos otro que no sea el 22, el nombre de usuario y password de un usuario que se pueda autenticar Via ssh. En tipo de red ya dependerá de vuestra configuración. Yo me estaba conectando Via tarjeta ethernet así que en el tipo de red usaba «My work exclusive».
También es posible usar un fichero con la clave para la autenticación.
Después tenemos que crear los túneles ssh. En este caso aproveché para crear 2:
– mapear el puerto 80 remoto al 81 local para administrar el router neutro Linksys WRT54GL.
– mapear el puerto 10000 remoto al 10000 local para administrar mi Via Epia Via Webmin
Una vez configurados los túneles volvemos a la pestaña de conexión y solo queda conectar. Vemos como se va negociando la conexión y si no hay problemas al conectar ya tendremos creada la conexión contra nuestro servidor ssh y los túneles ssh creados.
Ahora solo nos queda ir al navegador y comprobar que todo funciona.
Tecleo http://localhost:81 en el Opera y funciona correctamente, al cabo de unos segundos (estoy haciendo las pruebas a través de Internet con una conexión ADSL sobre RDSI) tengo la pantalla de status del router Linksys WRT54GL.
Ahora voy a comprobar el acceso al Webmin de la Via Epia. Introduzco https://localhost:10000 en el opera y a los segundos tengo la pantalla de autenticación.
Introduzco el nombre de usuario y password y ya estoy dentro del webmin que me permite configurar la Epia Via navegador.
En este caso el webmin usa https que es una conexión segura, pero funciona igual perfectamente.
De esta forma puedo administrar determinadas cosas sin necesidad de abrir puertos innecesarios que pueden comprometer la seguridad en el router. Con solo tener el puerto 22 del ssh ya me vale ya que el resto de puertos que necesito para la administración los encapsulo todos a través de túneles ssh. Evidentemente el puerto de ssh esta bien protegido ya que el usuario root no pueda acceder Via ssh Via WAN, solo permito a un usuario del sistema autenticarse via WAN (con la debida seguridad en nombre de usuario y contraseña) con solo dos intentos para intoducir correctamente la contraseña y al primer intento de autenticarse de cualquier otro usuario, detecto su IP y automaticamente bloqueo la IP con lo que cualquier reintento de conexión se corta antes de volver a intentar autenticarse.
En mi caso lo uso para administrar los servidores pero tiene muchos más usos. Otro de ellos muy útil es para el acceso al escritorio remoto de windows. Supongo que muchos de vosotros tenéis vuestros equipos encendidos y dejáis el escritorio remoto con su correspondiente puerto abierto en el router. Eso es muy peligroso ya que cualquiera que se conecte a vuestra ip y detecte el puerto abierto podrá aprovechar cualquier fallo de seguridad de windows para colarse en el equipo. En este caso lo ideal es tener el puerto del escritorio remoto cerrado en el router y cuando necesitéis conectaros,creáis un túnel ssh al puerto del escritorio remoto y listo, tendréis acceso a vuestro PC de forma segura sin necesidad de tener puertos abiertos en el router que comprometen la seguridad.
El único requisito que necesitáis es tener un servidor SSH en vuestra red que bien puede ser un router que disponga de ssh, un servidor like unix con ssh o si usáis windows también podéis instalar el port para win32 de openssh en vuestro PC.
De esta forma podéis crear conexiones seguras contra cualquier aplicación.
Como véis, los túneles ssh son una herramienta muy potente para la administración de sistemas y es algo que ahora podemos hacer desde nuestros chiquifones.
Un saludo del Tolgi
MUCHAS GRACIAS de tus COMPAÑEROS DEL STAFF DE PCDEMANO… que estamos deseando volver a verte de nuevo en el Panteón de «hombres ilustres» 😉
532