Las opciones de configuración de un Relay son vitales para que su funcionamiento sea el esperado, ademas es importante tener claridad en los conceptos y la filosofía de cada una de estas opciones, en algunos casos su funcionamiento no es fácil de comprender y se necesitan conocimientos previos sobre protocolos de red y funcionamiento general del protocolo TCP. Sin embargo el hecho de tener un Relay bien configurado se traduce en mejor rendimiento, anonimato y seguridad ya que en cualquier software, los Bugs son temporales y en muchas ocasiones pasajeros, pero las malas configuraciones pueden ser permanentes si no se toman las medidas de detección y corrección oportunas. A continuación se enseña el significado de las opciones de configuración más interesantes en TOR cuando actúa como una instancia servidora para otros usuarios.

ORPort: Indica el puerto utilizado en la máquina local para escuchar peticiones de nuevos clientes, cuando esta opción se establece con un mayor superior a 0, se le indica a TOR que debe funcionar como Relay para otros clientes en la red de TOR y que puede ser usado en la construcción de circuitos que otros usuarios en la red necesitan para transferir paquetes.

ORListenPort: Funciona igual que ORPort con la diferencia de que se incluye una dirección IP y un puerto en el cual se establecerá el proceso de TOR. Esta directiva puede incluirse en múltiples ocasiones dentro del mismo fichero de configuración.

AllowSingleHopExits: Con esta opción se le indica al Relay que este servidor puede ser usado como único punto de salida de la conexión, incluso si se trata del único router en el circuito, esto quiere decir que el relay puede aceptar conexiones desde clientes directamente sin necesidad de que el trafico pase por otros nodos del circuito. Es importante anotar que no todos los clientes permiten el uso de este tipo de servidores, en concreto aquellos que utilizan la opción ExcludeSingleHopRelays rechazaran la conexión con Relays que tengan esta opción establecida. Por defecto el valor es 0 (desactivada) para activar establecer el valor 1.

AssumeReachable: Esta opción, como su nombre lo indica, asume que el relay es accesible desde el exterior, de esta forma la prueba de “auto-accesibilidad” no es ejecutada (algo que siempre se lleva a cabo por defecto cuando se arranca TOR con configuración de Relay). Dado que no se realizan las pruebas de accesibilidad externa del Relay, de forma inmediata se se sube el descriptor del servidor al directorio de TOR.

ContactInfo: Se trata simplemente de una dirección de correo electrónico para conectar con el administrador del Relay.

Nickname: Se trata del fingerprint identificativo del relay el cual es utilizado por la red de TOR para construir circuitos que involucren a este Relay.

MyFamily: Indica que este relay es administrado por un grupo u organización que ejecuta varios Relay en la red de TOR, el beneficio de esto es que cuando dos Relays hacen parte de la misma familia, no son empleados para construir un mismo circuito.

NumCPUs: Número que indica la cantidad de procesadores destinados a descifrar mensajes provenientes de otros nodos del circuito, el valor por defecto es 1.

ExitPolicy: Se trata de un concepto importante en la configuración de cualquier relay, en esta opción (que puede aparecer en múltiples ocasiones a lo largo del fichero de configuración) se deben definir las políticas de aceptación o rechazo de las conexiones entrantes y salientes pasando por el relay, el formato de estas políticas es sencillo, se establece en primer lugar el tipo de política “accept/reject” la dirección IP/Segmento red/Mascara de Red y el puerto o rango de puertos; por ejemplo la política:

ExitPolicy accept *:80,accept *:443,accept *.22,reject *.*” aceptará todas las conexiones cuyo trafico este destinado a cualquier servidor sobre el puerto 80,443 y 22, cualquier otra conexión por un puerto distinto será rechazada de forma inmediata. Como puede apreciarse las políticas siguen un determinado orden, teniendo preferencia las primeras que se especifican, como ha sido en este caso, donde las políticas de aceptación han sido tomadas en primera instancia y han sido aplicadas antes que las de rechazo.

ExitPolicyRejectPrivate: Se estable que cualquier petición cuyo trafico este destinado a una dirección IP interna (red local) será rechazada, los segmentos de red que TOR considerá locales son: 169.254.0.0/16, 127.0.0.0/8, 192.168.0.0/16, 10.0.0.0/8, y 172.16.0.0/12. Si por algún motivo se desea permitir alguna de estas redes en una política de aceptación se debe utilizar el comodín “private” por ejemplo: “ExitPolicy accept private:80sin embargo es una practica poco recomendable, dado que frecuentemente este comportamiento representa un ataque activo. El valor por defecto de esta opción es 1 (activada) para desactivar establecer esta opción a 0.

MaxOnionsPending: En esta opción se indica el número de “onionskins” o peticiones provenientes de otros nodos del circuito que están encolados para ser descifrados, en el caso de que se alcance este limite, cualquier otra petición nueva será automáticamente rechazada. El valor por defecto de esta propiedad es 100.

ShutdownWaitLength: Se trata de un valor que le indica a TOR que cuando recibe una señal SIGINT al proceso principal, TOR debe cerrar los circuitos que están en estado de escucha y comenzar a rechazar la creación de nuevos circuitos, posteriormente debe realizar un apagado automático de la instancia de TOR, en el caso de que se reciba una segunda señal SIGINT se debe detener de forma inmediata. El valor por defecto de esta propiedad es de 30 segundos.

Las opciones de configuración anterior pueden asumir la siguiente forma en el fichero torrc de TOR

SocksPort 0 #No se iniciará un servidor SOCKS para clientes, esta instancia se ejecuta como servidor.

ORPort 8080 #Puerto donde se iniciará el Relay

AllowSingleHopExits 1 #Permite que las peticiones en este nodo puedan ser el único punto de salida

AssumeReachable 1 #Se asume que es accesible desde el exterior

ContactInfo adastra@mail.i2p #Dirección de contacto con el administrador del Relay

Nickname AdastraRELAYTEST #Nickname del relay

NumCPUs 1 #Número de CPUs empleadas para la ejecución del relay

ExitPolicy accept *:80,accept *:443,reject *:* #Política de salida de TOR.

MaxOnionsPending 50 #Número máximo de OnionSkins pendientes.

ShutdownWaitLength 60 #Tiempo de espera para que TOR se reinicie después de una señal SIGINT

ServerDNSResolvConfFile: Sobre-escribe el fichero de configuración DNS del sistema por el fichero especificado en esta opción, este fichero debe contener la misma sintaxis de resolv.conf, es importante anotar que esta opción solamente afecta a las peticiones que se realizan por parte del cliente y no afectan al sistema de forma global. Por defecto se usa el fichero /etc/resolv.conf del sistema.

ServerDNSAllowBrokenConfig: En el caso de que esta opción se encuentre activa iniciará la instancia de TOR aunque el fichero de configuración DNS se encuentre corrupto o no sea valido, TOR periódicamente intentará validar dicho fichero hasta que consiga cargarlo sin errores, en caso de que este desactivada TOR falla en el arranque indicando que existen errores en el fichero de configuración de TOR. Por defecto el valor de esta opción es 1 (activada).

ServerDNSAllowNonRFC953Hostname: Cuando esta opción se encuentra desactivada TOR no intenta resolver nombres de dominios que contengan caracteres inválidos tales como caracteres especiales, en el caso de que se encuentre activada, permitirá resolver cualquier tipo de nombre de dominio aunque este no sea valido. El valor por defecto es 0 (desactivada) y como todas las opciones relacionadas con el servidor DNS, no afectan al sistema global y solamente abarcan las peticiones realizadas por los clientes.

Estas opciones aplicadas al fichero de configuración de TOR

ServerDNSResolvConfFile /home/adastra/resolv.conf #Fichero DNS personalizado

ServerDNSAllowBrokenConfig 0 #No se admite que TOR inicie con un fichero de configuración invalido.

ServerDNSAllowNonRFC953Hostname 0 #No se admite la resolución de nombres de dominio inválidos

Por otro lado, TOR también incluye algunas opciones que registran estadísticas relacionadas con la prestación del servicio, estas estadísticas son en realidad consultadas desde directorio de TOR, en el cual cada 24 horas con un intervalo de 15 minutos, se actualizan estos valores, principalmente para detectar y corregir problemas de desempeño general en la red y además para poder determinar cuando un país o estado están comenzando a bloquear los relays de TOR, esto es en verdad una excelente herramienta para los desarrolladores y arquitectos de TOR para poder reaccionar a tiempo ante estas eventualidades. Desde el punto de vista de un Relay, estos valores son útiles como valores informativos y permiten suministrar información útil en la red de TOR para conocer el comportamiento del Relay y poder sacar patrones que permitan mejorar el desempeño de la red. Algunas de estas opciones son:

DirReqStatistics: Cuando esta opción se encuentra activada, escribe en disco cada 24 horas estadísticas sobre el número y tiempo de respuesta sobre peticiones al estatus de la red (por defecto se encuentra desactivada con valor 0).

EntryStatistics: Cuando esta opción se encuentra activada, escribe en disco cada 24 horas el número de clientes conectados de forma directa al Relay (Entry Node). El valor por defecto de esta propiedad es 0 (desactivada)

ExitPortStatistics: Cuando esta opción se encuentra activada, escribe en disco cada 24 horas el número de bytes retransmitidos

ExtraInfoStatistics: Cuando esta opción se encuentra activada, recolecta todas las estadísticas, (todas las opciones anteriores que se encuentren activadas), estas son incluidas en documentos “extra-info” y estos son enviados al directorio autoritativo de TOR. Por defecto esta opción se encuentra desactivada (valor 0).

DirReqStatistics 1

EntryStatistics 1

ExitPortStatistics 1

ExtraInfoStatistics 1