Proxy HTTP con Privoxy su RaspberryPi

L'anonimato su Internet non esiste. E' però possibile utilizzare una combinazione di software i quali consentono di rendere più sicura la nostra navigazione. In una guida precedente abbiamo visto la guida su Pi-Hole. Vediamo oggi come installare e configurare Privoxy, un potente proxy HTTP che ci consente di concentrare, filtrare e manipolare la navigazione HTTP sul RaspberryPi.
Prerequisiti
- Raspberry Pi, ora siamo alla 4B ma la procedura è la stessa per tutte.
- RaspbianOS installato e configurato.
- Connessione SSH tramite terminale (Linux/MacOS) o Putty (Windows)
Installazione Privoxy
La mia installazione è basata su di una immagine fresca di Raspbian. Tutti i comandi saranno eseguiti dall'utente 'root' (oppure anteponendo il comando "sudo" a tutti i comandi elencati sotto).
# apt-get update && apt-get upgrade -y
# apt-get install privoxy
Quando il pacchetto sarà installato verrà automaticamente avviato. Potete modificare lo stato del servizio con i seguenti comandi:
# systemctl start privoxy
# systemctl restart privoxy
# systemctl stop privoxy
Configurazione Privoxy
La configurazione di base consente di utilizzare il proxy solo in locale. Per utilizzarlo su tutta la nostra rete locale fermiamo il servizio, portiamoci all'interno della cartella di configurazione e modifichiamo il file /etc/privoxy/config.
Cerchiamo la direttiva "listen-address" ed assicuriamoci di avere questa situazione, avendo cura di sostituire a IP_RASPBERRY l'indirizzo IP del dispositivo:
listen-address 127.0.0.1:8118
listen-address [::1]:8118
listen-address IP_RASPBERRY:8118
Inoltre la configurazione base non consente di modificare tramite web la configurazione di Privoxy, per questo bisogna abilitarla. Nello stesso file cerchiamo la direttiva "enable-edit-actions" ed assicuriamoci che sia impostata a '1'.
enable-edit-actions 1
In ultimo dovete sapere che di base viene abilitata la possibilità per l'utente che incappa in una pagina bloccata di sbloccarla. Per evitare che questo accada bisogna modificare la direttiva "enforce-blocks" in '1'.
enforce-blocks 1
Salvate, uscite ed avviate il servizio.
Configurazione client
Apriamo le Impostazioni Proxy ed abilitiamo la configurazione manuale, inseriamo l'IP del Raspberry e la porta in ascolto di Privoxy (8118).

Configurazione azioni
Consiglio di effettuare tutte le configurazioni web da modalità incognita. Portiamoci alla pagina web http://p.p/ e clicchiamo sul primo link del menu.


Nella 1a sezione troviamo i file di configurazione che vengono caricati in Privoxy e che possiamo modificare. Li differenziamo in questa maniera:
- match-all.action: definisce quali azioni intraprendere relative al blocco dei banner pubblicitari, immagini, pop-us, modifiche al contenuto, cookie etc e deve essere applicata di default. Generalmente è la prima azione che viene caricata.
- default.action: definisce alcune eccezioni alle regole default del file "match.all". Sono quelle regole che devono essere compatibili con la maggior parte degli utenti e può essere modificato solo dall'amministratore. E' la seconda azione che viene caricata e sovrascrive quelle precedenti del file "match-all".
- user.action: definisce azioni circoscritte alle preferenze ed eccezioni dei siti web normalmente visitati. Se questi richiedono particolari attenzioni (home banking, store online o altro) dovremmo inserire qui le nostre configurazioni in quanto in file non verrà mai modificato.
Nella 2a sezione troviamo invece le configurazioni applicate nel file /etc/privoxy/config.
Proviamo ora a modificare alcuni parametri nelle regole match-all, clicchiamo su "Edit" e facciamo attenzione ai tre bottoni in alto:

Questi vengono utilizzati per impostare l'aggressività standard di Privoxy. Per i novizi è suggerito di utilizzare il Cautions e testarlo per un po' di tempo prima di applicare modifiche più personalizzate. Questa configurazione dovrebbe coprire gran parte degli utenti alle prime armi.
Per completezza i rispettivi tre bottoni hanno i seguenti gradi di aggressività:
Funzioni | Cautious | Medium | Advanced |
---|---|---|---|
Ad-blocking Aggressiveness | medium | high | high |
Ad-filtering by size | no | yes | yes |
Ad-filtering by link | no | no | yes |
Pop-up killing | blocks only | blocks only | blocks only |
Privacy Features | low | medium | medium/high |
Cookie handling | none | session-only | kill |
Referer forging | no | yes | yes |
GIF de-animation | no | yes | yes |
Fast redirects | no | no | yes |
HTML taming | no | no | yes |
JavaScript taming | no | no | yes |
Web-bug killing | no | yes | yes |
Image tag reordering | no | yes | yes |
Configurazione avanzata
In Privoxy è possibile configurare il comportamento del proxy per ogni azione e su qualunque sito web. Vediamo alcuni esempi sulle azioni user.action in due modalità: tramite l'interfaccia web http://p.p/ e da riga di comando.
Accettare tutti i cookie da determinati siti web
All'interno troverete delle sezioni pre-compilate. Per vostra informazione nel rispettivo file di testo abbiamo anche dei commenti che ci aiutano a capire queste sezioni a cosa servono. Apriamo il file /etc/privoxy/user.action e cerchiamo la riga "Begin examples".


Configurazione da GUI e da CLI
In questo esempio consentiamo tutti i cookie dai siti *.site1. com e *.site2.it per evitare, ad esempio, di dover reinserire ogni volte le password o le preferenze.
Bloccare l'accesso ad un sito
Se volessimo invece bloccare l'accesso a determinati siti web o patterns di siti web procediamo come segue



Ora provando a navigare su Facebook non riusciremo a raggiungere la pagina web.
NB: Ricordo che Privoxy è un proxy HTTP e non HTTPS pertanto alcune azioni (come nel caso di Facebook) devono comprendere l'intero dominio. La documentazione ufficiale di Privoxy dettaglia molto bene le singole azioni e come implementarle.
Logging
All'interno del file /etc/privoxy/config troverete una sezione chiamata DEBUGGING. In questa sezione potete decidere la verbosità del file di log. Potete specificare molteplici righe per abilitare più o meno informazioni.

Conclusioni
Privoxy HTTP Proxy è un ottimo strumento anche come home-utility. Affiancato a Pi-Hole potremo filtrare praticamente tutte le pubblicità (o quasi) che inondano le nostre ricerche su Internet. Seppur non abbia supporto per HTTPS è possibile ugualmente bloccare gran parte delle richieste.