Proxy Web sobre SSH

Y bien, volviendo a los temas originales del blog esta vez explicare como usar como un proxy web cualquier servidor al que tengamos acceso via ssh.

Las conexiones ssh son tuneles entre dos computadores (cliente y servidor) que permiten una comunicacion segura entre estas. Yo lo utilizo para configurar remotamente servidores linux y para transferir archivos al servidor de hosting que aloja este blog. Pero el potencial de ssh va mas alla. Lo que vamos a intentar ahora es usar este canal para salir a internet.

Esto es util en los siguientes casos:

  • Te encuentras en una red detras de un proxy y no te deja entrar a… facebook, youtube, etc.
  • Estas conectado a una red wi-fi sin proteccion y quieres proteger tus datos (con ssh todo va encryptado).
  • Deseas tener acceso a contenido que no se encuentra disponible en tu region (pero si en la region donde se encuentra tu servidor ssh).

Para empezar, lo que se necesitas para este experimento es:

  • Un equipo corriendo un servidor ssh que se encuentre en un lugar accesible ( Puede encontrarse en tu misma red o contar con un IP publico para tener acceso a el desde cualquier parte).
  • Tener instalado Putty, si usas Windows o tu cliente ssh si usas Linux.

Nota: Yo tengo un hosting contratado con Dreamhost que me da acceso a mi servidor compartido Linux via ssh. Utilizare este servidor como ejemplo.

En Windows

Ejecutas Putty e ingresas la direccion de tu servidor en el campo Host Name (or IP Address). Asegurate que connection type tenga marcado SSH.

Pantalla inicial de Putty

Pantalla inicial de Putty

Esta primera pantalla es basica. Con llenar esto es suficiente para iniciar la conexion con el servidor pero para lograr lo que queremos hace falta algo mas. En el panel izquierdo ve a Connection > SSH > Tunnels.

En el grupo de campos llamado Add new forwarded port ingresa 8080 en el campo Source port y elije Dynamic de entre los botones de opcion para que quede tal como se ve en la siguiente imagen.

Configurando el nuevo tunel

Configurando el nuevo tunel

Una vez hecho esto dale en el boton Add. Esto ingresara la configuracion dada a la lista de tuneles que deben crearse al conectarse con el servidor. Veras un nuevo elemento con el nombre D8080

Con ayuda del panel izquierdo regresa a la pantalla inicial de Putty (Session) y dale un clic en el boton Open para empezar la conexion con el servidor. Luego de ingresar el nombre de usuario y clave y una vez que el servidor confirme que los datos son correctos Putty redireccionara todos los paquete enviados al puerto 8080 local hacia el servidor.

En Linux

Pues es mas simple. Tan solo corres el siguiente comando:

ssh -D 8080 username@servidor_ssh

Donde el numero seguido de -D es el numero de puerto que se quiere crear, username un nombre de usuario valido y servidor_ssh es la direccion del servidor. Presionas <enter> e ingresas la clave para completar la autenticacion.

Configurar el proxy en el navegador

Yo usare Firefox pero tu puedes usar cualquiera. Te vas al menu Herramientas > Opciones > Avanzado > Red > Conexion > Configuracion y dejas los campos tal como vez en la imagen siguiente.

Configurando un proxy Socket en Firefox

Configurando un proxy Socket en Firefox

Guardas los cambios y firefox saldra a internet por el tunel con tu servidor remoto.

Hacemos la prueba?

Sin el proxy (saliendo a internet con trafafonica)

Salida normal a internet, directamente a traves del router

Salida normal a internet, directamente a traves del router

Y este es el resultado saliendo a traves de xxx.dreamhost.com.

Usando dreamhost.com como proxy

Usando dreamhost.com como proxy

Notas

  • Este proceso redireccionara todo el trafico del browser por este tunel la resolucion de nombre de dominio las seguira haciendo por la via habitual. Si estas detras de un proxy que te bloquea el acceso por el nombre de dominio que utilices necesitas activar la opcion set network.proxy.socks_remote_dns de firefox entrando a about:config para resolver los nombres por el mismo tunel.
  • La version de Putty a la fecha de creacion de este post es la 0.60.

2 Respuestas

  1. manuel dice:

    cual es el login as

  1. 12.10.2010

    […] unos dias publique un minituto para usar una conexion ssh cualquiera para salir por ella a internet. Lo que no explique en ese post es que hacer cuando el proxy tambien funciona como un servidor […]

Deja un comentario