TOR: Proxificando la salida a Internet en Linux

Hoy hablaremos sobre cómo podemos proxificar o, en la jerga, “torificar”, toda la salida a Internet de nuestro ordenador utilizando la red TOR.

Seguramente alguna vez nos ha pasado que hemos necesitado conectarnos a servicios remotos en alguna red que restringe todo trafico excepto web y dns, cierto?

Sin ir más lejos, y como a varios de ustedes debe pasarles, a veces he necesitado conectarme con pidgin a mis cuentas xmpp, o con claws-mail o seamonkey a mis cuentas de correo electrónico, por ejemplo, porque no me gusta acceder a los servicios de webmail.tor

Pues bien, ¿qué podemos hacer si la red en la que estamos conectados nos restringe estos puertos? (y el administrador demora media vida en resolvernos el inconveniente 😛 )

Una solución es conectarse utilizando la red TOR, que cifrará nuestro tráfico y podremos conectarnos a cualquier servicio sin que la red actual nos restrinja!

Sabido es que esta red nos permite conectarnos a sitios web manteniendo en privado nuestra ubicación e ip de conexión. Esto lo hacemos gracias a que instalamos un cliente en nuestro sistema, y lo utilizamos para conectarnos a la red cifrada, o bien utilizamos un navegador con un cliente incorporado, como es el TOR Browser Bundle.

Navegando en torproject.org me encuentro con un link más que interesante de cómo proxificar todas las salidas a Internet, y así, no solo navegar anónimamente, sino también conectarse a cualquier servicio por medio de la misma red tor! De esta manera, además de salir de manera anónima a Internet, podremos conectarnos a los servicios que nos interese, por más que nuestra red de origen esté cerrada 🙂

Requerimientos

Vamos a utilizar un script que hace uso de un cliente tor, y de iptables (netfilter en Linux), por lo que tendremos que tener instalados los paquetes.

Netfilter/iptables ya viene instalado en la mayoría de las distribuciones, y en el caso de Debian, podremos instalar el cliente de la siguiente manera:

Ahora procederemos a configurar nuestro cliente para habilitarlo en modo transporte.
Para ello editaremos el archivo /etc/tor/torrc y añadiremos las siguientes líneas:

Configurando el cliente TOR

Configurando el resolver dns

También deberemos configurar nuestro servicio de resolución de nombres al equipo local, de modo que las consultas dns también salgan a Internet utilizando el proxy:

Configurando iptables

Luego tendremos que configurar nuestro iptables para permitir las conexiones de todos los servicios hacia Internet por medio de nuestro proxy local TOR.

Afortunadamente, para quienes no quieran aprender iptables desde cero ahora, podrán configurar y lanzar un simple script provisto por los amigos de torproject.org.

El script, un poco modificado por mi, es el siguiente:

Poniendo en marcha el script

Una vez que hayamos escrito nuestro script de iptables para lanzar nuestro cliente tor en modo transporte, y suponiendo que le hemos puesto de nombre “proxy_tor.sh”, podremos lanzarlo de la siguiente manera:

Luego de lo cual podremos verificar el acceso a los servicios navegando en sitios como “miip.net“, o tratando de conectarnos con nuestros clientes habituales de mensajería, correo, y demás.

Espero que les sea de utilidad!!

Cualquier sugerencia o comentario por favor hacerlo en el artículo, así todo el que lo lea puede aprender más!