Tunelizando un proxy a través de SSH

Imagínate que estás con tu portátil en el aeropuerto, en un bar, en la calle, o en cualquier otro lugar remoto. Imagínate que estás conectado a Internet a través de una WiFi sin encriptación o de la que no te fías un pelo, y quieres consultar tu correo o entrar en una web que no utiliza cifrado. ¿Qué haces?

Conectarte a una WiFi libre y/o pública tiene su encanto, pero también tiene sus riesgos. Cualquiera de los otros usuarios de la red puede monitorizar todas tus comunicaciones, y partiendo de la base que hay mucho cabrón suelto, mejor curarse en salud. Si la página web que queremos visitar no utiliza cifrado (HTTPS) se lo vamos a poner nosotros. Al menos durante parte del camino. Vamos a montar un proxy remoto y lo vamos a «tunelizar» a través de SSH.

Lo primero es presuponer de nuevo que disponemos de una máquina Linux accesible desde el exterior por SSH, por ejemplo instalada en casa y con permisos de paso a través del router para el puerto 22/TCP. Un router del tipo Linksys WRT54GL de nuevo nos vale para estos menesteres. Solo tendremos que flashearlo con algún custom firmware, como DD-WRT. Así no necesitaremos tener un ordenador en casa siempre encendido.

Vamos con el portátil. Estamos conectados a través de una WiFi pública y queremos meter nuestro nombre de usuario y clave en una web sin cifrado. Lo primero sería conectarnos por SSH a nuestra máquina remota:

Vamos a ver cómo se haría con Putty para Windows.

1. Lo primero es irnos a la sección «Connection / SSH / Tunnels» y configurar allí el tunel SSH. Debemos marcar la opción «Dynamic», escribir un puerto local libre en «Source port» y pulsar «Add». En mi caso he elegido el puerto «8000». La configuración debería quedarnos como en la segunda captura (pincha para ampliar):

2. Ahora, en «Session» introducimos la IP o el nombre del servidor SSH en «Host Name», marcando «Connection type» como «SSH». Como probablemente usemos bastante esta configuración, nos interesará guardarla añadiendo un nombre en «Saved Sessions» y pulsando a continuación «Save» (pincha para ampliar):

3. La configuración de Putty ya está. Solo nos queda configurar el navegador para que utilice nuestro tunel SSH. Para ello deberemos ir a la configuración del proxy de nuestro navegador preferido, marcar «Socks 5», y como proxy «localhost» con el puerto que hayamos configurado en Putty. En nuestro ejemplo sería el 8000. Aquí tenéis algunos ejemplos de configuración, tanto para Internet Explorer como para Firefox (pincha para ampliar):

Ahora, cada vez que queramos hacer un canal seguro entre la red desde la que nos conectamos y una red «confiable», solo tendremos que iniciar sesión SSH con Putty usando el perfil que hemos creado en los pasos anteriores, y establecer la configuración del proxy en el navegador.

Los usuarios habituales de Firefox deberían probar las extensiones QuickProxy (cambio rápido de proxy con un click) y FoxyProxy (soporta múltiples perfiles, permite añadir reglas y filtros, mantiene listados de páginas que deben ir por una u otra configuración… muy potente).

¡Feliz navegación!