Con questa guida cercherò di spiegare come configurare il proprio pc, in modo da avere i vantaggi della navigazione anonima tramite Tor, il filtraggio di banner e script fastidiosi o maliziosi dalle pagine dei siti, e contemporaneamente, mantenere un consumo di risorse ed una velocità accettabili.
Per fare questo, userò una combinazione di programmi configurandoli per lavorare assieme, e farò delle modifiche alla configurazione predefinita del browser.
I programmi che utilizzerò sono:
- Tor: un sistema di routing che ci permetterà di ridurre parecchio la nostra tracciabilità da parte di provider e siti visitati. Oltre a questo, ci darà la possibilità di accedere a quei siti bloccati dalla censura dei filtri statali, come The Pirate Bay, oppure a quei siti che impediscono l’accesso in base al paese d’origine di chi vi accede, come la webradio Pandora. Tor è inoltre supportato ed utilizzato da molti programmi di chat e peer to peer.
- Privoxy: un proxy senza cache che filtra i contenuti delle pagine. Elimina con una buona efficacia banner pubblicitari, popup, script e cookie traccianti. Lo scopo è simile a quello dell’accoppiata Disconnect + Karmablocker. Il vantaggio di utilizzare un servizio locale di proxy, è l’indipendenza dal browser. Ovvero, posso avere gli stessi filtri su qualsiasi browser che decida di usare, senza la necessità di cercare ed installare diverse aggiunte specifiche per ogni browser. In questo modo, posso mantenere il browser leggero, oppure utilizzare dei browser che non hanno a disposizione quei particolari addon. L’occupazione di risorse di privoxy, è molto inferiore a quella del solo Adblock plus, l'addon più famoso per Firefox e Chrome, e permette di fare un filtraggio molto più efficace. Nelle prove fatte, ho riscontrato che una soluzione con privoxy è più lenta di una in cui vi sono solo tor, polipo, pdnsd ed il filtraggio di script e pubblicità è affidato ad addon di firefox come Disconnect e Karmablocker. In alternativa, è possibile convertire e caricare le liste di AdBlock in Polipo a scapito, però, di un occupazione in memoria maggiore.
- Polipo: un proxy con cache estremamente veloce ed efficiente. Servirà per velocizzare la navigazione, riducendo i tempi di attesa che Tor, per via del suo funzionamento, inevitabilmente introduce. Questo software è talmente leggero e veloce che, utilizzandolo al posto della cache di Firefox, che verrà disabilitata per evitare di fare un inutile doppio lavoro di caching, si può notare un visibile incremento di prestazioni. Anche in questo caso, utilizzando più browser diversi, si ha il vantaggio di avere una cache comune che velocizza gli accessi e riduce lo spreco di spazio su disco causato dall’avere più programmi diversi, ognuno con la propria cache separata.
- pdnsd: un server dns che crea una cache locale su disco fisso. I vantaggi che porta questo software sono due. Protegge la privacy facendo passare le richieste di risoluzione dei nomi degli indirizzi attraverso Tor, rendendole quindi anonime e difficilmente loggabili dal provider. Migliora la velocità di risoluzione degli indirizzi grazie alla cache locale. Dopo un breve utilizzo, la maggior parte delle risoluzioni verranno fatte direttamente sul proprio pc, senza dover attendere i tempi di risposta, spesso lunghi, di server esterni. Anche questo, compensa la latenza che normalmente verrebbe introdotta da Tor. È possibile anche configurare dei server DNS secondari, nel caso la risoluzione dei nomi attraverso tor non funzionasse. In quel caso, le richieste non sarebbero più distribuite e difficili da tracciare, ma si tratterebbe di un compromesso che viene usato solo nei casi peggiori, mentre nel caso migliore, la richiesta verrebbe soddisfatta rapidissimamente dal proprio pc, senza neppure contattare un server esterno.
Le operazioni da fare non sono per nulla complicate. Personalmente ci sono riuscito andando per passi successivi e testando il funzionamento dei vari programmi mano a mano che li configuravo, in modo da rendermi conto subito di eventuali errori. Cercherò di mantenere la guida chiara e modulare, in modo da permettere a chi legge di testare mano a mano il funzionamento delle varie parti e, se preferisce, implementarne soltanto alcuni passaggi invece di tutti, o di potersi fermare a metà, mantenendo il sistema funzionante. Per poi, magari aggiungere gli altri passaggi quando vorrà. Nella maggior parte dei casi, bastano modifiche minime alle impostazioni predefinite. I motivi per cui sto scrivendo questa guida sono che in rete non ho trovato ancora una guida veloce e completa sull’integrazione di tutti questi programmi assieme, ma solo di alcuni, e che voglio mostrare quanto sia semplice migliorare di parecchio la protezione della propria privacy, ed al tempo stesso aggirare la censura, accedere ad un web di miglior qualità e velocizzare la propria connessione.
Potete seguire la guida per intero, oppure prendere solo le parti che vi interessano, adattandole alle vostre esigenze (ad esempio, se non vi interessa la parte che riguarda Tor, ma volete velocizzare la navigazione con Polipo, pdnsd e le modifiche a Firefox). La filosofia di unix di avere programmi che fanno un solo lavoro, ma molto bene, e di poterli combinare, offre un grosso vantaggio quando si vogliono fare queste cose.
Avendo provato varie combinazioni di questi programmi, posso dirvi quali diano la miglior velocità e la miglior protezione. In linea generale, tenete presente che i componenti che rallentano sono quelli che si occupano della sicurezza, cioè tor e privoxy, mentre quelli che migliorano le prestazioni sono pdnsd e polipo. Quindi, la configurazione che offre meno sicurezza, ma migliori prestazioni, è polipo+pdnsd, mentre quella che garantisce maggiore sicurezza è quella completa, che descriverò in questa guida.
Per la guida mi baserò su un’installazione di GNU ArchLinux, perché è la distribuzione che sto utilizzando ora. Quindi, chi utilizza altre distribuzioni potrebbe dover adattare la guida alla propria situazione. Probabilmente, per le distribuzioni derivate ed i fork, come Archbang e Chakra, si potrà seguire la guida senza dover adattare nulla. Fortunatamente, i pacchetti presenti in Arch sono quasi sempre “vanilla”, cioè esattamente come gli sviluppatori originali li hanno preparati, senza le personalizzazioni che molte altre distribuzioni fanno. Grazie a questo, qualsiasi distribuzione stiate usando, potere comunque dare un’occhiata all’esauriente wiki di Arch, trovandovi informazioni e guide utili. Se usate Debian e derivate, vi consiglio di leggere le note di liv scritte in coda a questo post.
Gli stessi software sono disponibili anche per altri sistemi operativi. In quel caso, è probabile che dobbiate adattare maggiormente le istruzioni. Tuttavia, in sistemi chiusi e proprietari, come Windows o Mac OS, dei quali non si ha accesso al codice, non si può mai essere sicuri di ciò che facciano… Questo può essere un problema, se il vostro obiettivo è di proteggere la privacy, in quanto non potrete mai essere certi che non ci siano delle backdoor oppure che vengano inviate delle informazioni su di voi a terzi, a vostra insaputa. In quel caso, l’unica cosa che potete fare è di fiidarvi della “bontà” di chi ha prodotto il sistema che usate.
Attenzione però a non fidarvi troppo nemmeno delle soluzioni qui proposte, perché non potranno mai garantirvi una protezione perfetti. Riguardo a questo, vi segnalo una pagina di avviso della distribuzione live Tails, basata su Debian: Tails – Warning.
Cosa accadrà, in teoria...
Browser->Privoxy->Polipo->Tor->(Rete)
_\pdnsd__________/^
Escludendo la risoluzione dei nomi, il viaggio d’andata è il seguente: il browser richiede la pagina al primo proxy, cioè Privoxy, il quale passa la richiesta a Polipo che, se non ha i dati desiderati nella propria cache (nel cui caso, li fornirà subito), la gira a Tor, che infine la invia, attraverso una connessione criptata, al primo di una delle catene di nodi (circuiti) attualmente attive, il fornitore della pagina riceverà la richiesta dall’exit-node, cioè dal nodo della rete Tor che si affaccia ad internet, anziché dal vostro IP. Il server contattato inizierà a rispondere alle varie richieste, inviando i dati desiderati (pagina, immagini, oggetti vari…), i quali transiteranno sui diversi nodi fino ad arrivare alla vostra macchina. Tor riceve i dati e li passa a Polipo, il quale li memorizzerà nella propria cache per un possibile successivo utilizzo e li girerà a Privoxy. Questo esaminerà il contenuto delle pagine ricevute, ripulendole da banner pubblicitari, spam, script e cookie indesiderati, e lo passerà infine al vostro browser, che visualizzerà il risultato sullo schermo.
Risoluzione dei nomi. Il browser o qualsiasi altro software che voglia accedere ad un server in rete, richiederà a pdnsd di trasformare l’indirizzo nominale in indirizzo numerico. Nel caso quell’indirizzo sia già stato cercato in precedenza, il dns restituirà immediatamente il risultato, in caso contrario passerà la richiesta a Tor, il quale contatterà i nodi esterni chiedendo la risoluzione. Se questo andrà a buon fine, restituirà il risultato a pdnsd, il quale lo salverà nella propria cache e lo passerà al programma che inizialmente aveva fatto la richiesta.
Riguardo all’ordine dei vari demoni nella catena, ho fatto dei tentativi anche invertendo Privoxy e Polipo (Browser->Polipo->Privoxy->Tor->Rete), ma mi è sembrato tutto più lento, rispetto all’ordine indicato sopra. Nel caso vogliate fare anche voi questa prova, in coda alla guida spiegherò cosa cambiare per invertire i due proxy.
In pratica...
Privoxy
Installiamo privoxy, prelevandolo dal repository tramite pacman (o il gestore di pacchetti usato dalla vostra distribuzione)
# pacman -S privoxy
NB: Come convezione, quando una riga inizia con ‘#’, si intende che il comando va lanciato come utente root (o facendo sudo), mentre il carattere ‘$’ indica che è sufficiente l’utente normale. Il carattere # viene usato spesso anche come inizio commento nei file di configurazione, quindi quando leggete, fate attenzione al contesto.
Possiamo testarlo subito, lanciandolo con
# systemctl start privoxy
Dovrebbe partire senza alcun errore. Andiamo nelle impostazioni di connessione del nostro browser, indicandogli di utilizzare come proxy http e ssl quello che risponde all’indirizzo localhost e porta 8118.
In Firefox, l’impostazione è in Preferenze->Avanzate->Rete->Impostazioni…
Disabilitate eventuali plugin come adblock e simili, ed iniziate a navigare. Se tutto funziona correttamente, dovreste visualizzare le pagine ripulite da banner e schifezze assortite.
Notare che, fino ad ora, non è ancora stato toccato il file di configurazione di Privoxy.
Se volete avere una conferma più certa del funzionamento del proxy, ed essere sicuri che il traffico passi effettivamente attraverso di lui, editate, da utente root, il file di configurazione, cercando una riga commentata simile a questa:
#debug 1 # Log the destination for each request Privoxy let through.
Togliete il # del commento, oppure inserite la riga, non commentata, a mano.
Riavviate privoxy # systemctl restart privoxy.
Aprite una finestra di terminale e, da utente root, digitate: tail -f
/var/log/privoxy/logfile
(a seconda della distribuzione, potrebbe cambiare il
nome e la posizione del file di log. fate riferimento alle voci “logdir” e
“logfile” contenute nel file di configurazione).
Dopodiché, iniziate a navigare. Dovreste veder scorrere sul terminale tutte le richieste a pagine ed oggetti vari, che transitano per il proxy.
Se tutto funziona a dovere, commentate nuovamente la voce “debug”. Potete quindi
inserire l’avvio del demone di privoxy al boot del sistema. Per fare questo,
date il comando
# systemctl enable privoxy
Se vi interessa solamente utilizzare un sistema veloce, leggero ed indipendente dal browser, per filtrare i contenuti delle pagine (in sostituzione ai già discussi Karma Blocker e Ghostery), potete fermarvi qua. Vi consiglio comunque di leggere il capitolo successivo, riguardo alle ottimizzazioni della configurazione di Firefox.
Se preferite continuare a far loggare il proxy, in modo da verificare eventuali comportamenti anomali (filtraggi eccessivi o insufficienti) ed eventualmente correggerli o migliorare le capacità di fitraggio, potete lasciare attiva l’opzione “debug”, che accetta diversi livelli di verbosità.
#debug 1 # Log the destination for each request Privoxy let through.
#debug 1024 # Log the destination for requests Privoxy didn't let through, and the reason why.
#debug 4096 # Startup banner and warnings
#debug 8192 # Non-fatal errors
In questo caso, potrebbe interessarvi far sì che il log venga ruotato periodicamente. Se la vostra distribuzione non lo include già, create uno script simile a questo in /etc/logrotate.d e dategli i permessi di esecuzione con chmod.
/var/log/privoxy/logfile {
create 660 root privoxy
notifempty
compress
postrotate
/bin/kill -HUP `cat /var/run/privoxy.pid 2>/dev/null` 2> /dev/null || true
endscript
}
Come impostazione predefinita, privoxy parte con una serie di regole abbastanza permissive, e non permette all'utente di essere configurato tramite browser. Consiglio di abilitare la configurazione da browser aggiungendo questa voce al file di configurazione: :::text /etc/privoxy/config enable-edit-actions 1
Dopodiché, assicuratevi di aver riavviato il demone ed andate alla pagina di configurazione http://config.privoxy.org/ Selezionate View & change the current configuraion ed Edit alla riga /etc/privoxy/match-all.action. Infine, selezionate Set to Medium. Se volete una protezione più aggressiva, provate Set to Advanced.
Per approfondire, potete cominciare dalla pagina della wiki di Arch: https://wiki.archlinux.org/index.php/Privoxy
Successivamente riprenderò in mano la configurazione di privoxy, per ottimizzarla ed adattarla all’integrazione con gli altri programmi.
Tor...
Anche in questo capitolo, procederò per piccoli passi, facendo verificare il corretto funzionamento mano a mano.. Installeremo Tor ed useremo la configurazione già fatta di Privoxy come base a cui collegarlo. Polipo verrà installato in seguito, una volta che saremo sicuri che Tor funziona a dovere e che il browser sia impostato con le ottimizzazioni migliori.
Installiamo Tor, prelevandolo dai repository ufficiali: # pacman -S tor
Per testarne subito il funzionamento, non è necessario fare alcuna modifica alla configurazione predefinita.
Lo avviamo come di consueto # systemctl start tor
Apriamo il browser, andiamo nelle impostazioni di rete, dove precedentemente avevamo inserito l’indirizzo e la porta di privoxy. Togliamo privoxy da HTTP ed inseriamo come proxy SOCKS 5, localhost su porta 9050.
Proviamo ad aprire qualche sito. Al momento, ci saranno delle latenze maggiori di quelle a cui siamo abituati, ma questo è solo un test per controllare il funzionamento. Della velocità, ci occuperemo dopo. Se riuscite a navigare, provate anche ad andare su qualche sito che sapete essere censurato, come thepiratebay. Se Tor funziona a dovreste, riuscirete a visualizzarlo. (Se il sito è lento a rispondere, potrebbe essere necessario un refresh della pagina.) In alternativa, potete usare il sito http://torcheck.xenobite.eu/
Come ulteriore prova, potere monitorare i log, in modo simile a come era stato
fatto per privoxy. # tail -f /var/log/messages.log |grep "localhost Tor"
NB: Sul vostro sistema, il log potrebbe essere in un file diverso, tipicamente /var/log/syslog. Oppure, il pacchetto Tor potrebbe essere preconfigurato per salvare il log su un file a parte.
Ora possiamo modificare il file di configurazione di Tor, /etc/tor/torrc modificando o aggiungendo queste righe, che serviranno a ridurre un po’ i tempi di attesa nei caricamenti
# Try for at most NUM seconds when building circuits. If the circuit isn't
# open in that time, give up on it. (Default: 1 minute.)
CircuitBuildTimeout 5
# Send a padding cell every N seconds to keep firewalls from closing our
# connections while Tor is not in use.
KeepalivePeriod 60
# Force Tor to consider whether to build a new circuit every NUM seconds.
NewCircuitPeriod 15
# How many entry guards should we keep at a time?
NumEntryGuards 8
Se tutto funziona come dovrebbe, andiamo a spiegare a privoxy come passare le
richieste a Tor… Per fare questo è sufficiente inserire nel file di
configurazione /etc/privoxy/config
la seguente riga (compreso il punto
finale):
forward-socks5 / localhost:9050 .
Per mantenere il file ordinato, inseritela successivamente alla sezione commentata dove vengono spiegati i forward.
Riavviamo privoxy con al solito # systemctl restart privoxy
Torniamo sulla configurazione di rete di Firefox, nella parte dei proxy. Togliamo il SOCKS 5 inserito precedentemente e rimettiamo localhost su porta 8118 in HTTP e SSL (come avevamo fatto inizialmente, appena installato privoxy).
Testiamo la navigazione. Dovremmo poter accedere ai siti censurati e al tempo stesso, filtrare le pagine da banner e schifezze. Se ci piace veder scorrere tante scrittine, riabilitate il debug di privoxy, riavviatelo e con due terminali monitorate sia il logo di privoxy, come precedentemente spiegato, sia quello di Tor. :D
Ora possiamo configurare anche altri software per utilizzare Tor. Tipicamente, client di chat e peer to peer, come bittorrent. Per questi ultimi, si raccomanda di non far mai passare tutto il traffico attraverso Tor, ma solamente le richieste verso i tracker servers. Se il programma permette di passare attraverso un proxy con protocollo SOCKS, possiamo specificargli l’indirizzo e la porta di Tor, cioè localhost (o 127.0.0.1) e 9050.
Come per privoxy, se vogliamo che il demone venga avviato automaticamente al
boot del sistema, diamo il comando # systemctl enable tor
...e ottimizzazioni di Privoxy e Firefox
Ora è il momento di recuperare un po’ di prestazioni.
In Firefox apriamo la pagina di configurazione avanzata, digitando about:config nella barra dell’indirizzo. Promettiamo al premuroso browser che non faremo danni e cerchiamo le impostazioni idicate sotto (iniziano tutte per network.http), modificandole come descritto.
network.http.keep-alive true
network.http.keep-alive.timeout 600
network.http.max-connections 30
network.http.max-connections-per-server 15
network.http.max-persistent-connections-per-proxy 16
network.http.max-persistent-connections-per-server 6
network.http.pipelining true
network.http.pipelining.maxrequests 8
network.http.pipelining.ssl true
network.http.proxy.keep-alive true
network.http.proxy.pipelining true
Con queste impostazioni, noi diciamo a Firefox di abilitare il pipelining, di accettare più connessioni contemporanee e di mantenere le connessioni aperte più a lungo del normale.
Potete usare queste impostazioni per velocizzare Firefox, anche se non utilizzate Privoxy e Tor.
Nella configurazione di privoxy, verifichiamo che queste impostazioni siano commentate:
#keep-alive-timeout 300
#default-server-timeout 60
#socket-timeout 300
Impostare timeout lunghi in privoxy, al contrario, lo rallenta. Quando abbinato ad un parent proxy, come faremo poi, la situazione peggiora notevolmente, causando tempi di attesa indesiderati.
Se vi interessava solamente una semplice e veloce installazione di Tor e Privoxy, con una configurazione ottimizzata di Firefox, potete fermarvi qua. Proseguite, se volete migliorare ulteriormente la velocità di navigazione, aggiungendo un velocissimo proxy con cache ed un server DNS locale che possa passare attraverso Tor.
Fonti ed approfondimenti:
- https://wiki.archlinux.org/index.php/Tor
- https://trac.torproject.org/projects/tor/wiki/doc/FireFoxTorPerf
- http://blog.bodhizazen.net/linux/speed-up-privoxy/
- http://securitywarn.blogspot.de/2011/04/how-to-speed-up-tor-proxy-network.html
- http://www.gabrielweinberg.com/blog/2010/08/duckduckgo-now-operates-a-tor-exit-enclave.html
Polipo
Passiamo ora ad installare il proxy Polipo, che ci permetterà di mantenere una cache locale delle pagine visitate, velocizzando la navigazione.
# pacman -S polipo
Creiamo la configurazione, partendo da un file di esempio
# cd /etc/polipo; cp config.sample config
Aggiungiamo o decommentiamo queste righe
allowedPorts = 1-65535
tunnelAllowedPorts = 1-65535
Verifichiamo ed eventualmente inseriamo o modifichiamo le seguenti impostazioni, utili per ottimizzare le connessioni
maxConnectionAge = 5m
maxConnectionRequests = 120
serverMaxSlots = 8
serverSlots = 2
Polipo utilizza molto efficientemente il pipelining http, sia in uscita verso i server web, sia in arrivo dal browser.
Quest’altra configurazione, servirà a fargli preferire i collegamenti tramite IPv4 a quelli IPv6, velocizzando le ricerche sui DNS.
dnsQueryIPv6 = reluctantly
Avviamo Polipo e testiamolo con il browser, inserendo il suo indirizzo e la sua porta nelle impostazioni del proxy HTTP, come già fatto in precedenza con privoxy. L’indirizzo è sempre localhost e la porta la 8123.
Se tutto funziona a dovere, possiamo disabilitare la cache del browser, che non ci servirà più. Andiamo nelle impostazioni della cache: Preferenze->Avanzate->Rete, cancelliamo il contenuto della cache, spuntiamo la casella per non utilizzare la gestione automatica e limitiamo la dimensione della cache a 0 MB di spazio.
Personalmente, ho trovato la cache di Polipo molto più veloce di quella nativa del browser.
Arrivati a questo punto, abbiamo il browser che accede alla rete utilizzando la cache di polipo al posto della propria.
Ma noi abbiamo già un proxy filtrante e la rete Tor configurati, quindi ora li metteremo in comunicazione.
Prima, configurerò privoxy in modo che passi le richieste a polipo, poi configurerò polipo in modo che le giri, a sua volta, a Tor. Se volete avere solamente un sistema con filtraggio pagine e cache centrale, seguite solo il primo passaggio, se volete avere cache e Tor senza filtraggio, seguite solo il secondo. Per la soluzione completa, seguitele entrambe.
Apriamo la configurazione di privoxy /etc/privoxy/config e, se precedentemente avevamo configurato il forward-socks5 verso tor, commentiamolo e sostituiamolo con questo
forward / localhost:8123
forward localhost .
Torniamo alla configurazione del nostro browser e modifichiamo il proxy, rimettendo l’indirizzo localhost e la porta di privoxy 8118. Testiamo la navigazione. In questo modo, abbiamo la cache di polipo ed il filtraggio delle pagine di privoxy.
Se ora vogliamo far passare tutto attraverso Tor, apriamo la configurazione di polipo ed inseriamo o decommentiamo le seguenti righe
socksParentProxy = "localhost:9050
socksProxyType = socks5
Riavviamo polipo e testiamo la navigazione. Se vogliamo utilizzare privoxy + polipo + tor, nelle impostazioni del proxy del browser dovranno essere impostati l’indirizzo e la porta di privoxy (localhost 8118), se non ci interessa privoxy, impostiamo l’indirizzo e la porta di polipo (localhost 8123).
Ricordiamo di inserire l’avvio del demone al boot del sistema # systemctl enable polipo
Polipo è un server molto leggero ed efficiente. La sua leggerezza è data anche
dal fatto che non controlla dinamicamente la dimensione della cache salvata, la
quale potrebbe potenzialmente crescere senza controllo, anche se è difficile che
questo accada. Possiamo comunque far sì che, il proxy ripulisca, una tantum, la
cache dai vecchi dati, chiamandolo con l’opzione -x. # polipo -x
Possiamo anche automatizzare questo processo, utilizzando uno script che verrà eseguito a scadenza regolare da cron.
Creiamo da utente root in /etc/cron.daily
il file polipo
, contenente
#!/bin/bash
/usr/bin/polipo -x >/dev/null 2>&1
e diamogli i permesse di esecuzione # chmod u+x /etc/cron.daily/polipo
Per la rotazione dei log, è necessario creare uno script come /etc/logrotate.d/polipo
/var/log/polipo.log {
missingok
rotate 7
compress
daily
postrotate
PIDFILE=/var/run/polipo/polipo.pid
if [ -f "$PIDFILE" ] ; then kill -USR1 $(cat "$PIDFILE") ; fi
endscript
}
È anche possibile consultare il manuale di polipo e modificarne la configurazione, direttamente dal browser, puntandolo all'indirizzo http://localhost:8123
A questo punto, abbiamo il nostro sistema di proxy concatenati, configurato e funzionante. Buona protezione della privacy, buone capacità di aggiramento della censura e buona velocità di navigazione.
Fonti e approfondimenti
- https://wiki.archlinux.org/index.php/Polipo
- http://www.go2linux.org/modify-polipo-cache-size-and-purge-rules
- http://bodhizazen.net/Tutorials/TOR#socks
Possiamo migliorare ancora un po’, installando un DNS locale, che faccia la cache degli indirizzi e rediriga le richieste di risoluzione verso la rete di Tor.
Pdnsd
Installiamo pdnsd nel solito modo # pacman -S pdnsd
Creiamo il setup iniziale partendo dal file di esempio, che successivamente
modificheremo. # cp /usr/share/doc/pdnsd/pdnsd.conf /etc/pdnsd.conf
Il file di configurazione /etc/pdnsd.conf
consiste in una sezione globale e
varie sezioni “server” commentate, cioè racchiuse fra “/” e “/”. Apriamolo
e, nella sezione “global”, cambiamo run_as="nobody";
in run_as="pdnsd";
Se vogliamo utilizzarlo in congiunzione a tor, aggiungiamo questa sezione server, subito dopo la sezione “global”.
# Tor DNS resolver
server {
label = "tor";
ip = 127.0.0.1;
port = 8853;
uptest = none;
exclude=".invalid";
policy=included;
proxy_only = on;
lean_query = on;
}
Lasciamo commentati gli altri server, in modo da evitare che transitino delle richieste DNS in chiaro. Per avere un minimo di sicurezza sulla propria privacy, è necessario che tutto il traffico inerente la navigazione transiti su canali sicuri.
Nella configurazione di Tor, in /etc/tor/torrc
, decommentando questa voce
ControlPort 9051
Ed aggiungiamo le seguenti
DNSPort 8853
AutomapHostsOnResolve 1
AutomapHostsSuffixes .exit,.onion
TransPort 9040
TransListenAddress 127.0.0.1
Ora riavviamo tor, facciamo partire pdnsd, e testiamo il funzionamento.
# systemctl restart tor
# systemctl start pdnsd
$ nslookup duckduckgo.com 127.0.0.1
$ nslookup http://www.archlinux.org 127.0.0.1
Se abbiamo ottenuto delle risposte positive, passiamo a configurare il sistema in modo che tutti gli indirizzi vengano risolti dal DNS locale, invece che da quelli esterni impostati precedentemente.
Sulla mia macchina non utilizzo né NetworkManager, né wicd, ed ho l’indirizzo della scheda di rete impostato staticamente, quindi sarà sufficiente editare il file /etc/resolv.conf, commentando o rimuovendo i nameserver precedentemente inseriti, ed aggiungendo l’indirizzo del dns locale.
nameserver 127.0.0.1
Chi utilizza NetworkManager, wicd o simili, dovrà fare la stessa cosa tramite gli strumenti forniti dal proprio programma gestore di rete, togliendo quindi i dns precedentemente inseriti, impostandolo di non ottenerli automaticamente tramite dhcp, e specificando come unico dns l’indirizzo locale 127.0.0.1
Se volete fare in modo che polipo utilizzi pdnsd per la risoluzione dei nomi,
invece dei resolver interno, aggiungete questa riga a /etc/polipo/config
dnsUseGethostbyname = yes
Verifichiamo che tutto funzioni correttamente, aggiungiamo pdnsd fra i demoni
all’avvio… Ed il gioco è fatto! :) # systemctl enable pdnsd
Fonti ed approfondimenti
- https://wiki.archlinux.org/index.php/Pdnsd
- http://wiki.debian.org/FreedomBox/Configs/Tor
- http://punto-informatico.it/2070093/PI/Commenti/cassandra-crossing-tor-lezioni-guida.aspx
Appendice: adattamenti per Debian e derivate, by liv
Complice un fine settimana lungo, ho seguito passo passo la tua ottima guida installando su Debian prima Privoxy, poi Tor, infine Polipo, per ottenere una configurazione Browser->Privoxy->Polipo->Tor->(Rete). Non ho installato pdnsd perché la velocità era già soddisfacente. La procedura per Debian è praticamente identica a quella che hai descritto tu; cambiano solo ovviamente i file di configurazione, rispetto ad Archlinux, e i singoli comandi. Per quanto riguarda Tor c’è qualche piccola differenza in più ma la logica è la stessa. Riporto di seguito tutta la procedura, e soprattutto i riferimenti ulteriori che ho consultato: magari a qualcuno potranno essere utili…
Per configurare Privoxy su Debian ho seguito, oltre alla tua guida, anche il wiki di Debianizzati: http://guide.debianizzati.org/index.php/Privoxy:_navigazione_sicura_a_prova_di_spam
Per quanto riguarda Tor, gli altri miei riferimenti sono stati: http://guide.debianizzati.org/index.php/Anonimato_in_rete_-_Tor http://www.nazioneindiana.com/2007/11/05/tor-lezioni-di-guida/ https://www.torproject.org/docs/debian.html.en
A proposito del Torbutton, di cui ora gli sviluppatori Tor sconsigliano l’uso a meno che non si utilizzi il Tor Browser Bundle, ho consultato:
https://www.torproject.org/torbutton/ https://blog.torproject.org/blog/toggle-or-not-toggle-end-torbutton
Ed ecco la mia procedura:
Dopo l’installazione di privoxy, l’ho lanciato da riga di comando:
#/etc/init.d/privoxy start
Per fare in modo che il browser (nel mio caso Firefox/Iceweasel) lo utilizzasse per navigare ho impostato il proxy accedendo al menu “Modifica/Preferenze/Avanzate/Rete/Impostazioni”, cliccando sul pulsante “Impostazioni connessione”. Ho selezionato la voce “Configurazione manuale del proxy” e a questo punto ho indicato l’indirizzo 127.0.0.1 e la porta 8118 sia come proxy HTTP sia come proxy SSL. Poi ho svuotato completamente la cache del browser, sempre seguendo la guida di Masque. Per verificare il comportamento di Privoxy, ho controllato il relativo log; per farlo ho editato, da utente root, il file di configurazione /etc/privoxy/config, cercando una riga commentata simile a questa:
debug 1 # Log the destination for each request Privoxy let through.
Eliminando il # del commento e salvando il file così modificato, si fa in modo che nel file di log si vedano le varie richieste inoltrate. Prima di aprire il file di log, ho riavviato privoxy con il comando
#/etc/init.d/privoxy restart
Quindi da terminale, e sempre da utente root, ho digitato:
#tail -f /var/log/privoxy/logfile
Poi ho iniziato a navigare e ho visto che contemporaneamente sul terminale venivano visualizzate le richieste transitanti per il proxy. Quindi, tutto ok: pertanto ho ricommentato la voce “debug” nel file di configurazione. Infine, per inserire l’avvio del demone di privoxy al boot del sistema, sono semplicemente andata sul menu “Sistema/Preferenze/Applicazioni d’avvio” e ho aggiunto /etc/init.d/privoxy alle altre applicazioni da lanciare durante il boot. (sicuramente c’è un sistema più elegante per fare questo…).
Dopo di che, ho affrontato Tor! Operando su una distro Debian, e volendo ottenere l’ultima versione stabile di Tor, per prima cosa ho aggiunto un repository di pacchetti dedicato; questo si fa aggiungendo, al file /etc/apt/sources.list, la seguente riga:
deb http://deb.torproject.org/torproject.org main
inserendo il nome della distribuzione Debian (Lenny, Squeeze, Wheezy, Sid) al posto di . Quindi, da terminale ho lanciato i seguenti comandi:
$ gpg –keyserver keys.gnupg.net –recv 886DDD89
$ gpg –export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -
# apt-get update
# apt-get install deb.torproject.org-keyring
# apt-get install tor tor-geoipdb
Tor è ora installato. A questo punto, per consentire il “chain” di Privoxy e Tor ho agito sul file di configurazione /etc/privoxy/config cercando la seguente riga:
forward-socks5 / 127.0.0.1:9050 .
L’ho decommentata; poi, per verificare il corretto funzionamento di Tor ho aperto il sito http://torcheck.xenobite.eu (anche https://check.torproject.org va bene).
Per quanto riguarda infine la configurazione avanzata di Firefox (per intenderci qualla cui si accede digitando about:config nella barra indirizzi) l’unica differenza è che oltre ai parametri per abilitare il pipelining e per mantenere le connessioni aperte, ho cambiato il parametro network.http.sendRefererHeader da 2 a 0. Questa impostazione, che ho trovato sulle “Lezioni di Guida” di Cassandra Crossing, evita che il browser fornisca al sito corrente l’indirizzo della pagina precedente visitata.
Per quanto riguarda Polipo, infine, non ci sono differenze sostanziali rispetto ad Archlinux tranne che di default gira con utente “proxy”, il quale non dovrebbe avere privilegi di root.