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 (aproximes 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 solucionarte 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 Internet 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) estamos 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 establecemos 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 servidor 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:
- 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).
- 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 opciones: Instalar Cygwin e instalar el paquete de SSH, o bien instalar otro cliente de ssh como Putty o cualquier otro.
- Tener instalado un cliente SSH. En Linux es muy fácil y normalmente viene instalado por defecto, sino basta con teclear:
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 cuando 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):
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):