túneles SSH – proxy web sobre túnel SSH


Esta entrada es para documentar una aplicación práctica de los túneles SSH,
esquivar un filtro de contenido Web que puede estar en nuestro lugar de trabajo, instituto, … etc.

El objetivo de esta configuración es hacer un bypass del filtro de contenido web que pudieramos tener.

Se da por supuesto que el firewall de la izquierda (FW1) está mantenido por nuestra empresa o instituto, y que tenemos un servidor SSH en casa. En ese firewall se hace un filtrado de contenido web que no nos interesa por cualquier motivo, pero sí se permiten conexiones SSH al exterior.

Para hacer el bypass necesitaremos:

  • una conexión SSH al equipo de casa
  • un servidor proxy instalado tambien en el equipo de casa

y poco más…

Pasos:

  1. Instalar un servidor proxy en casa. La opción más popular en linux es squid. Para instalarlo en debian basta con:
  2. hostname:/etc/init.d# apt-get install squid
    Leyendo lista de paquetes... Hecho
    Creando Árbol de dependencias... Hecho
    Paquetes sugeridos:
    squidclient squid-cgi logcheck-database resolvconf smbclient
    Se instalarán los siguientes paquetes NUEVOS:
    squid
    0 actualizados, 1 se instalarán, 0 para eliminar y 4 no actualizados.
    Necesito descargar 654kB de archivos.
    Se utilizarán 1647kB de espacio de disco adicional después de desempaquetar.
    Des:1 ftp://ftp.fr.debian.org etch/main squid 2.6.5-6 [654kB]
    Descargados 654kB en 5s (110kB/s)
    Preconfigurando paquetes ...
    Seleccionando el paquete squid previamente no seleccionado.
    (Leyendo la base de datos ...
    18700 ficheros y directorios instalados actualmente.)
    Desempaquetando squid (de .../squid_2.6.5-6_i386.deb) ...
    Configurando squid (2.6.5-6) ...
    Restarting Squid HTTP proxy: squid.

    Nota: Por defecto Squid escucha las conexiones en el puerto tcp/3128.

  3. Establecer una conexión SSH con túnel outgoing desde p.ej. localhost:8080 a localhost:3128
  4. Configurar el browser para que use como proxy localhost:8080
  5. En firefox: Herramientas, Opciones, pestaña Red, Configuración

Con esto, ya tenemos la configuración que queríamos. Todas las conexiones de ese browser se hacen contra el proxy (localhost:8080), que al estar tunelado al equipo de casa (localhost:3128), las recibe el servidor proxy de nuestra casa. Las conexiones salientes que eventualmente vería el operador del firewall serían de tipo SSH. Una vez la conexión ha llegado al servidor proxy de casa, salen desde ahí hasta la página en cuestión. Como comprobación podemos ver los logs del proxy:

hostname:/var/log/squid# tail -f access.log
1193495648.731 663 127.0.0.1 TCP_MISS/200 552 GET http://suggestqueries.google.com/complete/search? - DIRECT/66.102.9.99 text/javascript
1193495649.057 528 127.0.0.1 TCP_MISS/302 749 GET http://www.google.com/search? - DIRECT/64.233.183.147 text/html
1193495650.478 826 127.0.0.1 TCP_MISS/200 5826 GET http://www.google.es/search? - DIRECT/64.233.183.147 text/html
1193495653.311 1659 127.0.0.1 TCP_MISS/200 15658 GET http://finance.yahoo.com/q? - DIRECT/206.190.56.229 text/html
1193495667.809 1155 127.0.0.1 TCP_MISS/200 767 GET http://mail.google.com/mail/? - DIRECT/209.85.137.18 text/javascript
1193495672.055 403 127.0.0.1 TCP_MISS/200 438 POST http://mail.google.com/mail/channel/bind? - DIRECT/209.85.137.83 text/html
1193495731.631 977 127.0.0.1 TCP_MISS/503 1460 POST http://mail.google.com/mail/channel/bind? - NONE/- text/html

Donde podemos apreciar que la IP de origen que aparece en el proxy es 127.0.0.1, y una salida de netstat en el cliente nos lo confirmaría.

Aunque si lo único que queremos es salir por un proxy rapidamente, es más simple este metodo alternativo.

One Response to “túneles SSH – proxy web sobre túnel SSH”

  1. […] Si te animas a instalar un proxy, debes considerar que debes conectarte a un PC que este las 24 horas prendido, o al menos este prendido cuando quieras hacer uso de la conexión. Aquí hay una guía para valientes. […]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: