Links

No podés pasar por un firewall??? Este es tu post!

Bueno gente, el otro día estuve buscando data sobre este tema y me encontré con esta guía:
http://www.buzzsurf.com/surfatwork/
Me imagino que ya debe haber unos cuantos que la conocen; para los que no les explico rápidamente como hacer para conectarse a través del firewall ...
Basicamente la guía en cuestión dice como hay que hacer para:
- ejecutar un servidor SSH en una pc
- usar un cliente SSH en la pc dentro de la red con el proxy para crear un tunel entre una pc externa y la pc dentro de la red
- habilitar un redireccionamiento dinámico en el cliente SSH para simular un SOCKS proxy
- configurar el browser para usar el SOCKS proxy para el tráfico de la red en vez de conectarse directamente

Antes de empezar aclaro que para poder usar esta solución hace falta tener una pc fuera de la red con el proxy que cumpla con estas tres cosas:
- que se pueda dejar prendida todo el tiempo mientras se está utilizando la pc que está atrás del proxy
- que tenga una conexión a Internet "rápida"; cualquiera que tenga cable o ADSL es suficiente
- Windows NT, 2000 o XP (aclaro que el Windows es necesario para instalar el SSHWindows, pero no es la única plataforma donde se puede ejecutar un servidor SSH; sino me retan los linuxeros)

1)Primero que nada van a tener que instalar un servidor SSH en la pc externa a la red con el proxy a puentear. Este es el que recomienda la guía y el que voy a usar yo para explicar:
http://sshwindows.sourceforge.net/
2)Después que instalaron el soft tienen que cambiar el puerto que viene por default. Para esto editen el archivo
\etc\sshd_config y cambien la línea que dice "#Port 22" por "Port 443" (es sshd_config, no ssh_config)

Se utiliza el puerto 443 porque ese puerto junto al 80 son los únicos puertos que no están bloqueados por el firewall. Se prefiere el 443 sobre el 80 porque el 443 es el utilizado por los sitios web encriptados (que es como se va a ver el tráfico de nuestro tunel a medida que pasa por el firewall. Si tienen problemas con el puerto 443 pruebenlo en el 80. Si ninguna funciona, fuiste.

Sino tienen al menos un usuario creado en el windows este es un buen momento para crearlo porque este servidor utiliza esos usuarios para su login

3)Abran la consola de windows y busquen el directorio \bin
4)Ejecuten los siguientes comandos:
mkgroup -l >> ..\etc\group
mkgroup -d >> ..\etc\group
mkpasswd -l [-u ] >> ..\etc\passwd
mkpasswd -d [-u ] >> ..\etc\passwd
5) Listo! Ahora cada vez que quieran acceder a un sitio externo a la red con el proxy a puentear tienen que arrancar, previamente, el servidor desde la consola con el comando "net start opensshd"
Para detener el servidor, nuevamente desde la consola, ejecutan el comando "net stop opensshd" y listo.
Una vez que se encuentran usando la pc dentro de la red con el proxy siguen así:
6) Tienen que ejecutar el PuTTY. Pueden bajarlo de http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
7) Una vez que arrancaron el PuTTY tienen que ingresar estos parámetros:
- en la categoría "Session" introducen en el campo "Host Name" la ip de la máquina (en este caso uso meramente como ejemplo 192.168.0.1) donde instalaron el servidor SSH
- en el campo "Port" ponen como puerto 443

- en la categoría Connection/Proxy eligen en "Proxy type" la opción "HTTP"
- en el campo "Proxy hostname" ponen la ip del proxy de la red (pongo 10.1.1.1 como ejemplo)
- en el campo "Port" ponen el puerto del proxy de la red (pongo 8080 como ejemplo)

- en la categoría Connection/SSH/Tunnels ingresan en el campo "Source port" algún puerto libre de la pc (en la mayoría de los casos cualquiera de los que están por encima de 1024 les tiene que servir). Voy a utilizar el 9090 para dar un ejemplo concreto.
- debajo de "Destination" eligen la opción "Dynamic" y después le dan click al botón "Add"

Tiene que quedar así:

- vuelven a la categoría "Session" y le dan click al botón "Save" así les queda almacenada toda la configuración que acabamos de ingresar en este programa.

- por último le dan click al botón "Open" y si todo fue bien se va a abrir una ventana similar a la consola de Windows pidiendo que ingresen un usuario y una password. Acá ponen el usuario y password de alguno de los usuarios del Windows donde instalaron el servidor SSH

Ya queda poco. El último paso consiste en ingresar en el browser y configurarlo para que utilize al PuTTY como proxy.
Con el Internet Explorer esto se hace yendo a Herramientas/Opciones de Internet/Conexiones/Configuración de LAN.

Ahí le dan click a la casilla "Servidor proxy" y después a "Opciones Avanzadas".

En "Opciones Avanzadas" solo tienen que poner como ip 127.0.0.1 y como puerto 9090 (o el que hayan elegido) en el campo "Socks:", le dan click a "Aceptar" y listo.

Con el Firefox tienen que ir Herramientas/Opciones/Avanzado/Red/Configuración...

y después eligen la opción "Configuración manual del proxy" y ponen como ip 127.0.0.1 y como puerto 9090 (o el que hayan elegido) en el campo "Servidor SOCKS:", le dan click a "Aceptar" y listo.

Con el Opera no se puede
Con esto ya están en condiciones de utilizar la conexión de la pc externa como si fuera la conexión de la pc donde están ahora

Una vez que tienen el servidor SSH andando el PuTTy puede tunelear cualquier aplicación que utilice SOCKS. Esto significa que si quieren, por ejemplo, pueden acceder a un servidor VNC fuera de la red. Si hay algún interesado acá tienen la info (en inglés):
http://martybugs.net/smoothwall/puttyvnc.cgi