18 de noviembre de 2005

El túnel del SSH

Esta última semana fue un poco cansada...gracias a cierta aerolínea he tenido que dormir en cuatro capitales de Centroamérica en cinco días..pero bueno, como siempre he creído, siempre aparecen oportunidades de aprender cosas nuevas.

Por tanto viaje, he estado teniendo que usar accesos públicos de Internet a través de redes inalámbricas (Wi-Fi hotspots) en hoteles, aeropuertos, etc. Para facilidad del acceso de la gente que se conecta a esto, los access points están configurados sin ningún tipo de seguridad (aunque sea WEP). Esto es bastante conveniente para uno, pero también es bastante fácil para cualquier script kiddie que ande por allí, que ponga su equipo a escuchar y copiar el tráfico de todos los usuarios...y para hacerlo más interesante, ronda por la Red una herramienta para reconocer passwords dentro del tráfico normal de red (esto lo oí en el podcast de Security Now, por cierto).

Sobre esto, hace poco salió en digg una "nota" que ponía una página que capturaba todos los passwords transmitidos en cleartext durante una conferencia: pusieron un script que hacía sniffing del tráfico inalámbrico y capturaba claves. Aparte de las implicaciones legales, etc. de esto, pues me puse a investigar cómo proteger el tráfico, sin llegar a una solución más complicada, tipo VPN.

Parte de lo que encontré, fue usar SSH tunnels. El concepto es interesante: a través de un cliente de SSH cualquiera, se puede redirigir el tráfico de un puerto local, hacia otro puerto en un servidor remoto, dentro de la conexión encriptada que ya mantiene el cliente SSH.

Con esto, se hace tráfico muy seguro, ya que el protocolo SSH (en la versión 2, verdad?) usa criptografía fuerte.

Lo que hice entonces fue configurar en PuTTY que hiciera el túnel (Connection->SSH->Tunnels), agregando un puerto local (en mi caso, localhost:3128 que corresponde al HTTP proxy Squid usualmente), hacia el puerto 3128 de un servidor remoto.ejemplo.com que corre el proxy Squid, y apuntando el HTTP proxy de mi navegador hacia localhost:3128.

Para evitar que todo el mundo use ese proxy, se configura para que sólamente acepte tráfico de localhost (en este caso, es el localhost del servidor remoto, no de mi PC). Entonces, el PuTTY se encarga de reenviar el tráfico recibido en localhost:3128, y redirigirlo al remoto.ejemplo.com:3128, donde el sshd de remoto lo interpreta como tráfico local, y lo traslada directamente al Squid local que está escuchando en el puerto localhost:3128.

De esa manera, mi tráfico inalámbrico está totalmente encriptado hasta llegar al proxy server! Con eso, ya podría entrar a una LAN segura si el proxy permitiera tráfico hacia ella. La autenticación queda a cargo de SSH, usando passwords.

Hay muchas aplicaciones para estos túneles, y hay bastante información adicional en Gugle, buscando la frase "ssh tunnel". Esta técnica está altamente recomendada para asegurar tráfico en el Internet. Como leí hace poco en un libro: la seguridad se diseñaba anteriormente para evitar que los malos entraran; ahora los malos están adentro, usando los sistemas de seguridad...ya no sólo es protección, necesitamos autenticación, autorización y administración (el famoso AAA en inglés dice "Accounting" para la última A, pero...dejémoslo en administración ;-).

5 comentarios:

Oscar Bonilla dijo...

Mejor instalá un IPCop en tu red y configurá tu compu para que se conecte usando VPN... no es complicado, yo así tengo mis redes...

efutch dijo...

Bueno, pero la idea era no usar un VPN...con un L2TP hay que crear la interface, etc. y eso como que está más complicado que usar ssh-agent con llaves DSA pre-generadas para evitar usar passwords...en alguna página incluso encontré un script para automatizar el proxy.pac para que se conectara automáticamente el browser.

¿Parecería que se le expiró el dominio a ipcop.org, verdad?

josh dijo...

El Ep.15 de Security Now (24/11/05), habla sobre soluciones de SSH Tunneling...coincidence? Or is Steve Gibson reading yer blog?

efutch dijo...

Que casualidad, ¿verdad?...pero bueno, tuve First Post ;-)

Anónimo dijo...

Queria decir que tienes un excelente website. Si tienes tiempo puedes visitar mi website que esta relacionada a las Computadoras