Proxys Trasparentes/Aislados TOR

Las redes tor, son imprescindibles para todos aquellos que deseamos conservar lo poco que nos queda de nuestra privacidad y libertad en la sociedad del “gran hermano” y es imprescindible que ayudemos a darlas a conocer, para que todo el mundo pueda beneficiarse de estas herramientas, imprescindibles hoy en día, y puedan perder el miedo a usarlas y las incorporen a su vida como una aplicación mas que deben usar en su día a día.

Cuando usamos las redes tor, estamos acostumbrados a iniciar el servicio y que este se quede a a la escucha en un puerto predeterminado(9050,9151) el cual configuraremos en nuestra aplicación o navegador, para usarlo vía tor, hasta aquí todo perfecto, pero y si quisiéramos ¿enrutar todo el trafico via tor, para no tener que andar configurándolo en cada aplicación? para ello tenemos dos opciones:

Proxy Trasparente

Actualmente la configuración de conexiones de proxy transparente solo están soportadas en sistemas Gnu linux y BSD, porque en otros sistemas hay importantes leaks sobre en todo en windows y recomiendan usar mejor el sistema de proxy aislado, sobre el que hablaremos luego. La configuración de proxy transparente funciona sin soporte de la aplicación, por lo cual tenemos que tener muchísimo cuidado con los leaks que podemos provocar en nuestra configuración, lo que permitiría revelar nuestra conexión real :( por esto, la configuración del proxy aislado es mas completa(para conseguir evitar todo tipo de leaks), por lo que desde el blog de tor nos recomienda usar soluciones completas como Whonix para mayor integridad, que nos permitirá configurar tor como proxy transparente o aislado según nuestra conveniencia.

Si quisiéramos ver un ejemplo de como podríamos configurar tor como proxy transparente podemos usa el script que mencionan en la documentación –> https://trac.torproject.org/projects/tor/wiki/doc/TransparentProxy

Siguiendo los siguientes pasos:

Configuración

Para configurar nuestro proxy transparente solo necesitamos tener iptables y tor instalado en nuestro sistema y editar un par de archivos de configuración.

  • Editamos nuestro archivo torrc y añadidos la siguiente configuración:

    VirtualAddrNetworkIPv4 10.192.0.0/10
    AutomapHostsOnResolve 1
    TransPort 9040
    DNSPort 5353
    
  • Configuramos nuestro archivo de DNS del sistema para que todas las peticiones se resuelvan a traves de nuestra loopback(127.0.0.1) modificando el archivo /etc/resolv.conf:

          nameserver 127.0.0.1
    

Nos creamos un script con las siguientes reglas de iptables, para que cualquier petición se redirija a nuestra maquina local y de hay a al red tor.

Para que el script funcione sin modificar nada tienen que estar configurados los siguientes parámetros:

  • IP forwarding deshabilitado
  • Tu IP interna tiene que ser 192.168.1.1
  • Tu interfaz de red de salida es eth0
  • Tu interfaz de red d entrada es eth1
  • ( Tor esta arrancado con el UID 109(si no sabemos nuestro UID lo podemos sacar con “id -u tor”)

!/bin/sh

### set variables
#your outgoing interface
_out_if="eth0"

#the UID that Tor runs as (varies from system to system)
_tor_uid="109"

#Tor's TransPort
_trans_port="9040"

#Tor's DNSPort
_dns_port="5353"

#Tor's VirtualAddrNetworkIPv4
_virt_addr="10.192.0.0/10"

#LAN destinations that shouldn't be routed through Tor
#Check reserved block.
_non_tor="127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16"

#Other IANA reserved blocks (These are not processed by tor and dropped by default)
_resv_iana="0.0.0.0/8 100.64.0.0/10 169.254.0.0/16 192.0.0.0/24 192.0.2.0/24 192.88.99.0/24 198.18.0.0/15 198.51.100.0/24 203.0.113.0/24 224.0.0.0/3"

### Don't lock yourself out after the flush
#iptables -P INPUT ACCEPT
#iptables -P OUTPUT ACCEPT

### flush iptables
iptables -F
iptables -t nat -F

### set iptables *nat
#nat .onion addresses
iptables -t nat -A OUTPUT -d $_virt_addr -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports $_trans_port

#nat dns requests to Tor
iptables -t nat -A OUTPUT -d 127.0.0.1/32 -p udp -m udp --dport 53 -j REDIRECT --to-ports $_dns_port

#don't nat the Tor process, the loopback, or the local network
iptables -t nat -A OUTPUT -m owner --uid-owner $_tor_uid -j RETURN
iptables -t nat -A OUTPUT -o lo -j RETURN

for _lan in $_non_tor; do
 iptables -t nat -A OUTPUT -d $_lan -j RETURN
done

for _iana in $_resv_iana; do
 iptables -t nat -A OUTPUT -d $_iana -j RETURN
done

#redirect whatever fell thru to Tor's TransPort
iptables -t nat -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports $_trans_port

### set iptables *filter
#*filter INPUT
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT

#Don't forget to grant yourself ssh access for remote machines before the DROP.
#iptables -A INPUT -i $_out_if -p tcp --dport 22 -m state --state NEW -j ACCEPT

iptables -A INPUT -j DROP

#*filter FORWARD
iptables -A FORWARD -j DROP

#*filter OUTPUT
#possible leak fix. See warning.
iptables -A OUTPUT -m state --state INVALID -j DROP

iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT

#allow Tor process output
iptables -A OUTPUT -o $_out_if -m owner --uid-owner $_tor_uid -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j

ACCEPT

#allow loopback output
iptables -A OUTPUT -d 127.0.0.1/32 -o lo -j ACCEPT

#tor transproxy magic
iptables -A OUTPUT -d 127.0.0.1/32 -p tcp -m tcp –dport $_trans_port –tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT

#allow access to lan hosts in $_non_tor
#these 3 lines can be ommited
for _lan in $_non_tor; do
iptables -A OUTPUT -d $_lan -j ACCEPT
done

#Log & Drop everything else.
iptables -A OUTPUT -j LOG –log-prefix “Dropped OUTPUT packet: ” –log-level 7 –log-uid
iptables -A OUTPUT -j DROP

#Set default policies to DROP
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

Una vez tenemos el script, tan solo nos queda darle permisos de ejecucion y arrancarlo

chmod +x proxy_tor.sh

Proxy Aislado

El proxy aislado, es posiblemente la configuracion mas segura para montar un proxy via tor, es totalmente diferente al proxy trasnaparente y este no sufre de los temibles leaks, puesto que su configuracion impide el acceso directo a los servidores de DNS.

Para montar un proxy aislado, necesitamos de dos maquinas,fisicas o virtuales, estas dos maquinas estan conectadas a una red LAN asilada. Una maquina es la puerta de enlace(gateway) y la otra la maquina de trabajo(workstation), la puerta de enlace solo es usada para arrancar tor, la maquina encargada de puerta de enlace tiene dos interfaces de red, una de ella tiene acceso a Internet y la segunda interfaz esta conectada a la maquina de trabajo via cable LAN, tiene que tener deshabilitado IP Forwarding, la conexion LAN puede ser atraves de una conexion virtual o fisica. En esta configuracion la maquina de trabajo es usada para arrancar las aplicaciones, totalmente aisladas de Internet normal por lo que hacemos que sea practicamente imposible sufrir leaks de DNS(porque desde la maquina de trabajo no podemos resolver ninguna dirección de Internet, sin pasar por al gateway y esto lo pasa todo por Tor. El proyecto Whonix usa esta configuracion por defecto usando maquinas virtuales, con un proxy transparente adicional que puede ser deshabilitado

Fuente:https://www.whonix.org

Instalando Whonix

Whomix tiene disponible desde sus paginas versiones preparadas para algunas plataformas de virtualizacion como (kvm,virtualbox,Qubes).

En nuestro caso vamos a optar por usar virtualbox, por lo que simplemente descargamos las imagenes de su pagina

Una vez descargadas las importamos como servicio virtualizado en virtualbox y las iniciamos

Por defecto, la maquina del Gateway la cual tiene dos tarjetas tiene configurada la tarjeta que sale a internet como NAT, que es lo ideal para trastear con la MV sin que sean accesibles las maquinas de nuestra red interna, por lo que no tocaremos ningún parámetro de red de las maquinas una vez importadas, pero si deberíamos subir la memoria ram de las maquinas que tiene configurada por defecto a 1GB, y subir el numero de procesadores usando la virtualizacion por hardware si nuestro equipo lo soporta, para que vayan mas fluidas

Las dos maquinas disponen de sistema gráfico, para facilitar su uso, por lo que una vez arrancadas nos mostraran sus interfaces, para actuar sobre ellos, es importante no arranquéis las maquinas simultáneamente, si no que la primera en arrancar sea la del gateway, cuando este este completamente iniciada mostrando el escritorio basado en kde, arrancáis la de trabajo.

  1. WorkStation
  2. Gateway La maquina WorkStation es una maquina básica con algunas aplicaciones, configurada para salir a través del Gateway(navegador,mail,irc.etc..)

Lo primero que vamos a hacer es comprobar que la conectividad entre las dos maquinas y Internet es correcta, para ello pulsamos sobre el icono de WhonixCheck desde la maquina de trabajo cuando termine la comprobación nos mostrara un mensaje como el siguiente:

Que nos indica que la conexión es correcta, pero que nuestra paqueteria del sistema debían esta des- actualizada y nos da la opción de actualizarlo desde e terminal con apt-get.

Lo primero que podemos ver es que TB(Tor Browser) no viene instalado por defecto por lo que tenemos que bajarlo, usando su instalado o bajándolo manualmente, si usáis el instalador del escritorio armaros de paciencia tarda bastante.

Pero como hemos explicado antes, whonix, esta configurado para tener soporte de aplicacion con proxy aislado, por lo que cualquier aplicación que lancemos esta configurada para usar tor por defecto, como podemos ver simplemente abriendo firefox y accediendo a la comprobación online de tor.

Si intentamos resolver dominios .onion con firefox tendremos problemas puesto que este autocomplemente las url con www y no nos funcionara, por lo que ideal es usar TB.

Todas las aplicaciones que vienen instaladas en whonix están configuradas para salir por tor, por ejemplo hexchat:

Para comprobar que realmente nuestra ip publica es la del nodo de tor realizamos una petición curl desde el gateway por la consola, y nos devolverá la dirección ip del nodo tor al que estemos conectados

También realizamos una consulta nslookup a un dominio cualquiera y podemos comprobar que los DNS que nos asigna whonix para la resolucion de dns es la IP de la interfaz de la maquina gateway que esta conectada a la red privada que compartimos con ella .

Si queremos instalar cualquier aplicación o paquete tan solo tenemos que tirar de apt-get, funciona algo lento, pero es funcional.

Si en algún momento nuestra maquina gateway no esta disponible o hay algun problema de conexion mediante la red interna que mantienen las dos, whonix, no nos permitira la conexion y nos indicara el problema.

Whonix, también dispone de un repositorio propio y herramientas de configuración propias para tor y el firewall, pero creo que estaría bien explicarlas en mas profundidad en otros artículos, en resumidas whonix me parece una excelente y sencilla alternativa(según ellos algo beta) para mantener nuestra privacidad que junto con una buena vpn, nos puede ofrecer una excelente barrera de cuidar nuestra privacidad.

puppetmaster Written by:

3 Comments

  1. agosto 4
    Reply

    Excelente artículo, había escuchado de whonix pero hasta ahora no lo habia probado. Gracias por el aporte! :)

  2. Yo no había escuchado nada sobre whonix pero me ha interesado mucho, lo probaré.
    Un saludo

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax