Cómo crear un nodo de la red Tor con Debian 10

La intención de esta entrada en explicar como crear un nodo de la red Tor en un host con Debian 10. Además, de manera introductoria, os explicaré en que consiste esta red y porque es tan necesaria.

¿Qué es y en que consiste la red TOR?

Se trata de un proyecto cuyo principal objetivo es el desarrollo de una red de comunicaciones distribuida de baja latencia y superpuesta por Internet, en que el encaminamiento de los mensajes intercambiados entre los usuarios no revela su identidad (su dirección IP), y que, además, mantiene la integridad y el secreto de la información que viaja por ella.

Para que esta red pueda funcionar se ha desarrollado un programario o software libre específico para la consecución de sus objetivos. Tor utiliza el uso de encaminamiento de cebolla de forma que los mensajes viajen desde el origen al destino a través de una serie de routers (encaminadores) especiales llamados «routers de cebolla» (en inglés onion routers). Este sistema está diseñado con la flexibilidad necesaria para que pueda implementar mejoras, se despliegue en el mundo real y pueda resistir diferentes tipos de ataque. Sin embargo, tiene puntos débiles y no pueda considerarse como un sistema infalible.

Tal y como destapó Edward Snowden en el 2013 agencias como la la NSA podrían haber conseguido «romper» Tor y así descrubir las identidades de los usuarios que buscan el anonimato.

Describe funcionamiento de la red Tor Fuente: https://commons.wikimedia.org/wiki/File:Funcionamiento_red_tor2.svg

Las fuente principal para esta introducción es la propia Wikipedia en castellano: Tor (red de anonimato)

Cómo crear un nodo de la red Tor

Ya hemos comentario anteriormente que Tor es un programario o software que permite conectarse a la red Tor. Por defecto está configurado como cliente o usuario de red, pero cambiando algunos parámetros se puede convertir en un nodo o parte de Tor.

Antes de empezar con las instrucciones de creación del nodo nos tiene que quedar claro que existen diferentes tipo de nodos. Debido a la forma que funciona Tor, no todos los nodos que la conforman son iguales. Dependiendo de las características y configuración, un nodo puede cumplir algunas funciones particualres.

  • Nodos de entrada (Guard relays) Se comunican con los clientes tor y conectan a los usuarios con el resto de la red Tor. Generalmente llevan un gran tiempo siendo utilizados y tienen anchos de banda generosos.
  • Nodos medios (Middle relays) Se comunican solo con otros nodos, por lo que su tráfico nunca sale de la red Tor y representa la opción más comoda, rápida y segura para configurar nuestro propio nodo. De hecho es el que veremos en esta entrada.
  • Nodos de salida (Exit relays) Son el punto final dentro de la red Tor. Toman las solicitudes, las envían a sus destinatarios, reciben sus respuestas y las envían de vuelta a la red para que lleguen a quien hizo la solicitud originalmente. Suelen ser mantenidos por instituciones y otros actores con capacidad para enfrentar las posibles consecuencias legales del uso que den los usuarios, cuyas conexiones salen por estos nodos. Para más información sobre las amenzas y consideraciones legales: Web de Derechos Digitales
  • Nodos de puente (Bridge relays) Una de las características de los nodos anteriores es que para ser parte del circuito aleatorio de tres puntos que permiten conectar a la red Tor, deben ser parte de un registro público de nodos elegibles, que se pueden consultar en la web: https://metrics.torproject.org/rs.html Dado que aparecen en dicha lista pública, si un proveedor de servicio de Internet o un gobierno quieren bloquear el acceso a la red Tor, solo deberán obtener dicha lista de nodos y bloquear los que les interese o todos. Para evitar esto, en caso de ser necesario, un usuaio puede recibir una lista de nodos de entrada «secretos» que no se encuentran listados de forma pública. Estos nodos son los llamados nodos de puente. En cualquier caso al usuario solo se le entrega una lista reducida de estos nodos, para evitar que sean enumedados y bloqueados.

Una vez ha quedado claro esto pasemos a explicar como crear un nodo medio sobre un sistema con Debian 10

Requisitos previos para crear un nodo medio

Lo cierto que la instalación de un nodo es bastate sencilla, pero el host debe cumplir una serie de requisitos previos.

  • Un ancho de banda disponible y que este en modo excluviso, por lo menos 10 MBit/s (Mbps) simétricos.
  • Una dirección IP pública estática de forma preferente. El nodo se puede configurar aunque no se tenga una IP estática, pero sus estadísticas de estabilidad se verán perjudicadas por los cambios de IP, por lo que no será reconocido como un nodo estable, ergo se le enviará menos tráfico y no podrá ser promovido a nodo de entrada.
  • Capacidad de configurar la red del nodo para permitir conexiones abiertas tanto de entrada como de salida. Se es un nodo en la nube debemos tener acceso para configurar su cortafuegos y si es un nodo local con tener acceso al router debería ser más que suficiente.
  • El host debe de estar accesible las 24 horas (encendido) todos los días que cuente por lo menos con 512 de ram y 200 MB de espacio en disco (excluviso para el uso de Tor

Crear un nodo medio en Debian 10

En mi caso voy a utilizar un nodo en un VPS en la nube, aunque también lo podéis instalar en vuestra propia red doméstica, por ejemplo una Raspberry Pi. Además de GNU/Linux también se pueden utilizar otros sistemas operativos como BSD, MS Windows o MacOS. Aunque lo recomendable es utilizar las distribuciones del pingüino y el ñu

En el caso de este software no hace falta que añadamos ningún repositorio adicional, ya que el programario ya se encuentra en los repositorios principales de Debian.

Simplemente hemos de escribir:

sudo apt install tor

También podemos crear un usuario exclusivo para correr la aplicación, esta ya es del gusto de cada cual.

Una vez instalado, antes de poner el marcha el programa, debemos editar el fichero de configuración, ubicado en /etc/tor, con el nombre de torrc Aunque antes de tocar nada siempre recomiendo hacer una copia de seguridad de este fichero:

sudo cp -p /etc/tor/torrc /etc/tor/torrc.original

De hecho, como tampoco son muchas líneas, en vez de copiar lo podéis mover y así trabajar con un fichero vacío.

La configuración que yo tengo es algo similar a esto:

# Config basica
Nickname nombre-host
ORPort 9091
ExitRelay 0
SocksPort 0
ControlSocket 0
# Correo de contacto
ContactInfo correo-de-contacto
#
RelayBandwidthRate 100 KB
RelayBandwidthBurst 200 KB
 
AccountingStart month 1 01:00
AccountingMax 500 GBytes

Paso a explicar cada uno de los parámetros:

  • Nickname: un nombre que identifique el nodo. Debe ser cualquier valor entre 1 y 19 caracteres sin espacio.
  • ORPort: es el número de puerto que va a utilizar Tor, puede ser cualquier que no este en uso entre el 1 y el 65535. Ojo que tengamos el puerto abierto en el cortafuegos.
  • SocksPort: importante que quede en valor «0» para especificar que esta instalación no se usará como cliente de la red Tor, ya que solo operará con el rol de nodo medio.
  • ExitRelay: debe quedar con el valor «0» para especificar que el nodo no va a operar como una salida de la red Tor.
  • ContactInfo: es el correo electrónico de contacto que va a ser publicado de manera abierta, como medio de contacto. Ten en cuenta que es un dato público. No utilices un correo personal, yo por ejemplo que utilizado los correos cifrados ofrecidos por Protonmail.

Otro aspecto importante es configurar el ancho de banda. Ya que sino lo indicáis os puede llegar una buena factura de vuetro proveedor en la nube. Hay que tener en cuenta que por defecto la configuración de los nodos no limita el ancho de banda ni el total de datos transmitidos al mes, pero podemos usar las siguientes opciones para configurar los limites de tráfico, según nuestras necesidades:

  • BandwidthRate: limita la velocidad de tráfico al valor que se defina por esta opción. Podemos utilizar valores como 100 KBytes o 2000 KBits. Si tenemos una conexión asimétrica, el valor debe mantenerse menor o igual a la velocidad más lenta.
  • AccountingStart y AccountingMax: limitan el total de tráfico que el nodo va a redirigir en un periodo de tiempo. Por ejemplo para limitar a 500 GBytes por mes, reiniciando el periodo el primer día dle mes a las 01:00 am.

También se puede habilitar IPv6, aunque no lo he utilizado.

En la imagen vemos primero la gráfica del nodo sin límite en el uso de la red:

Y una vez hemos indicado los límites y reiniciado:

Una vez hecho esto ya podemos encender el servicio:

sudo systemctl start tor

Podemos ver que todo ha ido bien utilizando el programa journalctl, como sigue:

sudo journalctl -f -u tor@default

Con un resultado similar:

Self-testing indicates your ORPort is reachable from the outside. Excellent. Publishing server descriptor.

Y con esto ya tendríamos el nodo funcionando.

Para conseguir más información al respecto os recomiendo la web de Derechos Digitales y la propia web oficial de Tor.

También existen estos interesantes libros en Amazon (enlaces referidos que sirven para ayudar a sufragar los gastos de esta web) que también versan sobre el tema de Tor, el anonimato en la red y la Deep Web  y quizás te pueden interesar:

El pequeño libro rojo del activista en la red: Prólogo de Edward Snowden (Eldiario.Es Libros)

Desciendiendo hasta el infierno: Un paseo por lo más oscuro de internet (ENIGMAS Y CONSPIRACIONES)

La red oscura (Actualidad)

Este otro libro no esta en Amazon, pero me parece imprescindible:

Deep Web: TOR, FreeNET & I2P: Privacidad y Anonimato

Y esto es todo, espero que esta entrada haya sido de vuestro interés.