Proxy a través de SSH.

29 Oct

En ocasiones es conveniente poder contar con una conexión a un servidor que permita una navegación WEB segura o anónima.
Hay distintos modos de lograr esto, pero quizá una de las maneras más sencillas sea la utilización de un túnel SSH.Mediante este túnel generaremos un proxy SOCKS local, que al configurar nuestro navegador, permitirá que todo el tráfico local del navegador se curse en la máquina remota, accediendo a través del túnel SSH.

¿En qué casos es interesante utilizar esta solución?

  • Conexión a través de una red wifi pública (centro comercial, bibliotéca pública, etc…). Este tipo de redes no son muy seguras. Al utilizar el túnel, todo nuestro tráfico irá cifrado por lo que será inaccesible para los otros usuarios. Se puede gestionar desde un móvil Android con la aplicación «SSH tunnel».
  • Acceso a contenidos bloqueados por un proxy. En caso de que accedamos a Internet a través de un proxy con filtrado de contenidos, utilizando esta solución podemos acceder a cualquier tráfico, ya que el proxy verá el tráfico como SSL y no romperá el túnel para analizar su contenido.

Seguro que hay algún caso más en el que puede ser útil, pero de momento sólo se me ocurren estos dos.
Bien, ahora que hemos visto para qué vale, veamos como lograrlo. Para ello pondré un ejemplo de configuración para un PC que pretenda salir a través de un proxy con filtrado de contenidos, es decir, el segundo caso.

Lo primero que necesitamos es un servidor SSH en nuestra casa. En mi caso utilizo el Raspberry Pi a tal efecto ya que tiene muy bajo consumo. En la configuración del router ADSL tengo configurado un dominio de Dyndns y habilitado NAT para que las peticiones que se hagan al puerto 443 (Los proxys suele permitir salida por puerto SSL) se redirijan al puerto 22, estándar de SSH en la Raspberry Pi.

Esta es toda la configuración que tenemos que hacer en nuestro servidor.

Ahora queda la configuración de una máquina Linux, nuestro cliente. Necesitaremos instalar el cliente SSH y el corkscrew, que nos permitirá utilizar SSH a través del proxy.

Para automatizar el proceso he creado un cutre scritpt:


#Script para montar un proxy SOCKS a través de SSL
#!/bin/bash

#Máquina con la que conectar
HOST_NAME=XXX.homelinux.org
#Puerto a conectar
HOST_PORT=443
#Usuario
HOST_USER=XX

#Averiguar la IP
HOST_IP=`nslookup $HOST_NAME | tail -2 | awk -F ":" '{print $2}' | sed 's/^ *//g'`

#realizamos la conexión
ssh -o 'ProxyCommand corkscrew proxy.empresa.es 8080 %h %p' -p $HOST_PORT -D 8080 $HOST_USER@$HOST_IP

Por último lo único que nos queda es configurar nuestro navegador para que utilice un Proxy SOCKS en el puerto 8080 del localhost.

Sobre Bocabits

27 Oct

Una vez me contaron un chiste muy bueno y con el tiempo ha acabado resultando en el título de un blog:

 

¿Qué son 8 bocabits?

Un bocabyte!!!