03 ene

Raspberry + Tor + HAVP + SQUID + Privoxy

Squid HAVP Privoxy

Tengo vacaciones, tengo vacaciones y una Raspberry apagada en una esquina, pobre de ella. Voy a explicar como utilizar raspberry para montar un sistema para mantener a “salvo” nuestra privacidad usando la red Tor + Privoxy + HAVP + SQUID, a más explicaré como añadir un antivirus que analice todas las peticiones que se hagan a través del sistema

La privacidad, que importante y que fácil es perderla.

La solución tiene diferentes piezas, vamos a ver que hace cada una de ellas.

Tor : Bien conocido por la mayoria https://es.wikipedia.org/wiki/Tor_(red_de_anonimato)

HAVP: Antivirus que escanea el trafico usando ClamAV http://www.server-side.de/features.htm

SQUID: Proxy https://es.wikipedia.org/wiki/Squid_(programa)

Privoxyhttps://es.wikipedia.org/wiki/Privoxy (filtra el contenido indeseable de las páginas, aumenta la seguridad del equipo, evita archivos que nos rastrean y elimina la publicidad.)

La idea viene siendo que las peticiones que hagamos a través de Squid se escaneen utilizando HAVP y se envien a Privoxy, este las limpie y las envíe a la red tor, algo así

RSHPT (3)

Squid HAVP Privoxy

 

En primera instancia lo que vamos a montar es la parte mas estandar que es 1 SQUID + PRIVOXY+TOR, esta solución funciona perfectamente en Raspberry

Algo así

RSHPT (2)

Squid HAVP Privoxy

 

 

La parte del segundo SQUID + HAVP es opcional y si queréis montarlo en Raspberry deberéis tener el modelo de 1GB. Por ello montamos la primera parte, que debe funcionara para todos y después ampliamos con a la parte del antivirus.

Empezamos.

[email protected]# aptitude install tor
[email protected]# aptitude install privoxy
[email protected]# aptitude install squid

Los tres paquetes esenciales, comenzaremos configurando los servidores tor.

Configuración del servicio Tor

Vamos a crear los ficheros de configurar tor

vim /etc/tor/torrc
SocksPort 9050 # what port to open for local application connections
SocksBindAddress 127.0.0.1 # accept connections only from localhost
AllowUnverifiedNodes middle,rendezvous
Log notice syslog
RunAsDaemon 1
User tor
Group tor
DataDirectory /var/lib/tor
Log notice file /var/log/tor/notices.log

Básicamente configuramos el puerto donde queremos que escuche el servidor de tor en nuestro caso por defecto en el 9050

Configuración del servicio Privoxy

Configuraremos Privoxy, este servicio tiene muchas opciones, segun comentan en la pagina del proyecto salir con las opciones por defecto es recomendable, después podremos jugar con más opciones si lo deseamos,  lo que debemos hacer es asociar un Privoxy con un Tor, ajustando el puerto en la linea froward-socks5

vim /etc/privoxy/config
confdir /etc/privoxy
logdir /var/log/privoxy
actionsfile standard.action  # Internal purpose, recommended
actionsfile default.action   # Main actions file
actionsfile user.action      # User customizations
filterfile default.filter
logfile logfile
listen-address  127.0.0.1:8118
toggle  1
enable-remote-toggle  0
enable-remote-http-toggle  0
enable-edit-actions 0
enforce-blocks 0
buffer-limit 4096
forward-socks5   /               127.0.0.1:9050 .
forwarded-connect-retries  0
accept-intercepted-requests 0
allow-cgi-request-crunching 0
split-large-forms 0

Con privoxy y tor ya tendremos las dos piezas esenciales, levantamos los servicios y comprobamos que si realizamos una petición al puerto del privoxy este ya se comunica con tor y nos envia por la red tor.

La idea de poner el SQUID por delante es que nos permite si lo deseamos aplicar acl y diferentes reglas, a mi parecer es algo más potente que privoxy

Configuración del servicio SQUID 1

Como hemos explicado en otro post, podéis montar vuestro propio paquete Squid para habilitar algunas opciones, en mi casa por ejemplo la posibilidad de añadir certificados ssl.

La instalación es sencilla

[email protected]# aptitude install squid3

Una vez instalado modificamos el fichero de configuración

acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
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
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
acl user src 192.168.1.138/32 ::1
acl userlist src all
http_access allow user
http_access allow userlist
http_access allow localhost manager
http_access deny manager
http_access allow localhost
http_access deny all
http_port 3400
cache_peer 192.168.1.101 parent 8118 0 no-query no-digest
never_direct allow all
coredump_dir /var/spool/squid3
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320
access_log /var/log/squid3/access_squid.log

Las lines que son un poco diferentes son

Acl de acceso, aqui teneis dos ejemplos, en uno limitamos por ip y en el otro damos permiso a todo (es un ejemplo y son redundantes entre ellas, es mas mejor no dar acceso a todo el mundo )

acl user src 192.168.1.138/32 ::1
acl userlist src all

Puerto del squid3

http_port 3400

Y a donde se enviará las peticiones, en este caso al puerto del privoxy

cache_peer 192.168.1.101 parent 8118 0 no-query no-digest
never_direct allow all

El log

access_log /var/log/squid3/access_squid.log

Arrancamos el servicio y comprobamos que la solución funciona

systemctl start squid3

Vamos a realizar 2 curls, el primero normal y el siguiente utilizando el sistema que hemos montado.

Sin Proxy

[email protected]:~#  curl ipv4.icanhazip.com
37.135.18.39

Con Proxy

curl -x 192.168.1.101:3400 ipv4.icanhazip.com
207.244.70.35

Claramente podemos ver el cambio de ip ya que estamos saliendo por la red TOR, con lo que conlleva.

Vamos a por la segunda parte, instalación y configuración de Squid 2 y HAVP

 Instalación de paquetes

Recordar que allí donde vayamos a instalar HAVP deberemos tener como mínimo 1 GB de RAM.

Configuración de Squid 2
vim /etc/squid3/squid.conf
acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
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
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
acl user src 192.168.1.138/32 ::1
acl userlist src all
http_access allow user
http_access allow userlist
http_access allow localhost manager
http_access deny manager
http_access allow localhost
http_access deny all
http_port 3128
cache_peer 127.0.0.1 parent 3410 0 no-query no-digest
never_direct allow all
coredump_dir /var/spool/squid3
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320
access_log /var/log/squid3/access_squid.log

Es la misma configuración que el anterior proxy pero lo que haremos es cambiar el puerto de entrada (en el caso que lo tengamos en la misma maquina) y apuntar el cache_peer al puerto del HAVP en este caso el 3410

cache_peer 127.0.0.1 parent 3410 0 no-query no-digest
 Configuración de HAVP

Deberemos decirle al servicio que todas aquella peticiones desde el SQUID 2 las debe reenviar al SQUID 1.

USER havp
GROUP havp
DAEMON true
PIDFILE /tmp/havp.pid
SERVERNUMBER 1
MAXSERVERS 1
SCANTEMPFILE /tmp/havp-XXXXXX
TEMPDIR /tmp
DBRELOAD 60
PARENTPROXY 192.168.1.101
PARENTPORT 3400
FORWARDED_IP false
X_FORWARDED_FOR false
PORT 3410
BIND_ADDRESS 127.0.0.1
ENABLECLAMLIB true
ENABLECLAMD false
ENABLEFPROT false
ENABLEAVG false
ENABLEAVESERVER false
ENABLESOPHIE false
ENABLETROPHIE false
ENABLENOD32 false
ENABLEAVAST false
ENABLEARCAVIR false
ENABLEDRWEB false

Por ultimo deberemos montar el sistema de ficheros donde tengamos HAVP con la opcion -o mand.

/dev/mmcblk0p2  /  ext4    defaults,noatime,mand  0       1
mount -o remount /

Arrancamos y comprobamos

 /etc/init.d/havp start
Starting havp (via systemctl): havp.service.
Comprovación

En el gif podeis ver 4 ventanas cada una de ellas es una de las piezas principales del sistema, la idea es lanzar un curl desde un cliente y ver como la peticion pasa por todas las piezas.

status

Lanzamos

curl to NSA

Como podemos ver la petición pasa por todos los sistemas, si que es verdad que introducir la pieza de HAVP hace que la petición sea mas lenta.

¿Cómo podemos utilizar la solución de forma sencilla?

En mi caso utilizo la extensión  para chrome FoxyProxy, con ella de forma sencilla podemos tener más de un proxy configurado y decidir cual utilizar en cada momento.

Por último un resultado de una página con bloqueos de Privoxy es

Captura O una prueba completa en una pagina que tiene bastantes anuncios, cookies y cosas raras y feas

Result_maauso.com

2 thoughts on “Raspberry + Tor + HAVP + SQUID + Privoxy

  1. ¡WOW!

    Veo que al final te has lanzado a hacerlo. Créeme cuando te digo que pienso probarlo, ¿eh?

    ¡Muchas gracias por este aporte!

    Un abrazo

Responder a [email protected] Cancelar respuesta

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

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>