Navegando de forma segura, con SSH y SQUID

Escrito el 26 Agosto, 2007 – 6:34 | por simon | 6.277 lecturas

Las conexiones inalámbricas están disponibles por todos lados (bares, aeropuertos, baños), y obviamente, están para que las usemos. Pero también, al usar estas redes publicas, estamos exponiendo nuestros datos a quien tenga el control sobre dicha red. Para evitar esto, vamos a explicar como navegar de forma segura, usando SSH y Squid.

Al navegar, conectarte en un sitio, chequear tu correo, etc, cualquier persona conectada a la misma red WiFi, puede capturar los datos con un proceso tan simple, como correr un sniffer.

La idea de este articulo, es montar un proxy (Squid) en un servidor propio que tengamos por ahí tirado, (el típico firewall hogareño) y cuando utilicemos una red WiFi desde nuestra laptop (fuera de casa, como ser un aeropuerto, en medio de una montaña, etc.), lo que haremos es:

  • Conectarnos a nuestro server via SSH (así abrimos un túnel a nuestro servidor proxy)
  • Configuramos nuestro browser (que a esta altura ya debería ser Firefox por defecto) para usar como servidor Proxy, el puerto 3128 de nuestra máquina (localhost, que en realidad es el túnel a nuestro servidor).
  • A partir de ese momento, todo lo que hagamos con el browser, va directo por SSH a nuestro servidor, y desde ahi si, navegamos normalmente. Por lo tanto el trafico de la red WiFi a nuestro proxy, va encriptado.

Cabe aclarar que por supuesto, estaremos usando la conexión de Proxy para navegar, con su IP, su ancho de banda, etc, por lo que será un poco mas lento, pero a su vez seguro.

Comencemos…

1) Instalamos el proxy http …

Vamos a usar Squid (aunque funcionaría con cualquiera). En Debian, instalarlo, es tan complicado como ejecutar:

# apt-get install squid

Luego, debemos editar el archivo /etc/squid/squid.conf y debemos setear mínimamente las siguientes variables:

visible_hostname NOMBRE_HOST
acl localhost src 127.0.0.1/255.255.255.255
http_access allow localhost

Donde NOMBRE_HOST es el nombre de host del servidor proxy (ponele sarasa, y va a funcionar igual..)
En este ejemplo, vamos a permitir solo acceso al Squid, desde localhost (desde tu mismo servidor unicamente). (Yo no uso este Squid para nada mas, asi que son las unicas reglas que tengo, si queres que otras maquinas de tu LAN accedan, deberias agregar otras rules)

Una vez que terminaste de editar todo, guardamos el archivo y reiniciamos el Squid.

# /etc/init.d/squid restart

Si todo resulto bien, deberías ver con un ‘ps ax’ los procesos de Squid corriendo. Ejemplo:

# ps ax


20786 ? Ss 0:00 /usr/sbin/squid -D -sYC
20788 ? S 0:00 \_ (squid) -D -sYC
20790 ? Ss 0:00 \_ (unlinkd)

Para probar si funciona, en la máquina donde instalaste el squid, podes configurar un browser como ser ‘elinks’ para usar tu proxy.

Para eso haces:

(fijate si ya tenes el archivo ~/.links/elinks.conf. Si existe, editalo, sino, hace lo siguiente..)

echo “protocol.http.proxy.host 127.0.0.1” > ~/.links/elinks.conf

Luego, cargas el elinks y pones una direccion que no exista, como ser:

# elinks www.l0l0l0l0l0l0l0l0l0l0l0l0l0l0l0l0l0l0l0l.com

Y eso te deberia mostrar un mensaje del tipo:

The requested URL could not be retrieved


Generated Sun, 26 Aug 2007 08:20:41 GMT by HOST (squid/2.8.STABLE19)

y si intentas navegar, deberías poder navegar sin problemas (siempre desde el elinks claro)

Si hasta aca no funciono algo, no sigas. Googlea un poco y fixea la configuración de Squid,hasta que
logres navegar desde el elinks. http://www.google.com/search?hl=en&q=squid+howto&btnG=Search

Acordate siempre que estamos configurando Squid, para utilizarlo desde 127.0.0.1, es decir, localhost desde tu servidor.
Si querés usarlo desde otra máquina de la LAN, deberías agregar los htpp_access adecuados.


2) Configurar SSH en tu servidor…

Esto en la mayoría de los servidores, ya esta activo.. pero bueno por ahi no lo tenés.
Básicamente, tenés que lograr entrar desde cualquier maquina, a tu servidor por SSH.
Aca hay un tutorial bastante completo: http://wiki.debian.org/AccesoRemotoSSH
Suerte! 😉

3) Configurar tu Firewall…

Seguramente tu servidor va a tener un Firewall. Lo único que necesitas habilitar es el acceso al SSH (puerto 22 por defecto). El Squid dejalo cerrado/bloqueado, ya que a el te vas a conectar únicamente via el SSH.


Una vez terminados estos pasos, estamos listos para conectarnos desde cualquier lado.

El proceso es el siguiente…

1.- Conectate a la red WiFi que querés y proba de navegar (entra a www.google.com, solo para ver si anda… )

2.- Una vez conectados, necesitamos establecer el tunel SSH contra nuestro servidor .. para eso necesitamos:

En Windows:

La herramienta ‘plink’ que viene con el Putty SSH, podés bajarla de aca : http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html .
Guarda el archivo plink.exe en C:\WINDOWS (asi ya queda en el path)

Una vez bajado, creamos un archivo BAT (Botón derecho sobre el escritorio, Nuevo, Documento de Texto) y le ponemos como nombre ‘sshtunnel.bat’. Terminado eso, hacemos click con el botón derecho sobre sshtunnel.bat y elegimos ‘Editar’.

En el editor ponemos algo como:

@ECHO OFF
C:\WINDOWS\plink.exe -P 22 -batch -N -l USUARIO -pw PASSWORD -L 3128:localhost:3128 SERVIDOR

En donde:

-P 22:
es el puerto donde esta atendiendo el SSHD
USUARIO: tu usuario en el servidor proxy que corre el SSHD..
PASSWORD: y si….. el password de tu usuario en el servidor proxy que corre el SSHD.. (si no lo pones, te pregunta)
SERVIDOR: la IP o el hostname de tu servidor.

A partir de ahora, cada vez que querramos activar el túnel, solo debemos ejecutar el archivo que acabamos de crear.

(te recomiendo que primero lo pruebes abriendo una ventana de DOS y tipeando el comando a mano ahi, a ver si da algún error)

Si todo funciona bien, debería quedarte una ventana de DOS abierta, con el SSH activo.

En Linux

Lo unico que necesitas hacer es correr:

ssh -L 3128:localhost:3128 SERVIDOR -f -N

En donde SERVIDOR es la direccion / hostname de tu servidor.
Eso va a ejecutar una sesión de SSH (previo pedirte user/password) en segundo plano (chequea que haya quedado corriendo con un ‘ps ax’)

3.- Configurar el browser de tu laptop para usar el tunel al proxy.

Para eso debes especificar como proxy HTTP: 127.0.0.1 puerto 3128En Firefox:

Tools -> Options -> Advanced (tab) -> Network (tab) -> Settings -> Manual Proxy Configuration ->
HTTP Proxy: 127.0.0.1 Port: 3128

En IE7:

Tools -> Internet Options -> Connections -> LAN Settings -> Tildar ‘Use a Proxy server..’

Address: 127.0.0.1 Port: 3128

Eso es todo. ya deberías poder navegar desde la Laptop, a travez de tu proxy.

Para probarlo pone cualquier direccion q no exista, como hiciste en el paso (1) y deberia saltarte el mensaje de error del Squid. Si pones una dirección válida, deberias navegar normalmente.

Volver todo atras…

Ok, todo funcionó fantastico.. pero ahora volviste a tu casa.. asi que queres navegar normalmente..
Lo unico que tenes que hacer es: cerrar la ventana del SSH y cambiar la configuración del Browser (sacar el proxy)
Eso es todo.
(hay una plugin para el Firefox, que te permite cambiar del Proxy con hacer solo un click, SwitchProxy, lo cual lo hace mas facil todavia)

Las siguientes veces, lo unico que tenes que hacer es..

(En teoria el Squid y el SSH ya estan corriendo en tu servidor, asi que no deberias hacer nada de ese lado)

1- Prendes la laptop y te conectas a la red WiFi
2- Ejecutas el sshtunnel.bat
3- Cambias la configuración del proxy en tu Browser.
4- Navegas..

Concluciones & etc…

En verdad, no solo sirve para WiFi, la idea es navegar de forma segura, no importa donde estes. Tambien podrías hacerlo desde tu trabajo, para que no puedan ver que estas haciendo (solo ven una conexión al SSH tu casa)

Obviamente hay formas de hacerlo mas práctico / seguro (usando keys para la conexión de SSH, seteando para que cambie el proxy directamente, etc.  pero bueno, la idea era una explicación básica.

Espero que les sirva..

Storm Night (storm at malditainternet.com)

You must be logged in to post a comment.

Buscar: