Como saltarse el proxy del trabajo

En mi trabajo usan un servidor proxy para salir a Internet. Con este controlan que páginas no podemos ver y que servicios no podemos usar (streaming, Messenger…). Solo me permiten salir al exterior a través del proxy y con destino el puerto 80 (HTTP) o 443 (HTTPS).

En una tarde de aburrimiento decidí “investigar” como burlar el proxy. La cosa es bastante fácil si tenemos todo lo necesario.

Necesitamos:

  • Una maquina en el exterior con servidor SSH
  • La maquina de antes debe tener un proxy instalado
  • Si la maquina del trabajo es Windows debemos añadir Cygwin

Lo fácil seria conectarnos a una maquina del exterior a través de SSH y hacer que esta haga de proxy para darnos salida a Internet. Como ha he dicho solo puedo salir por el proxy así que necesito crear una sesión SSH a través de proxy, para eso usaremos Corkscrew. Si nuestra maquina del trabajo es Linux debemos instalar Corkscrew, si usamos Windows podemos usar Cygwin e instalar Corkscrew. Creamos el script y lo guardamos en $HOME/.ssh/ConexionServidorCasa:

# Linea para arrancar Corkscrew cuando uso ssh

ProxyCommand /usr/bin/corkscrew <IP PROXY> <PUERTO PROXY> %h %p

Si el proxy requiere usuario:

# Linea para arrancar Corkscrew cuando uso ssh

ProxyCommand /usr/bin/corkscrew <IP PROXY> <PUERTO PROXY> %h %p usuario:password

Otra limitación son los puertos, debemos configurar el servidor SSH para escuchar el puerto 443 (u 80). También podemos usar una regla PREROUTING de IPTables para redirigir el puerto y no tocar el servidor SSH. Sería algo así:

# Permitimos el trafico de entrada por el puerto 443

iptables -A INPUT -i eth0 -p tcp –dport 443 -j ACCEPT

# Redirigimos el trafico del puerto 443 al 22

iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 443 -j REDIRECT –to-port 22

Si hemos configurado todo correctamente podremos establecer la conexión SSH.

ssh -p 443 -F $HOME/.ssh/ConexionServidorCasa user@IP_servidor_exterior

Ahora estaremos conectados al servidor pero aún nos falta el último paso. Para poder usar el proxy del servidor vamos a crear un túnel a través de la conexión SSH. Con esto configuraremos nuestro navegador para usar el proxy localhost:3128, que se “encapsulará” a través de la conexión y acabara en el servidor, que lo redirigirá a su proxy y podremos salir a Internet sin restricciones. El comando, considerando que el proxy externo escucha el puerto 3128, es:

ssh -p 443 -F $HOME/.ssh/ConexionServidorCasa user@IP_servidor_exterior -L 3128:localhost:3128

Si alguien revisara los logs del proxy solo vería una conexión hacia nuestro servidor, nada más. Aunque si pusiera la IP en un navegador aparecería algo así:

SSH-2.0-OpenSSH_5.1p1 Debian-5

Lo que daría a entender al administrador que le estamos tomando el pelo, pero nunca podría ver el trafico, ni peticiones ni webs visitadas.

4 comments

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>