Implementando un nodo intermedio de Tor en la nube

Implementando un nodo intermedio de Tor en la nube
October 30, 2023

En un mundo caracterizado por la vigilancia constante y la recopilación de datos personales, la protección de nuestra privacidad y seguridad en línea se convierte en una necesidad fundamental. Aunque puede parecer una tarea complicada, en la actualidad existen herramientas poderosas que nos ayudan a resguardarnos en el ámbito digital. Una de estas herramientas es Tor, que nos permite navegar por Internet de manera segura, privada y anónima. En este artículo, exploraremos su funcionamiento y cómo podemos contribuir a su mejora y crecimiento mediante la implementación de un nodo intermedio en la nube.

¿Qué es Tor y cómo funciona?

Tor es un proyecto que promueve la privacidad en línea mediante la creación de una red de comunicación segura y privada. Su funcionamiento se basa en un proceso de triple cifrado de los datos de navegación, los cuales son dirigidos (enrutados) a través de tres nodos responsables de desencriptar una capa de seguridad a la vez. Cada uno de estos nodos solo conoce la información del nodo anterior y posterior en la cadena, lo que garantiza un alto nivel de protección en línea. Este enfoque evita el espionaje, la censura y proporciona un grado adicional de anonimato durante la navegación por Internet.

¿Qué es un nodo en el contexto de Tor?

Dentro del contexto de las redes informáticas, un nodo se refiere a un dispositivo de hardware que cumple diversas funciones, incluyendo la transmisión, enrutamiento, procesamiento y almacenamiento de datos. En el marco de Tor, los nodos desempeñan un papel crucial en la operación de la red, ya que actúan como puntos de conexión encargados de redireccionar el tráfico encriptado.

Red Tor

Se pueden clasificar principalmente en tres categorías: nodos de entrada, nodos de salida y nodos intermedios. Además, existen los llamados “nodos puente”, que están diseñados específicamente para regiones en las que el uso de Tor está restringido.

Nodos de entrada

Estos nodos, también conocidos como Guardianes, son los primeros en recibir el tráfico del cliente y se encargan de retransmitirlo de manera segura dentro de la red hacia un nodo intermedio. Estos nodos no tienen salida a Internet, lo que evita posibles problemas legales relacionados con el tráfico que transportan. Aunque su proceso de instalación es similar al de un nodo intermedio, requiere un ancho de banda considerable para asegurar un funcionamiento estable; por lo tanto, no se recomienda para una primera implementación.

Nodos de salida

Los nodos de salida, en contraste con otros tipos de nodos, tienen la función de dirigir el tráfico hacia su destino final, lo que implica que estos nodos tienen salida a Internet. Aunque tienen la capacidad de visualizar los datos de navegación, es importante destacar que no pueden identificar a lxs usuarixs a quienes pertenecen esos datos, a menos que exista información del/la usuarix que permita hacerlo y la solicitud no se realice mediante una conexión segura (HTTPS).

Los nodos de salida, en contraste con otros tipos de nodos, desempeñan la función de dirigir el tráfico hacia su destino final, lo que implica que estos nodos si tienen salida a Internet. Aunque tienen la capacidad de visualizar los datos de navegación, cabe destacar que no pueden identificar a lxs usuarixs a los que pertenecen esos datos, a menos que exista información identificativa del/la usuarix y la solicitud no se realice mediante una conexión segura (HTTPS).

Además, es esencial tener en cuenta que en ausencia de una conexión HTTPS, un nodo de salida podría potencialmente inyectar código malicioso para el/la usuarix. Por lo tanto, es recomendable tomar en consideración estos aspectos relacionados con la seguridad y la privacidad al utilizar Tor.

Este tipo de nodos generalmente son administrados por entidades como universidades y otras instituciones que cuentan con la capacidad de abordar posibles implicaciones legales relacionadas con el tráfico de la conexión.

Nodos intermedios

Los nodos intermedios desempeñan un papel fundamental al mantener el tráfico de entrada y salida dentro de la red Tor. Estos nodos no tienen la capacidad de visualizar el tráfico de navegación debido a las múltiples capas de cifrado, lo que también significa que no pueden identificar quién realizó una solicitud ni hacia dónde se dirige. Esto contribuye significativamente a fortalecer el anonimato en línea.

En términos de configuración y mantenimiento, los nodos intermedios son la opción más accesible y sencilla, pues requieren un ancho de banda relativamente bajo y no traen consigo riesgos legales. Esto los convierte en la mejor elección para quienes desean contribuir activamente al proyecto Tor y mejorar la privacidad de lxs usuarixs de la red.

En resumen, un nodo no es más que una computadora encargada de llevar a cabo tareas de transmisión y enrutamiento de datos dentro de la red Tor. Hasta la fecha de este artículo, la red alberga aproximadamente 8000 nodos, sin incluir los nodos puente. La expansión de Tor no es solo un objetivo, sino una necesidad para garantizar un mejor rendimiento y un anonimato más sólido para lxs usuarixs. Por lo tanto, proponemos implementar nodos intermedios en “la nube” como una iniciativa que permitirá a las personas interesadas participar activamente, incluso si no cuentan con el hardware necesario para mantener un nodo físico.

Computación en la nube

Para comprender mejor esta idea, es esencial tener un conocimiento previo del modelo de computación en la nube. Este se basa en la oferta de recursos computacionales, como CPU, RAM, almacenamiento y red, bajo demanda, con el objetivo de reducir costos de adquisición y mantenimiento de hardware físico. Uno de los enfoques de entrega de este servicio es el denominado IaaS (Infrastructure as a Service), en el cual el proveedor de nube vende recursos computacionales en función de las necesidades circunstanciales del/la usuarix.

Características como la disponibilidad del servicio, escalabilidad y la simplificación de su gestión y mantenimiento, se vuelven especialmente valiosas para mantener un nodo intermedio de forma estable. Sin embargo, también es necesario considerar algunas características de la nube que podrían influir en una buena implementación.

Consideraciones de la nube

Es fundamental evaluar las políticas de privacidad del proveedor de servicios de nube y asegurarse de que estén alineadas con el nivel de anonimato que Tor busca proporcionar a sus usuarixs. Se recomienda verificar que no existan conflictos que puedan comprometer la seguridad del nodo o llevar a la cancelación del servicio.

Otro aspecto crucial a tener en cuenta es el método de pago al tratar con un proveedor de servicios en la nube. En este contexto, lxs usuarixs deben realizar pagos mensuales para acceder a los recursos computacionales. La mayoría de los proveedores suelen aceptar tarjetas de débito o crédito como método de pago, lo que podría vincular el nodo con la persona propietaria de la tarjeta.

Esta situación plantea una preocupación, ya que uno de los principios fundamentales de la red Tor es preservar el anonimato de los responsables de los nodos. Por lo tanto, una buena práctica es buscar proveedores locales que permitan realizar pagos de forma anónima.

Preparativos para la implementación

El primer paso es seleccionar un proveedor de servicios en la nube basándose en las consideraciones previamente mencionadas. Además, se recomienda revisar los requisitos mínimos y sugerencias proporcionados por el sitio web oficial del Proyecto Tor. A continuación, detallamos aquellos que consideramos de mayor relevancia.

Requisitos mínimos:

  • Ancho de banda de 10 Mbps tanto de subida, como de bajada.

  • Mínimo 512 MB de memoria RAM.

  • Al menos 200 MB de espacio en disco dedicado exclusivamente para Tor.

Sugerencias:

  • Contar con una dirección IP pública estática.

  • Elegir un sistema operativo basado en Linux.

  • Evitar el virtualizador OpenVZ para la máquina virtual.

Implementación de nodo intermedio de Tor sobre la nube

Configuración de la nube

Para la redacción de este artículo, hemos optado por utilizar Google Cloud como proveedor de servicios en la nube, dado a que sus políticas son adecuadas para la implementación. Además, Google Cloud proporciona una imagen de Docker preconfigurada con Tor. No obstante, con el objetivo de proporcionar una experiencia completa y detallada, vamos a explicar la configuración paso a paso.

  • Crear una cuenta con el proveedor de nube: Cada proveedor puede tener procedimientos distintos para la creación de una cuenta. En el caso de Google Cloud, es necesario contar con una cuenta de correo Gmail y acceder al servicio, donde se deberá proporcionar la información requerida. Por lo general, en esta etapa de la implementación es cuando se especifica el método de pago.

  • Crear una máquina virtual: Se debe acceder a la consola de administración de máquinas virtuales. En el caso de Google Cloud, activar el API de Compute Engine y crear una nueva instancia que cumpla con los requisitos mínimos mencionados anteriormente. Durante este proceso, también se debe seleccionar el sistema operativo; en este caso, utilizaremos Debian 11.

    VM configs

  • Verificar la dirección IP: Una vez creada la instancia, verificar que cuente con una dirección IP pública. Además, se recomienda configurarla como estática para mantener la estabilidad del nodo.

  • Configurar el firewall: Es fundamental habilitar el tráfico de entrada y salida a través de un puerto específico seleccionado en el firewall. Más adelante, este mismo puerto se utilizará en las configuraciones de Tor para permitir el flujo de tráfico en la red. En nuestro caso, estaremos utilizando el puerto 443.

    Firewall configs

Configuración de Tor

Para iniciar la configuración del nodo, primero debemos arrancar la máquina virtual y establecer una conexión SSH con la instancia. Aunque muchos proveedores de nube ofrecen terminales integradas en el navegador, lo cual puede resultar útil si no se está familiarizado con el uso de un cliente SSH externo, por motivos de seguridad, se recomienda realizar esta conexión mediante un cliente SSH externo.

  • Acceso como Root: Una vez conectados a la instancia mediante SSH, es esencial realizar las siguientes configuraciones como administrador root. Para ello, en la terminal, escribimos el comando:

    sudo su

  • Configurar las actualizaciones automáticas: Este paso permitirá mantener el nodo seguro y siempre actualizado. Para lograrlo, sigue estos pasos:

    • Instalar los paquetes requeridos:

    apt-get install unattended-upgrades apt-listchanges

    • Habilitar HTTPS para acceso a las fuentes de los paquetes:

    apt install apt-transport-https

    • Configurar el repositorio de paquetes Tor: En el directorio “/etc/apt/sources.list.d/” crear un archivo llamado “tor.list”. Este archivo servirá como el repositorio de paquetes del proyecto Tor. Configura el archivo de la siguiente manera (ten en cuenta reemplazar “bullseye” con el codename de tu sistema operativo):
      deb     [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org bullseye main
      deb-src [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org bullseye main
    

    El archivo debería verse como se muestra en la siguiente imagen:

    Repositorio de paquetes Tor

    • Agregar clave GPG de los paquetes:

    wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --dearmor | tee /usr/share/keyrings/tor-archive-keyring.gpg >/dev/null

    • Actualizar la información de los paquetes del sistema:

    apt update

  • Instalar Tor y Tor Debian Keyring: En este paso, instalamos Tor y un paquete de Debian que nos permite mantener actualizada la firma de los paquetes de Tor. Ejecuta el siguiente comando:

    apt install tor deb.torproject.org-keyring

  • Habilitar configuraciones automáticas: Una vez creadas las configuraciones para las actualizaciones, se procede a habilitarlas siguiendo estos pasos:

    • Editar el archivo “/etc/apt/apt.conf.d/50unattended-upgrades”. Eliminar todo el contenido existente y remplazar con lo siguiente:
      Unattended-Upgrade::Origins-Pattern {
          "origin=Debian,codename=${distro_codename},label=Debian-Security";
          "origin=TorProject";
      };
      Unattended-Upgrade::Package-Blacklist {
      };
      Unattended-Upgrade::Automatic-Reboot "true";
    
    • Editar el archivo “/etc/apt/apt.conf.d/20auto-upgrades” con la siguiente información:
      APT::Periodic::Update-Package-Lists "1";
      APT::Periodic::AutocleanInterval "5";
      APT::Periodic::Unattended-Upgrade "1";
      APT::Periodic::Verbose "1";
    
  • Configurar el nodo: Esto incluye asignar un nombre al nodo, proporcionar información de contacto, especificar el puerto a través del cual viajará el tráfico de la red Tor y definir el tipo de nodo, que en este caso será intermedio. Para llevar a cabo esta configuración, agregar o editar el archivo “/etc/tor/torrc” con la siguiente información:

      Nickname ProtecTOR              #Reemplaza con el nombre de tu elección
      ContactInfo temporal@mail.com   #Reemplaza con tu correo de contacto 
      ORPort 443                      #Reemplaza con el puerto configurado en tu firewall
      ExitRelay 0
      SocksPort 0
    

*Nota: Mantén las configuraciones de ExitRelay y SocksPort en 0 para que el nodo sea de tipo intermedio. Por otro lado, ten en cuenta que el correo que configures en este paso será público en la web de métricas de Tor. Es importante que tengas acceso a este correo para que recibas notificaciones en caso de que existan problemas con tu nodo.

  • Reiniciar el proceso de Tor en segundo plano:

    systemctl restart tor@default

  • Verificar que el nodo esté publicado: Finalmente, queda esperar entre dos a tres horas antes de verificar si el nodo ha sido publicado en la página de métricas de Tor. Se lo puede buscar por su dirección IP pública o su nombre de usuarix (nickname) para asegurarse de que está en funcionamiento y disponible para la red.

Node verification

Conclusiones y recomendaciones

Contribuir a la red Tor sin la necesidad de contar con hardware físico es factible mediante la implementación de un nodo en la nube, que se presenta como una opción económica y práctica. Los costos de los servicios en la nube generalmente no son restrictivos y, en muchos casos, pueden igualar o incluso ser inferiores a los gastos de un plan mensual de internet. Además, la capacidad de dar de baja un nodo en la nube simplemente apagando la máquina virtual que lo aloja es una ventaja adicional. El pago se detiene automáticamente al interrumpir el consumo de recursos.

Por otro lado, se recomienda estudiar minuciosamente las políticas del proveedor de servicios en la nube para evitar la suspensión de nuestro nodo. La búsqueda de un proveedor de nube local que permita pagos anónimos puede resultar beneficiosa. Además, dado que las consolas de administración de nube varían en su funcionamiento, es fundamental examinar paso a paso las configuraciones, especialmente las relacionadas con el firewall.

A pesar de que un nodo no requiere supervisión constante, es una buena práctica realizar revisiones periódicas de las estadísticas, tanto en términos de consumo de recursos en la nube como en la calidad del nodo. Además, existen muchas otras buenas prácticas para una gestión adecuada del nodo; sin embargo, este es un tema que merece su propio artículo.

Fuentes