Enrutando todo tu tráfico bajo la red TOR cómo un proxy transparente en Linux

Tor proxy

La privacidad y el anonimato es algo que preocupa a muchos. Muchas personas se ven obligadas a usar métodos contra la censura ya sea para acceder a sitios restringidos en su país o bien, para realizar algún otro tipo de actividad en internet.

· ¿Qué es un proxy transparente?

Un proxy transparente es un servidor que se ubica entre su computadora e Internet y redirige sus solicitudes y respuestas sin modificarlas. Un servidor proxy que modifica sus solicitudes y respuestas se define como un proxy no transparente. Un servidor proxy transparente también brinda mejoras en la velocidad de su red.

Un proxy transparente se puede usar por varias razones, cómo el filtrado de contenido en escuelas y bibliotecas, y cómo no necesita ninguna configuración en el lado del cliente, puede ser una alternativa fácil de mantener a otros tipos de proxy.

A diferencia de otros servicios proxy o VPN, no necesariamente es necesario descargar una aplicación o programa para usar un proxy transparente. En cambio, depende de cómo esté configurada su red.

· ¿Qué es TOR?

Tor (siglas de The Onion Router o también conocido como Cebolla) es un proyecto mantenido por The Tor Project. El objetivo de Tor es generar una “carretera” alternativa en las comunicaciones de Internet, protegiendo a los usuarios, proveyendo seguridad y anonimato. Para información más extendida puedes visitar el sitio web del proyecto: http://torproject.org/. Tor cuenta con Tor Browser: un navegador configurado para navegar de manera privada y segura sin dejar rastro alguno. También está TAILS que es un Sistema Operativo basado en Debian, el cual pasa todas las conexiones salientes por los proxies de Tor y sin dejar rastro en el Disco Duro (si se corre desde un medio extraíble). - Tomado de https://securityhacklabs.net/articulo/instalacion-y-configuracion-tor-en-arch-linux-debian-y-derivados

· ¿Qué debo hacer para configurar TOR cómo un proxy transparente?

Existen dos métodos, manualmente y automáticamente. Si usted tiene conocimiento sobre cómo funciona el servicio TOR, iptables, systemd, sus servicios de arranque y tu sistema operativo utiliza Systemd cómo demonio init, te recomendamos usar la opción automatizada, en el caso contrario, te recomendamos que investigues sobre estos temas para entender el funcionamiento de lo que se realiza para que TOR funcione cómo proxy transparente. Adicionalmente si tu sistema no utiliza Systemd, revisa la documentación del init sobre cómo crear un servicio que se pueda ejecutar mediante el init.

Automáticamente.

El desarrollador Edu4rdSHL ha creado un script que automatiza el proceso de convertir TOR en un proxy transparente, cómo también su instalación. Muchos se preguntarán: ¿Para qué crear más de lo mismo? La respuesta es simple: Todos los demás scripts existentes tienen demasiado código para realizar una tarea tan sencilla, normalmente requieren decenas de dependencias que no son necesarias para lograr que esto funcione, y adicionalmente no enrutan las peticiones DNS, lo que significa que aunque escondas tu dirección IP, los sitios pueden saber cual es tu ISP mediante los DNS, tor-router enruta las peticiones DNS también brindando una extra capa de privacidad/seguridad.  Tor-Router es una herramienta escrita en bash, la cual solo requiere cómo dependencias tres cosas:

  1. Que su sistema utilice Systemd (si quieres usar el script de instalación automático).
  2. Que tengas instalado el TOR en su sistema.
  3. iptables

Los pasos para realizarlo automáticamente son los siguientes:

  • Clonamos la herramienta desde el repositorio de Github
    git clone https://gitlab.com/edu4rdshl/tor-router
  • Ingresamos al directorio donde lo clonamos y ejecutamos el script cómo usuario root o sudo
    cd ./tor-router && sudo bash install.sh

Con eso ya estaría todo listo, puedes comprobar la URL https://check.torproject.org/ en tu navegador, allí te dirá que tu navegador está configurado para usar la red TOR.

Si usted desea usarlo en una distribución que no use systemd, siga las instrucciones en https://gitlab.com/edu4rdshl/tor-router/blob/master/README.md

· Manualmente

Este método se muestra cómo una acción de aprendizaje, entendimiento de cómo funciona y que hace la herramienta Tor-Router. Una vez que tengamos instalado TOR en nuestro sistema, hacemos lo siguiente:

  • Creamos una copia de seguridad de nuestro archivo /etc/tor/torrc por si se presenta algún problema
    cp /etc/tor/torrc /etc/tor/torrc.backup
  • Añadimos las siguientes líneas al final del archivo /etc/tor/torrc
    # Seting up TOR for transparent proxy for tor-router
    VirtualAddrNetwork 10.192.0.0/10
    AutomapHostsOnResolve 1
    TransPort 9040
    DNSPort 5353
    Para entender que realiza cada una de las opciones anteriores, lee el manual de tor en su distribución ejecutando este comando:
    man tor
  •  Creamos un archivo ejecutable llamado tor-router dentro de /usr/bin con las siguientes líneas
     

    #!/bin/bash
    # Executable file to create rules for transparent proxy
    # Destinations you do not want routed through Tor
    NON_TOR="192.168.1.0/24 192.168.0.0/24"
    # the UID Tor runs as, change this accordingly for your OS
    TOR_UID="43"
    # Tor's TransPort
    TRANS_PORT="9040"
    iptables -F
    iptables -t nat -F
    iptables -t nat -A OUTPUT -m owner --uid-owner $TOR_UID -j RETURN
    iptables -t nat -A OUTPUT -p udp --dport 53 -j REDIRECT --to-ports 5353
    
    for NET in $NON_TOR 127.0.0.0/9 127.128.0.0/10; do
      iptables -t nat -A OUTPUT -d $NET -j RETURN
    done
    
    iptables -t nat -A OUTPUT -p tcp --syn -j REDIRECT --to-ports $TRANS_PORT
    iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    
    for NET in $NON_TOR 127.0.0.0/8; do
      iptables -A OUTPUT -d $NET -j ACCEPT
    done
    
    iptables -A OUTPUT -m owner --uid-owner $TOR_UID -j ACCEPT
    iptables -A OUTPUT -j ACCEPT

    Damos permisos de ejecución al script creado:

    chmod +x /usr/bin/tor-router


    Te recomendamos leer el manual de iptables en tu distribución con el comando:

    man iptables
  • Creamos un servicio de arranque en el directorio /etc/systemd/system que ejecute el script creado anteriormente al inicio del sistema. Lo llamaremos tor-router.service
     

    [Unit]
     Description=Start rules for transparent tor proxy
     After=network-online.target 
    
    [Service]
     Type=simple
     ExecStart=/usr/bin/tor-router
     TimeoutStopSec=180
     KillMode=process
     KillSignal=SIGINT
    
    [Install]
    WantedBy=multi-user.target
  • Habilitamos el inicio automático de TOR y del servicio creado anteriormente y los iniciamos.

    systemctl enable tor && systemctl enable tor-router && systemctl start tor && systemctl start tor-router
  • Ahora comprobamos que todo esté funcionando de manera correcta, para revisar si todo nuestro sistema está bajo la red TOR, ejecutamos en nuestra terminal:
     

    curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'  

    La dirección IP obtenida anteriormente debe pertenecer a la red TOR

    ip

  • Para revisar desde nuestro navegador:

    Basta con abrir la url https://check.torproject.org y debe aparecer esto:

    check

Eso es todo lo que se necesita para realizar la tarea, una vez que todo termine, el tráfico completo de nuestro equipo estará bajo la red TOR brindando completo anonimato y privacidad.

Para comprobar que los DNS que usa su sistema no son los de su ISP, puede visitar https://dnsleaktest.com y realizar el test.

DNS test

· Deshabilitando el tráfico bajo TOR y las reglas iptables

Para desactivar todo lo realizado anteriormente basta con ejecutar estos comandos desde una terminal cómo root:

iptables -F
systemctl stop tor-router.service
systemctl disable tor-router.service
reboot

Registrate en el foro, síguenos en FacebookTwitterunete a nuestro chat en Discord y no olvides compartirnos en las redes sociales. También puede hacernos una donación o comprar nuestros servicios.

Acerca del autor

Especialista en Seguridad Informática bajo certificación OSCP, experto en técnicas de privacidad y seguridad en la red, desarrollador back-end, miembro de la FSF y Fundador de Security Hack Labs. Desarrollador de la distribución de hacking BlackArch Linux. Twitter: @edu4rdshl XMPP: [email protected]