Una característica interesante en TOR es la capacidad de crear servicios “ocultos” entre los usuarios de la red, brindando así acceso a mensajería instantánea, servidores web, acceso a servicios de administración entre otros, todo esto sin dejar al descubierto la ubicación real de la máquina que presta el servicio. Para conseguir este nivel de anonimato, TOR emplea un formato de direcciones *.onion que permite que dichos servicios se encuentren disponibles de forma anónima por medio de la red TOR. Ahora, para dejar los conceptos claros, la mejor forma es enseñando con un ejemplo sobre cómo se pueden crear servicios a los que podrán acceder otros usuarios sin exponer la dirección IP de la máquina donde se encuentra en ejecución dicho servicio. En este caso concreto, se instalará Tomcat 7 como servidor web y posteriormente se publicará dicho servicio en TOR, para esto se siguen los siguientes pasos:
1. Instalar el servidor web Tomcat, el cual es un motor de Servlets y JSP de Java, se trata de una clase de servidor web que actualmente se encuentra muy difundido entre los desarrolladores web de Java ya que es una buena solución para crear aplicaciones web de forma rápida y con una carga muy ligera en la máquina donde se ejecuta, es ideal para aplicaciones de pequeña y mediana escala, pero no es del todo recomendable para entornos empresariales donde se deben cumplir con ciertos requerimientos de disponibilidad, desempeño y fiabilidad. Para instalar Tomcat bajo plataformas basadas en Linux, es necesario descargar la distribución binaria “core” desde aquí: http://tomcat.apache.org/download-70.cgi (pulsar sobre tar.gz). Para maquinas basadas en Windows se descarga el ejecutable y se sigue el asistente de configuración de la instalación del servicio windows.
Una vez descargado y descomprimido, el directorio puede ubicarse en cualquier sitio del sistema de ficheros. Es necesario tener instalada la maquina virtual de Java en el sistema (JDK y JRE). En el caso de que no se tenga instalado, puede ejecutarse el comando:
|
Sin embargo, si se desea se puede instalar manualmente simplemente con descargar la ultima versión del JDK desde el sitio de Oracle y posteriormente establecer el classpath.
Es necesario exportar la ruta de instalación del JDK ya sea que se haya instalado desde APT o se haya hecho desde un paquete descargado manualmente, para esto es necesario establecer la ruta del classpath en el fichero ~/.bashrc al final de dicho fichero escribir la siguiente linea (en el caso de haber utilizado el comando “APT-GET” para instalar la maquina virtual de Java:
|
Si se ha descargado desde un paquete manualmente, se establece la ruta donde se encuentra ubicado.
Finalmente, solamente basta con navegar hasta el directorio “bin/” y desde allí localizar los scripts “startup.sh” y “shutdown.sh” los cuales inician y detienen el servidor respectivamente.
|
Si se ha iniciado correctamente el puerto 8080 se debe encontrar abierto y esperando conexiones
|
Finalmente, para comprobar que el servicio realmente se encuentra en ejecución, ingresar en la ruta del navegador web http://localhost:8080 se debe poder apreciar el logo de Tomcat indicando que el servidor se encuentra levantado.
Para las tareas de administración, es necesario incluir a un usuario en el rol “manager-gui”, la definición de roles y usuarios se encuentra ubicada en el fichero de configuración “<INSTALL_DIR>/conf/tomcat-users.xml” el contenido para permitir al usuario “tomcat” con password “tomcat” acceder a la consola de administración del servidor seria similar al siguiente:
|
Para verificar que el funcionamiento es el correcto, detener el servidor web con el script “bin/shutdown.sh” posteriormente volver a iniciar el servicio, desde el navegador web ingresar a http://localhost:8080/manager/status solicitará clave y password, ingresar “tomcat”, “tomcat”.
Esta ha sido una configuración inicial muy básica, sin tener en cuenta muchos criterios de seguridad o desempeño para mantener las cosas simples, sin embargo es recomendable pensar en dichos criterios si se pretende realizar algo más que una prueba de concepto como en este caso.
2. El siguiente paso consiste en definir las opciones de configuración obligatorias en el fichero de configuración de TOR para que el servicio este disponible en la red, para esto se declaran las siguientes opciones en el fichero torrc
|
En la primera opción de configuración simplemente se ha indicado el directorio donde automáticamente se generará el dominio *.onion que será el que será accesible desde la red de TOR, en el sitio oficial del proyecto existen algunos servicios ocultos que sirven para que el usuario entienda el formato que estos tienen y su funcionamiento (que es realmente sencillo), algunos de estos son: http://3g2upl4pq6kufc4z.onion/ y http://zuskgytldkxiuqc6.onion/ solamente son accesibles desde un navegador web viajando por la red de TOR.
En la segunda opción se indica el puerto por el que accederán los usuarios de la red TOR, (80) y la dirección IP y el puerto donde se encuentra en ejecución el servicio.
Esto es todo lo que hay que definir en términos de configuración, evidentemente estas dos lineas se repetirán por cada uno de los servicios que se desee publicar en la red con sus correspondientes puertos.
Es posible configurar tantos servicios como se desee bajo la misma directiva de clave publica, solamente es necesario tener la siguiente estructura:
|
De esta manera el servicio que se creará en el fichero hostname en /home/adastra/hidden_service_tomcat/ ofrecerá un servicio en los puertos 80,22,110.
3. Ahora solo es necesario ejecutar TOR desde linea de comandos con las opciones anteriormente definidas y esperar a que se inicie el relay, así TOR automáticamente generará dos ficheros en el directorio del servicio especificado en la opción HiddenServiceDir estos dos ficheros son: private_key y hostname, el primero contiene la clave privada del servicio, que no debe de ningún modo distribuirse a otros usuarios y el segundo contiene una corta descripción de la clave publica “el dominio .onion” explicado en lineas anteriores, este “dominio” (que en realidad es la clave publica del servicio) puede ser distribuida a los clientes y otros usuarios que pertenecen a la red de TOR, el nombre de este “dominio” tiene una forma similar a la siguiente: q3ovkzjsyvltgg6l.onion es simplemente un valor pseudo-aleatorio que define el servicio remoto, posteriormente, este valor debe ingresarse en un navegador web (correctamente configurado para utilizar TOR) y posteriormente podrá utilizarse el servicio remoto, evidentemente no es posible saber la dirección IP real del servicio remoto partiendo de un valor como el anterior.
4. Por otro lado, después de haber indicado en las ultimas entradas los valores de configuración de un relay en TOR y de un servicio oculto, el contenido del fichero de configuración de TOR puede tener la siguiente apariencia
|
5. Así como se ha hecho para la definición de un relay y un bridge en TOR, también es posible establecer un servicio oculto desde Vidalia, tal y como se indica en la siguiente imagen:
Finalmente, una recomendación: Es necesario estar atentos a posibles ataques de reconocimiento contra el servicio que posiblemente dejen al descubierto la dirección IP real del mismo, técnicas tan simples como verificar el contenido de las paginas no encontradas en el servidor web (paginas con código de error HTTP 404) pueden revelar información sobre la maquina donde se esta prestando el servicio que puede desvelar la ubicación real del mismo, por este motivo se aconseja realizar una inspección de este tipo de técnicas de reconocimiento o FingerPrint que le permitirán a un atacante conocer detalles que deberían permanecer ocultos al publico.