Evita que te espíen con un túnel SSH

Que las empresas espían el tráfico generado por sus empleados ya no es ningún secreto, o que si navegas desde un Cyber Café alguien puede estar espiando por que páginas navegas tampoco lo es.

Este post trata de explicar de manera sencilla como evitar todo esto, o al menos de como evitar ser espiado por elementos intermedios en la red (proxies transparentes de empresa, analizadores de tráfico, sniffers, …), dado que si tienes instalado en tu PC un troyano que analiza todo lo que tecleas o haces, este post no va a solucianarte nada.

CÓMO ACCEDEMOS A INTERNET

En una empresa, cuando accedemos a Internet (se entiende para navegar a un servidor web) para navegar a la web del Marca, creemos que pasa lo siguiente:

Es decir, esperamos que la petición HTTP viaje mágicamente por Internet hasta el Servidor HTPP, pero lo que realmente pasa es algo más parecido a lo siguiente:

El proxy de la empresa tiene varios cometidos (aunque originalmente un proxy no hacía tantas cosas):

  • Hacer una caché del tráfico, para evitar acceder a Internet si el Proxy ya ha servido dicho contenido previamente. Esto es bueno, y no hay demasiado problema (a no ser que no funcione bien, y el Proxy nos sirva contenido caducado…).
  • Filtrar contenido, de modo que la empresa pueda definir políticas de páginas web cuyo contenido quiere ser, al menos, bloqueado, y de este modo evitar que los trabajadores accedan a él; el típico ejemplo de esto es filtrar porno, webs de ocio, descargas ilegales, … Esto a priori no es del todo malo, dado que evita distracciones, pero la verdad es que a veces las personas que trabajamos en Ingeniería tenemos que buscar respuestas a preguntas que a veces se encuentran en foros o webs cuya reputación no es buena, y que por tanto han sido “bloqueadas” o metidas en “listas negras” por los programas de bloqueo que usan las empresas.
  • Finalmente, otro de los cometidos es la de espiar las páginas web a las que accede el personal de la empresa, para tomar medidas varias como sancionar, hacer despidos procedentes (ya hay jurisprudencia de empresas que han ganado el juicio, presentando como pruebas logs de dichos programas para demostrar que un empleado usaba el acceso a Intenet de la empresa para otros cometidos fuera de lo profesional), y un largo etc.

Si estás leyendo esto, te encuentras en alguno de los dos últimos supuestos, o al menos te pica la curiosidad científica de saber que hacer en estos casos, no?. Para que emplees este túnel no va a ser discutido aquí, sólo me encargaré de describir el mecanismo.

ARQUITECTURA DE LA SOLUCIÓN

La idea es acceder a Internet, pero sin que el Proxy de la empresa se entere qué páginas web (servidores) estámos accediendo, esto lo conseguiremos mediante el uso de un túnel SSH con un servidor remoto, esto puede verse reflejado en la siguiente arquitectura:

El meollo del asunto se encuentra en que estalecemos un túnel SSH entre nuestro PC (dentro de la red insegura de la empresa, si he dicho insegura, pero insegura para nuestra privacidad!) y un Sservidor SSH remoto (fuera de la red de la empresa claro!, sino no arreglamos nada!), de modo que todas las peticiones se propaguen a dicho servidor, y se hagan desde él, en vez de directamente desde nuestro PC, esto hará que nuestras peticiones viajen:

  1. Cifradas entre el PC y el Servidor SSH remoto, de este modo evitamos que nos espíe el Proxy de la empresa (o cualquier otro elemento intermedio).
  2. En abierto entre el Servidor SSH remoto y el Servidor Web al que queríamos acceder (cuando digo en abierto, me refiero a que los datos irán fuera del túnel, pero si estás accediendo vía HTTPS, es obvio que no irá en abierto).

REQUISITOS

Hay varios requisitos (todos ellos salvables) para poner esto en marcha:

  • Requisitos en el Servidor SSH:

    • Evidentemente disponer de un Servidor SSH en Internet (si no dispones de un servidor dedicado o algo parecido, puede hacerse fácilmente con un PC en tu casa conectado a Internet).
    • Tener una cuenta en la máquina para poder acceder por SSH.
  • Requisitos en el PC:

    • Tener instalado un cliente SSH. En Linux es muy fácil y normalmente viene instalado por defecto, sino basta con teclear: sudo apt-get install ssh. En Windows hay varias opciotes: Instalar Cygwin e instalar el paquete de SSH, o bien instalar otro cliente de ssh como Putty o cualquier otro.

CREAR EL TÚNEL

Lo primero es crear el túnel SSH, para ello desde del PC en una línea de comandos (si has instalado el Cygwin, desde la línea de comandos del Cygwin), y presuponiendo que tu cliente de SSH se llama ssh, hay que ejecutar la siguiente línea de comandos:

ssh -D 9999 -C usuario@servidor_ssh_remoto

Cuando nos pida la clave, la introducimos, y una vez iniciada la sesión, la dejamos iniciada todo el rato (mientras la sesión siga activa, el túnel seguirá vivo).

Esto crea un túnel hacia servidor_ssh_remoto (aquí pones la IP o nombre de tu servidor) con el usuario indicado, además abre el puerto 9999 (puedes usar cualquier otro, siempre y cuendo esté libre) y habilita la compresión (-C).

Por ejemplo para abrir un túnel a mi servidor con mi cuenta (la clave nos os la doy! 😉 ):

ssh -D 9999 -C emilio@ociotec.com

CONFIGURAR EL NAVEGADOR

El siguiente paso es configurar el Navegador Web en el PC para que use dicho túnel, para ello y dependiendo del navegador se hace lo siguiente:

  • Mozilla Firefox:

    • Abrimos el menú: Herramientas, Opciones…:
    • Seleccionamos la solapa Avanzado y dentro de esta la solapa Red y pulsamos el botón Configuración:
    • Seleccionamos la opción Configuración manual del proxy, luego rellenamos el texto Servidor SOCKS con el valor localhost, que es dónde está instalado el lado cliente del túnel (es decir, nuestro PC) y el texto Puerto a 9999 (el valor del puerto de escucha del túnel en el PC que antes hemos configurado), también se puede configurar que el túnel SSH no se use para determinadas direcciones (en el ejemplo figura localhost y su IP, pero puedes añadir otras direcciones de la red local de oficina, es decir, la Intranet de tu empresa):
    • Configuramos el navegador para tunelar también las peticiones DNS, para ello introducimos la dirección about:config en la barra de dirección, aceptamos la alerta de seguridad (si aparece) y buscamos la opción network.proxy.socks_remote_dns cambiamos su valor a true (haciendo doble click). Si este paso no se realiza sólo se tunelará el contenido de las peticiones, pero podrán ver que hacemos peticiones a un servidor u otro.
  • Internet Explorer:

    • Abrimos el menú: Herramientas, Opciones de Internet:
    • Seleccionamos la solapa Conexiones y dentro de esta la solapa pulsamos el botón Configuración de LAN:
    • Seleccionamos la opción Usar un servidor proxy para la LAN (…), luego pulsamos el botón Avanzadas:
    • Rellenamos el texto Socks con el valor localhost, que es dónde está instalado el lado cliente del túnel (es decir, nuestro PC) y el texto de la derecha : a 9999 (el valor del puerto de escucha del túnel en el PC que antes hemos configurado), también se puede configurar que el túnel SSH no se use para determinadas direcciones Excepciones (en el ejemplo figura localhost y su IP, pero puedes añadir otras direcciones de la red local de oficina, es decir, la Intranet de tu empresa):

6 comentarios

  1. federico dice: Responder

    saludos

  2. antonio dice: Responder

    Perdón pero algo no me queda claro…me explico: tengo un PC-A y un PC-B en casa, con el PC-A quiero navegar de forma privada a “www.cosas-prohibidas.com”(ejemplo) sin que el ISP pueda ver, ¿por lo tanto hago un tunel entre PC-A y PC-B para coultar a PC-A ?….Pero PC-B de igual manera saldrá hacia el ISP sin tunel
    ¿entonces como?
    ¿que es lo que no entendí?
    ¿no debiera el PC-B estar en otro país por ejemplo….o en otra ciudad…??

    Espero alguien me explique por que hoy ando lento de CI.

    1. antonio dice: Responder

      Sorry ya entendí (eso creo) por ejemplo: En el trabajo bloquean youtube entonces me hago un túnel entre el PC de la oficina y el PC de mi casa y configuro el navegador para que todas las consultas desde el navegador del PC de la oficina sean trasladadas por el túnel hasta el PC de mi casa, entonces el PC de mi casa busca el vídeo de youtube y lo manda por el túnel hasta el PC de mi oficina sin que la empresa se de cuenta ¿eso es? ¿espero que sea eso para no sentirme como el tonto mas tonto de los tontorrones…

      Si es así, me será muy útil pero tendré que usar “wakeonlan” para poder encender/apagar el PC de mi casa desde mi oficina con el fin de ahorrar luz en casa. Saludos.

  3. edgar dice: Responder

    Fo..ormidable. Con esta información me conecto a la intranet de mi empresa, pero esta vez desde mi casa. Gracias

  4. Thank you for the data on proxies. I’ve been researching proxies for a while now and can’t figure out which proxy is greatest for me to use. I included a hyperlink in my reference which gives an IP address to be entered in to unblock websites. I cannot determine if that is what I need to unblock websites.

  5. […] En particular, esto puede usarse para navegar por Internet, directamente como si se navegara desde la máquina a la que te conectas con ssh. Tremendamente recomendable el artículo del blog de mi amigo Emilio sobre como hacer esto: http://ociotec.com/evita-que-te-espien-con-un-tunel-ssh/ […]

Deja un comentario