Evitar websense con un túnel SSH

Websense es un sistema de bloqueo y filtrado de contenido web. Ignoro como funciona por dentro, pero sospecho que funciona en base a listas negras de sitios, filtrado de palabras y seguramente por IP's. Aparentemente también permite perfilar el acceso, por lo que es requerimiento un user y pass para poder conectarse. Para usuarios corrientes, es bastante efectivo como también molesto por sentir que lo están tratando como cabro chico (probablemente Carola se emputecería). ¿Como funciona?
Websense (o al menos yo espero eso del filtro) solo debiera dejar acceder al http y https a través de los puertos tradicionales (80 y 443 respectivamente). Accedemos a un servidor ssh a través del puerto 443. Como este puerto lleva tráfico encriptado, Websense no debiera gastar tiempo en analizarlo (antivirus, palabras para filtrar, etc). Abrimos una conexión ssh a nuestro servidor especificándole un puerto de destino (remoto, donde esta nuestro proxy) y cual será el puerto local (ahí tenemos nuestro túnel armado). Luego ajustamos nuestras aplicaciones para que usen nuestro nuevo proxy.
La receta es la siguiente. Ingredientes
  • Un servidor de ssh que pueda ser accedido por el puerto 443
  • El servidor ssh tiene que tener un proxy instalado
  • corkscrew para poder sacar la conexión ssh que está detrás del websense
  • Un cliente ssh, obvio

  • A cocinar En el servidor:
  • Redirigir el tráfico del puerto 22 al 443. También podemos cambiar el puerto del ssh. iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 443 -j REDIRECT --to-port 22
  • Instalar un proxy. Como yo tengo debian en mi servidor, instalaré tinyproxy usando apt. Tener en cuenta que tiniproxy corre en el puerto 8888 (lo ocuparemos más adelante) apt-get install tiniproxy

  • En el cliente:
  • Instalar el corkscrew para poder sacar el ssh por el proxy websense. Como yo tengo Ubuntu en mi equipo: sudo apt-get install corkscrew Hacemos unos ajustes para que use los datos para acceder al proxy websense: $vim ~/.corkscrew-auth y dejamos el nombre de usuario y password de la forma: usuario:password
  • Configuramos nuestro cliente ssh para que se conecte usando corkscrew, editando el archivo ~/.ssh/config y agregamos lo siguiente: Host * ProxyCommand corkscrew direccionproxy puertoproxy %h %p /home/usuario/.corkscrew-auth donde direccionoproxy hay que reemplazarlo por la dirección del proxy, puertoproxy por el puerto donde corre (pregunta esos datos al SysAdmin ;))
  • Si todo salió bien conéctate a tu servidor: ssh -l yo mi.servidor.com

  • Hacer la magia:
  • ssh -L 8888:localhost:8080 yo@mi.servidor.com -p 443 donde el valor para el parámetro -L es el puerto del servidor del proxy (8888 para tinyproxy por defecto) y el puerto del localhost:8080 sera el puerto para nuestro nuevo proxy. Tener en cuenta el valor para el parámetro -p que es el puerto donde corre el ssh.
  • Finalmente hay que ajustar nuestro navegador para que ocupe nuestro nuevo proxy, donde el servidor seria localhost y el puerto 8080.
  • Úselo con fines didácticos solamente ;) A ver si en el futuro cercano lo hacemos para Windows usando el putty.

    Añadir un comentario

    El código HTML se muestra como texto y las direcciones web se transforman automáticamente.

    Agregar un retroenlace

    URL de retroenlace : http://trasto.net/blog/index.php?trackback/7

    Arriba