Bienvenido!

¡Se bienvenido!

viernes, 10 de diciembre de 2010

Cómo hacer un túnel SSH para saltarse un proxy

Es muy normal tener un proxy en la empresa (transparente) que no te permite acceder a las páginas web que los administradores crean que no debes. El problema es que esto se hace con categorías y a menudo incluye páginas que son buenas o que puedes necesitar para trabajar.

Aquí escribo una guía de como conectarte a cualquier PC de fuera y saltártelo.

Requerimientos para poder hacerlo (al menos el método que conozco yo):

  • Ordenador accesible donde sea, en tu casa, o de un conocido, o un servidor que tengas alquilado, etc.
  • Posibilidad de crear conexiones SSH desde el lugar donde esté el proxy hasta el servidor del punto 1.
Si se cumplen los requisitos previos, puedes montar el mecanismo, el cual consta de un servidor de SSH y un PuTTY.

El funcionamiento es el siguiente: el pc limitado (llamaré así al que sufre el proxy) hace una conexión por SSH al servidor externo, pero no es una simple conexión, si no que además el PuTTY puede crear un túnel SSH. Ésto es: todo dato que se "tuneliza" es encapsulado en paquetes SSH (esto implica que están cifrados y ni el tato puede leerlos) y sale por el otro lado, que es el servidor adonde nos conectamos.

- Forma de configurar el servidor para que acepte estas conexiones con túnel:

Hay varias opciones: Si el servidor es un sistema Linux (Unix), basta con instalar el servidor de SSH de la distribución, que seguramente será el OpenSSH (sshd). Una vez instalado (si no lo está ya), hay que tocar el fichero de configuración 'sshd_config', que suele estar en '/etc'. Dentro, hay que reiniciar el servicio después de añadir esta línea:

     AllowTcpForwarding yes

Segunda opción: El servidor es un sistema Windows. Podemos elegir usar VMware con un Linux corriendo dentro o usar Cygwin. En el primer caso bastaría con configurar el linux del VMware tal y como dice el punto anterior, y en el caso de usar Cygwin, los pasos son similares, configurar el sshd_config y reiniciar el sshd. Algún día pondré una guía de como montar el sistema Cygwin :)

- Forma de configurar el PuTTY:

Lo primero es probar que llegamos al servidor externo por SSH (por defecto, el puerto 22, pero si lo cambiamos en el servidor, también debe funcionar). Abrimos el PuTTY y en la línea de conexión hay que poner la ip o nombre DNS del servidor y poner el puerto (seleccionando tipo SSH). Si podemos conectar, todo perfecto porque entonces funcionará :)

Ahora falta añadir la funcionalidad de proxy socks a la conexión por PuTTY. A la hora de conectar, tenemos una lista grande a la izquierda, en la que hay que buscar la categoría SSH, desplegarla y pinchar en Tunnels. Una vez allí, tenemos que escribir en "Source Port" un nº de puerto que nos guste, que sea alto y que no esté en uso por nada más. Dejamos "Destination Port" en blanco, y seleccionamos los 'radiobuttons' Dynamic y Auto. Pulsamos en Add y debe de salir en la lista de arriba el nº de puerto con una D delante: DXXXX

Existe un tick arriba del todo que es para permitir las conexiones desde otros hosts. Ésto vale para que un solo PC haga la conexión SSH y cualquier otro pc de la red local lo use como proxy de salida en vez de que cada uno haga una conexión SSH. Si el tick no está puesto, solo te deja conectarte desde tu propio PC.

Recomiendo salvar estas opciones en la sección "Session" del PuTTY. Se salva poniendo un nombre a la conexión en el campo "Saved sessions" y dando al botón Save (no olvidar poner la dirección y puerto arriba).

Ahora tenemos un proxy de tipo Socks v5 sin autenticación en nuestro PC, que vale para cualquier programa que permita conectarse por un proxy SOCKS.

- Cómo configurar el Firefox o cualquier otro navegador para usar el proxy socks:

En Opciones -> Red -> Configuración hay que poner las siguientes opciones:

Configuración manual del proxy:

- Proxy HTTP vacío
- Quitar el tick "Usar el mismo proxy para todo"
- Proxy SSL vacío
- Proxy FTP vacío
- Servidor SOCKS: 127.0.0.1 puerto: El que se puso en PuTTY
- SOCKS v5
- No usar proxy para: Direcciones web, ip's y dominios para los cuales no queremos usar el proxy (direcciones de red local, por ejemplo).

Con eso basta para navegar a través del proxy :)

Dejad cualquier comentario sobre el artículo, y si tenéis sugerencias de como mejorarlo, mejor :)

19 comentarios:

algoritmo dijo...

molaaa gracias!!!!!!!!!!!

Alberto Salinas dijo...

De nada :)

cyberalejo17 dijo...

Sabes si es posible instalar el servidor ssh bajo windows?

Alberto Salinas dijo...

Sip, realmente necesitas un software servidor de SSH que permita TCP Port Forwarding. El mejor que yo sepa, es openssh y es nativo de linux, pero si instalas cygwin (un entorno para hacer funcionar software de linux sobre windows), puedes hacer rular el 'sshd' y te valdría igual :) De hecho, lo tengo instalado en mi windows.

Saludos

cyberalejo17 dijo...

Muchas gracias por tu respuesta :D

Tengo otra pregunta....

Sabes que tan útil son htthost y httport para realizar esto?
Y dónde los puedo encontrar? ya que la página oficial.... no existe según mi DNS.

cyberalejo17 dijo...

en http://lopezivan.blogspot.com/2007/01/httport-htthost-o-cmo-saltarse-proxy.html hay un tuto sobre esas utilidades.... pero aplicadas hacia vnc, pero supongo que se podrá usar para puerto 80, es decir saltar restricción de páginas como taringa dentro del proxy de la universidad.
Incluso, descargar archivos pequeños de MU, MF RS....

Alberto Salinas dijo...

Efectivamente en el blog que enlazas se puede hacer lo mismo que explico yo aquí :) No conocía esos dos programas y parece que el tema funciona bastante bien.
Parece que puedes asignar cualquier puerto, por tanto, mira mi configuración para el Firefox en la entrada e intenta usara para HTTPort a ver si con eso navegas a través del proxy.
Gracias por el link!

cyberalejo17 dijo...

Pero.... tienes esos programas? porque en esa página no me deja bajarlos, al parecer hay algún problema con mi DNS, o es que borraron la página....

He buscado en diferentes blogs y foros, pero no encuentro el link de descarga.

Alberto Salinas dijo...

Pues buscando el HTTPort por Google lo he encontrado aquí:

http://www.brothersoft.com/httport-10719.html

La web oficial www.htthost.com no funciona, no es por tu DNS :)

Si la versión de ese link no es la última, buscalo por Google que aparece en varias webs de descarga.

cyberalejo17 dijo...

Muchas gracias.

Anónimo dijo...

Hola! es un poco tarde para que me contestes pero lo voy a intentar xd. aunque hiziera todo esto seguiria teniendo el mismo problema. y que pasa con las aplicaciones que necesitan internet y no estan programadas para que se pueda configurar el proxy? porque firefox si, skype si, pero si quiero jugar online por ejemplo?

Alberto Salinas dijo...

Buenas!

Cuando investigué como hacer el tunel, alguien ya planteó ese problema y otro le dió una solución que consiste en establecerle a Windows de alguna forma que todas las conexiones que se hagan van a pasar por un proxy, pero no conozco el mecanismo para hacerlo, sorry :(

Me suena que tenía algo que ver con el registro de Windows, pero no se más.

Un saludo!

Alberto Salinas dijo...

No me deja editar mi comentario :D

Si es un juego específico, puedes averiguar a que dirección IP te vas a conectar y entonces sí hay una forma.

Si es tu caso, te explico como es :) (a grandes rasgos, consiste en hacer una conexión de red falsa y asignarle la IP a la que quieres conectar, y luego con eso usar el PuTTY para redirigir).

Anónimo dijo...

Me cachis... Resulta que estoy en Alemania de Erasmus y en la universidad tienen un proxy web con limitacion de 5 gigas al mes...El juego es League of legends y estaria muy bien que me echara aqui mis partidas... Lo curioso es que soy Ingeniero Tecnico de Informatica estoy estudiando Ingenieria Informatica y todavia no he conseguido saltarme el proxy para jugar al League of legends... He estado investigando y este juego hace bastantes conexiones es decir por distintos puertos. Entonces si hiziera todo esto seguiria teniendo un proxy(aunque ya no tendria limitacion) pero seguiria sin poder jugar.

Alberto Salinas dijo...

Yo lo que hice fue buscar como jugar al WoW a través de un proxy y encontré a uno que encontró la forma, busca específicamente sobre LoL a ver si encuentras algo :)

Anónimo dijo...

acabo de encontrar la solucion...
Programa allproxy...Pones el proxy y todos los programas funcionan

Alberto Salinas dijo...

Me alegro entonces :) Tomo nota del programita

Anónimo dijo...

Buenas noches.

he estado leyendo los comentarios, y me ha interesado el ultimo donde el chico / a comenta que uso el programa allproxy podríais darme mas info de ese programa. Tengo curiosidad por ver como funciona

gracias

Alberto Salinas dijo...

A ver si con un poco de suerte se suscribó al post y te lee, porque yo no lo he usado y por tanto no se nada acerca del programa :(

Publicar un comentario

Se respetuoso y escribe en español correcto please!!