TOR es un proyecto que además de brindar la posibilidad a sus usuarios de proteger sus datos personales, también tiene un enfoque social y colaborativo, cada usuario que participa en la red de TOR libremente puede configurar un relay en su servicio de TOR y actuar como un nodo de salida para otros usuarios que también navegan de forma anónima. La razón de esto es precisamente para asegurar de una forma más eficiente el anonimato de los usuarios, ya que entre mas nodos de salida existan, será mucho más difícil determinar el origen de las peticiones de los usuarios. Allí radica el valor de esta red y es una forma de contribuir con su desarrollo, además de esto, también ayuda a mejorar la experiencia de los usuarios, principalmente porque entre mas nodos de salida existan, mayor será el ancho de banda y el rendimiento será mucho mayor.

Cuando un usuario configura su servicio de TOR para que este se preste a otros usuarios, debe tener en cuenta algunas medidas de seguridad esenciales, así como también configurar determinados parámetros para limitar el ancho de banda que quiere compartir entre otras cosas más que le permitirán tener un repetidor correctamente configurado y útil. A continuación se indican los pasos necesarios para configurar un relay con TOR.

NOTA 1: Es importante anotar, que para evitar contratiempos es mejor ejecutar TOR desde la cuenta de un usuario con privilegios limitados, no se aconseja desde ningún punto de vista ejecutar el servicio como usuario root, se recomienda utilizar herramientas tales como authbind o privbind que se han explicado en entradas anteriores de este blog aquí: https://thehackerway.wordpress.com/2011/10/07/bind-a-puertos-reservados-utilizando-usuarios-sin-privilegios-de-root/

NOTA 2: Para que este procedimiento funcione adecuadamente, es necesario activar el “Port Forwarding” en el caso de que esta característica no este activada, se producirá un mensaje como el siguiente:

Sep 02 00:50:15.854 [warn] Your server (88.3.102.5:443) has not managed to confirm that its ORPort is reachable. Please check your firewalls, ports, address, /etc/hosts file, etc.

Esta opción se activa en el router (en el caso de que se tenga salida a internet por medio de un router) por ejemplo en el caso de routers comtrend, esto es posible hacerlo desde la interfaz web que viene incluida en el router, desde allí se selecciona “Advanced Setup → LAN” y se activa la opción “Enable UPnP”. En otros routers suele ser una opción que se encuentra bastante visible, en el caso de que no lo sea, google siempre es un excelente recurso de información, usadlo!

  1. Es necesario que el reloj y la zona horaria del ordenador se encuentren correctamente sincronizados, se recomienda sincronizar el reloj utilizando NTP y servidores de tiempo públicos, Sin embargo si el reloj del sistema se encuentra correctamente configurado y actualizado, no es necesario ejecutar estos pasos. En sistemas basados en Debian es muy sencillo, en primer lugar se procede a instalar NTP por medio de APT.

    >apt-get install ntpdate
    ntp

    Posteriormente se indican los datos correspondientes a la zona horaria con el siguiente comando

    >tzselect

    Se proveen los datos relativos a la localización.

    Después de un rato, ejecutar el comando “date” y debe dar la hora exacta dependiendo de la ubicación seleccionada.

  2. Ahora es el momento de establecer las opciones de configuración propiamente dichas para establecer el Relay en TOR, es necesario editar el fichero de configuración “torrc” ubicado en “/etc/tor/torrc” el contenido tentativo de dicho fichero puede ser similar al siguiente:

    HashedControlPassword 16:233E903C1CE7680E6020B328238DE896894E09A67A15B2840756A69210

    ControlPort 9051

    DirPort 9030

    Log notice stdout

    Nickname AdastraTOR

    ORPort 443

    RelayBandwidthBurst 393216

    RelayBandwidthRate 196608

    En estas opciones se ha indicado un “nick” para el ordenador que se unirá a la red de TOR (Nickname), un puerto donde se ejecutará el relay (ORPort) un puerto del directorio que servirá como espejo (DirPort), Política de logs (Log), Número máximo de bytes que se utilizará en cada sentido de la conexión (RelayBandwidthBurst), Número máximo de bytes por segundo promedio al que deben limitarse las conexiones entrantes (RelayBandwidthRate) Puerto establecido para aceptar conexiones y permitirles controlar el proceso de TOR utilizando el “TOR Control Protocol” (ControlPort) se especifica el hash necesario para aquellas conexiones que necesiten acceder al ControlPort, se deniega el acceso a aquellas conexiones que no indiquen dicha clave, para generar el hash es necesario ejecutar antes el comando “tor –hash-password password” (HashedControlPassword)

  3. Como se ha visto en una entrada anterior de este post, algunos servicios que se exponen en internet no deberían ejecutarse como ROOT, no obstante algunos de ellos utilizan puertos privilegiados que solamente puede utilizar el usuario ROOT (todos aquellos puertos menores a 1024) para esto existen una serie de mecanismos y herramientas que permiten a un usuario con privilegios limitados, abrir puertos como el 80, 22, 443, entre otros. En este caso concreto se ejecuta TOR utilizando authbind, para profundizar mas sobre este tema se aconseja ver la entrada correspondiente de este blog aquí: https://thehackerway.wordpress.com/2011/10/07/bind-a-puertos-reservados-utilizando-usuarios-sin-privilegios-de-root/

    Una vez comprendido el comando authbind se procede a indicar los puertos que se desea abrir a un usuario con privilegios limitados.

touch /etc/authbind/byport/80

chmod 500 /etc/authbind/byport/80

chown adastra /etc/authbind/byport/80

touch /etc/authbind/byport/443

chmod 500 /etc/authbind/byport/443

chown adastra /etc/authbind/byport/443

Con lo anterior se ha indicado que se deben abrir los puertos 443 y el 80, a continuación se inicia TOR utilizando authbind

>authbind – -deep tor

sep 03 00:13:45.130 [Notice] Tor v0.2.2.32 (git-877e17749725ab88). This is experimental software. Do not rely on it for strong anonymity. (Running on Linux x86_64)

sep 03 00:13:45.130 [Notice] Your ContactInfo config option is not set. Please consider setting it, so we can contact you if your server is misconfigured or something else goes wrong.

sep 03 00:13:45.130 [Notice] Initialized libevent version 1.4.13-stable using method epoll. Good.

sep 03 00:13:45.130 [Notice] Opening OR listener on 0.0.0.0:443

sep 03 00:13:45.130 [Notice] Opening Directory listener on 0.0.0.0:9030

sep 03 00:13:45.130 [Notice] Opening Socks listener on 127.0.0.1:9050

sep 03 00:13:45.130 [Notice] Opening Control listener on 127.0.0.1:9051

sep 03 00:13:45.891 [Notice] Based on 116 circuit times, it looks like we don’t need to wait so long for circuits to finish. We will now assume a circuit is too slow to use after waiting 5 seconds.

sep 03 00:13:45.891 [Notice] Parsing GEOIP file /usr/local/share/tor/geoip.

sep 03 00:13:45.891 [Notice] OpenSSL OpenSSL 0.9.8o 01 Jun 2010 looks like version 0.9.8m or later; I will try SSL_OP to enable renegotiation

sep 03 00:13:45.891 [Notice] Your Tor server’s identity key fingerprint is ‘AdastraTOR 88AA4498FD5B4DC0F542EBD4B33BA60A8D2129A9’

sep 03 00:13:45.891 [Notice] We now have enough directory information to build circuits.

sep 03 00:13:45.891 [Notice] Bootstrapped 80%: Connecting to the Tor network.

sep 03 00:13:45.891 [Notice] New control connection opened.

sep 03 00:13:46.181 [Notice] Guessed our IP address as 88.3.97.78 (source: 208.83.223.34).

sep 03 00:13:46.843 [Notice] Bootstrapped 85%: Finishing handshake with first hop.

sep 03 00:13:47.614 [Notice] Bootstrapped 90%: Establishing a Tor circuit.

sep 03 00:13:48.671 [Notice] Tor has successfully opened a circuit. Looks like client functionality is working.

sep 03 00:13:48.672 [Notice] Bootstrapped 100%: Done.

sep 03 00:13:48.672 [Notice] Now checking whether ORPort 88.3.97.78:443 and DirPort 88.3.97.78:9030 are reachable… (this may take up to 20 minutes — look for log messages indicating success)

sep 03 00:13:57.635 [Notice] Self-testing indicates your ORPort is reachable from the outside. Excellent. Publishing server descriptor.

sep 03 00:14:49.037 [Notice] Self-testing indicates your DirPort is reachable from the outside. Excellent.

NOTA: El fichero de configuración de TOR por defecto se encuentra ubicado en: /usr/local/etc/tor/torrc

La salida del comando anterior indica que TOR se ha iniciado correctamente y a su paso ha iniciado el puerto OR para acceso al relay y ha generado la clave de identidad para “AdastraTOR”. Finalmente, se indica que el proceso de chequeo del relay puede tardar aproximadamente 20 minutos y una vez este chequeo termina se apreciará un mensaje indicando si ha sido correcto (ver párrafos anteriores sobre la activación de “port forwarding” UPnP). Posteriormente, cuando el servicio se encuentre registrado en la red de TOR se puede consultar en el directorio de nodos de TOR ubicado en: http://128.31.0.34:9031/tor/status/all en este caso concreto puede apreciarse que el relay que se acaba de configurar se encuentra registrado con la siguiente traza:

r AdastraTOR iKpEmP1bTcD1QuvUszumCo0hKak 8V2JujzeZf4lAoiXJPxuqe3hzpE 2011-09-02 20:21:24 88.3.97.78 443 9030s Exit Fast Running V2Dir Valid

Ahora el servicio de TOR iniciado compartirá banda ancha en la red de TOR a otros usuarios con el fin de fortalecer el anonimato en la red.

Con todo lo anterior queda correctamente configurado el relay de TOR, no obstante se recomienda, de forma adicional evitar que otros abusen de este servicio para enviar mensajes de correo electrónico maliciosos y SPAM, por este motivo se recomienda utilizar una regla del firewall que impida que cualquier petición que se dirija a un servidor de correo sea automáticamente rechazada.

>iptables -t nat -A PREROUTING -p tcp –dport 25 -j DROP

En la próxima entrada se indicará como puede llevarse a cabo este procedimiento desde Vidalia y se introducirá el concepto de Bridges en TOR.