(Torificando redes)Anonimato con Tor, Privoxy y Squid

Tor (The Onion Router) es una implementación libre de un sistema de encaminamiento llamado onion routing que permite a sus usuarios comunicarse en Internet de manera anónima. Originado en el US Naval Research Laboratory y hasta noviembre de 2005 patrocinado por la Electronic Frontier Foundation, Tor es desarrollado por Roger Dingledine y Nick Mathewson junto con otros desarrolladores.

Tor provee un canal de comunicación anónimo y está diseñado para ser resistente a ataques de análisis de tráfico (traffic analysis). Por lo tanto, usando Tor es posible realizar una conexión a un equipo sin que este o ningún otro tenga posibilidad de conocer el número de IP de origen de la conexión.

Tor es usualmente combinado con Privoxy para acceder a páginas web de forma anónima y segura. Privoxy es un proxy HTTP diseñado para proteger la privacidad en la navegación de internet. La interfaz de Tor es un proxy SOCKS (usualmente en el puerto 9050).

En este manual les daré dos variantes para integrarlo a  SQUID, la 1ra es la básica y la 2da es para cuando el squid es hijo de otro proxy.

Para las dos variantes instalaremos los paquetes correspondientes: tor, privoxy y squid, yo realicé esta instalación en Ubuntu 9.10 Karmic Koala y en los repos de esta versión ya no se encontraba el paquete tor, por lo que agregué los repos del server oficial de tor, no les explicaré la instalación con las fuentes para no alargar el manual,  al que le interese mejor de esta forma lo pueden ver en las documentacion del sitio oficial.

Agregar en el sources.list

$sudo nano /etc/apt/sources.list

Esta línea

deb http://deb.torproject.org/torproject.org karmic main

Agregar las llaves de los repositorios

$ gpg --keyserver keys.gnupg.net --recv 886DDD89
$ gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -
$ sudo apt-get update

Actualizar el listado de paquetes

$sudo aptitude update

Instalar los siguientes paquetes

$sudo aptitude install tor privoxy squid

Luego de realizado estos pasos iremos a la 1ra variante.
Variante #1 (Básica)

Configurar el archivo de configuración del privoxy agregando la línea que le pongo + abajo:

$sudo nano /etc/privoxy/config

#fijar esta linea

forward-socks4a / localhost:9050 .

No olvidar el pto. final (es importante)

En /etc/squid/squid.conf agregar esto:

cache_peer 127.0.0.1 parent 8118 7 no-query
acl sites_tor dstdomain "/etc/squid/sites_tor"
cache_peer_access 127.0.0.1 allow sites_tor
never_direct allow sites_tor

Aquí les pongo parte de mi /etc/sites_tor:
.sourceforge.net
code.google.com
googlecode.com
dl.google.com
tools.google.com
download.virtualbox.org
.java.com
.sun.com
.openoffice.org

Hasta aquí fueron los pasos básicos para la integración de Tor, Privoxy y Squid. Ahora les explicaré como montarlo cuando el tor depende de un proxy con autenticación para salir y el squid será hijo de dicho servidor proxy.

2da Variante (Dependiendo tanto el tor como el squid de un proxy con auntenticación)(Ejemplificación generalizada)

Después de haber instalado Tor+Privoxy+Squid y haber agregado la línea de los repos oficiales en el sources.list, haber agregado las llaves de los repos, haber agregado la línea de forwarding en el archivo de configuración de privoxy, pasaremos a configurar el tor y luego el squid.

Abrir el archivo de configuración del tor en /etc/tor/torrc y agregar estas líneas:

$sudo nano /etc/tor/torrc

Estas son las líneas:

ControlPort9051
HashedControlPassword 16:622BFE503B16A60560A13CE9BC3F65B66C78048D763BE1AC3A9687CBB0
HttpProxy x.x.x.x:3128
HttpProxyAuthenticator user:password
HttpsProxy x.x.x.x:3128
HttpsProxyAuthenticator user:password
Log notice stdout
ReachableAddresses *:80,*:443
ReachableAddresses reject *:*

nota: De + esta decir que las x es donde deberán poner la ip correspondiente al servidor proxy que este por encima de ustedes. Y en el puerto yo puse el 3128 pero puede que el servidor de ustedes use otro puerto y el user and pass es el usuario y contraseña que tienen que usar en caso de que la comunicación con este servidor proxy sea con autenticación de usuario, en caso contrario las lineas de autenticación no deberán ponerlas. Luego reiniciamos el tor y luego el privoxy:

$sudo /etc/init.d/tor restart
$sudo /etc/init.d/privoxy restart

Ahora pasaremos a configurar el squid, yo les aconsejo hacer un backup de su squid.conf para empezar con uno nuevo.

$cd /etc/squid
$sudo mv squid.conf squid-backup.conf

Con esto renombraron el archivo squid.conf a squid-backup.conf Ahora abriremos uno limpio.

$sudo nano /etc/squid/squid.conf]

Agregaremos todo lo que les pondré, no necesariamente tienen que hacerlo todo como está aquí, lo hacen depende de las necesidades que tengan. Les pondre comentadas las explicaciones de las líneas.

visible_hostname nameserver
http_port 3128

cache_peer x.x.x.1 parent 3128 0 no-query default login=user:password name=server1
cache_peer 127.0.0.1 parent 8118 7 no-query name=server2
acl sites_tor dstdomain '/etc/squid/sites_tor"
#ahora daremos los accesos para que las peticiones sepan que servidor usar si el proxy normal o la red tor.
cache_peer_access server1 allow !sites_tor #con esta línea decimos que todo lo que no contenga el archivo sites_tor lo pase por el proxy normal.
cache_peer_access server2 allow sites_tor # con esta que use la red tor para todo lo que contenga el fichero sites_tor
never_direct allow sites_tor
nonhierarchical_direct os
prefer_direct os

access_log /var/log/squid/access.log

cache_mem 100 MB

acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443 563     # https, snews
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl CONNECT method CONNECT

acl commandline src x.x.x.2

http_access allow commandline
http_access deny all

Esto es parte de lo que contiene mi archivo /etc/squid/sites_tor www.my-ip.es code.google.com googlecode.com dl.google.com tools.google.com download.virtualbox.org .java.com .sun.com .openoffice.org .sourceforge.net Lueg reinicien el squid

$sudo /etc/init.d/squid restart

Share
No comments yet.