Autore Topic: Come proteggere la privacy, aggirare la censura e navigare più velocemente  (Letto 96926 volte)

Offline Masque

  • *
  • Post: 723
  • Reputazione: 60
    • Mostra profilo
Scopo: Configurare i tool polipo, pdnsd, tor, privoxy
Come: Installando i relativi pacchetti e configurandone i relativi file di configurazione
Prerequisiti: Avere una connessione internet funzionante e conoscenza del terminale
Tempo necessario: 30-60 minuti

Questa guida è stata fatta su base Arch, ma penso che con quasi nessuna modifica, la si possa applicare pari pari anche a Chakra. I pacchetti ci sono tutti. Se non nei repository, in ccr.

Con questa guida cercherò di spiegare come configurare il proprio pc, in modo da avere i vantaggi della navigazione anonima tramite i proxy distribuiti di 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, se non migliori a quelle abituali. 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 proxy distribuiti, 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 e TNTvillage Scambioetico, 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 Ghostery + Karmablocker, di cui avevo già scritto. Il vantaggio di utilizzare un servizio locale di proxy, è l’indipendenza dal browser. Ovvero, posso avere il vantaggio dei 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, e permette di fare un filtraggio molto più efficace.
  • 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 (Tor + Polipo, oppure Tor + Privoxy, Privoxy + Polipo, pdnsd + Tor…), 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à (per via del filtraggio di banner e script che rallentano e distraggono) 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.
A tal proposito, 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.
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 fidarvi della “bontà” di chi ha prodotto il sistema che usate.

Cosa accadrà, in teoria…

Codice: [Seleziona]
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 sparpaglia fra vari nodi, i quali faranno arrivare al fornitore della pagina richieste diverse provenienti da indirizzi d’origine diversi (normalmente, le richieste arriverebbero tutte dallo stesso indirizzo di partenza, cioè quello fornitovi dal vostro provider). 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….
« Ultima modifica: 27 Febbraio 2013 ore 15:00 da Masque »

Offline Masque

  • *
  • Post: 723
  • Reputazione: 60
    • Mostra profilo
In pratica….
Privoxy

Installiamo privoxy, prelevandolo dal repository tramite pacman (o il gestore di pacchetti usato dalla vostra distribuzione)
Codice: [Seleziona]
# 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
Codice: [Seleziona]
# sudo systemctl start privoxy.service
Dovrebbe partire senza alcun errore. Andiamo nelle impostazioni di connessione del nostro browser, indicandogli di utilizzare come proxy http 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:

Codice: [Seleziona]
#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

Codice: [Seleziona]
# sudo systemctl restart privoxy.service
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, eseguite il seguente comando. (Con distribuzioni diverse, usate il loro metodo):

Codice: [Seleziona]
sudo systemctl enable privoxy.service
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à.

Codice: [Seleziona]
#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.

Codice: [Seleziona]
/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
}

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.
« Ultima modifica: 27 Febbraio 2013 ore 14:59 da Masque »

Offline Masque

  • *
  • Post: 723
  • Reputazione: 60
    • Mostra profilo
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:

Codice: [Seleziona]
# pacman -S tor
Per testarne subito il funzionamento, non è necessario fare alcuna modifica alla configurazione predefinita.

Lo avviamo come di consueto

Codice: [Seleziona]
# sudo 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.

Codice: [Seleziona]
# 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

Codice: [Seleziona]
# 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):

Codice: [Seleziona]
forward-socks5 / localhost:9050 .
Per mantenere il file ordinato, inseritela successivamente alla sezione commentata dove vengono spiegati i forward.

Riavviamo privoxy con al solito
Codice: [Seleziona]
# sudo 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 (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

Potrete notare che alcuni siti sono visibilmente più veloci di altri. Questo avviene quando il server che ospita il sito è contemporaneamente un exit node della rete di Tor. Questo è, ad esempio, il caso del motore di ricerca DuckDuck Go.

Ora possiamo configurare anche altri software per utilizzare Tor. Tipicamente, client di chat e peer to peer. 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, lo abilitiamo con:

Codice: [Seleziona]
# sudo systemctl enable tor
« Ultima modifica: 17 Febbraio 2013 ore 00:00 da dinolib »

Offline Masque

  • *
  • Post: 723
  • Reputazione: 60
    • Mostra profilo
…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.

Codice: [Seleziona]
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:

Codice: [Seleziona]
#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. (Questa guida inizia a somigliare sempre di più ad un LibroGame… :D)

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
« Ultima modifica: 22 Aprile 2012 ore 13:38 da Masque »

Offline Masque

  • *
  • Post: 723
  • Reputazione: 60
    • Mostra profilo
Polipo

Passiamo ora ad installare il proxy Polipo, che ci permetterà di mantenere una cache locale delle pagine visitate, velocizzando la navigazione.
Codice: [Seleziona]
# ccr -S polipo
Creiamo la configurazione, partendo da un file di esempio

Codice: [Seleziona]
# cd /etc/polipo; sudo cp config.sample config
Aggiungiamo o decommentiamo queste righe

Codice: [Seleziona]
allowedPorts = 1-65535
tunnelAllowedPorts = 1-65535

Verifichiamo ed eventualmente inseriamo o modifichiamo le seguenti impostazioni, utili per ottimizzare le connessioni

Codice: [Seleziona]
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.

Codice: [Seleziona]
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

Codice: [Seleziona]
forward / localhost:8123
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

Codice: [Seleziona]
socksParentProxy = "localhost:9050"
socksProxyType = socks4a

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 servizio al boot del sistema, abilitiamolo con systemctl

Codice: [Seleziona]
sudo 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.

Codice: [Seleziona]
# polipo -x
Possiamo anche automatizzare questo processo, creando uno script che verrà eseguito a scadenza regolare da cron.

Codice: [Seleziona]
#!/bin/bash
/usr/bin/polipo -x >/dev/null

Salviamo questo script in /etc/crond.daily/polipo e diamogli i permessi di esecuzione

Codice: [Seleziona]
# chmod +x /etc/cron.daily/polipo
Se non presente, possiamo, come per privoxy, creare uno script per la rotazione dei log. Creiamolo come /etc/logrotate.d/polipo

Codice: [Seleziona]
/var/log/polipo {
        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

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.
« Ultima modifica: 28 Aprile 2014 ore 23:16 da Masque »

Offline Masque

  • *
  • Post: 723
  • Reputazione: 60
    • Mostra profilo
Pdnsd

Installiamo pdnsd nel soluto modo
Codice: [Seleziona]
# pacman -S pdnsd
Creiamo il setup iniziale partendo dal file di esempio, che successivamente modificheremo.
Codice: [Seleziona]
# cp /etc/pdnsd.conf.sample /etc/pdnsd.conf
Per ragioni di sicurezza, faremo in modo che pdnsd giri con un utente creado ad hoc, in modo simile a come abbiamo fatto precedentemente per polipo.
Creiamo utente e gruppo
Codice: [Seleziona]
# groupadd pdnsd
# useradd -r -d /var/cache/pdnsd -g pdnsd -s /bin/false pdnsd

Modifichiamo il proprietario ed i permessi delle directory dati
Codice: [Seleziona]
# chown -R pdnsd:pdnsd /var/cache/pdnsd
# chmod 700 /var/cache/pdnsd
# chmod 600 /var/cache/pdnsd/pdnsd.cache

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”.

Codice: [Seleziona]
# 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;
}

Possiamo anche decommentare il server opendns, togliendo i “/*” e “*/” che racchiudono la sua sezione. La configurazione di OpenDNS è un po’ particolare e voglio spiegarla. Normalmente, OpenDNS si comporta in modo non standard, rispondendo con una pagina di ricerca su Google, nei casi in cui la risoluzione di un indirizzo non sia andata a buon fine. Questo comportamento può essere indesiderato per due motivi: 1) non voglio che venga fatta una ricerca su Google, perché voglio proteggere la mia privacy; 2) voglio che se il dns non riesce a risolvere il nome, mi ritorni la risposta standard di errore, in modo che il mio sistema passi ad interrogare il server dns successivo nella mia lista.
Per questo motivo, nella sezione OpenDNS, vi è un comando che istruisce pdnsd a rifiutare le risposte che arrivano dagli indirizzi che OpenDNS usa per dirottare il browser sulla pagina di ricerca.

Codice: [Seleziona]
# The servers provided by OpenDNS are fast, but they do not reply with
# NXDOMAIN for non-existant domains, instead they supply you with an
# address of one of their search engines. They also lie about the addresses of
# of the search engines of google, microsoft and yahoo.
# If you do not like this behaviour the "reject" option may be useful.
server {
        label = "opendns";
        ip = 208.67.222.222, 208.67.220.220;
        reject = 208.69.32.0/24,  # You may need to add additional address ranges
                 208.69.33.0/24,  # here if the addresses of their search engines
                 208.69.34.0/24,  # change.
                 208.67.219.0/24,
                 173.194.35.0/24,
                 208.67.216.136,
                 208.67.217.136;
        reject_policy = fail;     # If you do not provide any alternative server
                                  # sections, like the following root-server
                                  # example, "negate" may be more appropriate here.
        timeout = 4;
        uptest = ping;            # Test availability using ICMP echo requests.
        ping_timeout = 100;       # ping test will time out after 10 seconds.
        interval = 15m;           # Test every 15 minutes.
        preset = off;
}

Utilizziamo questa configurazione, inserita dopo quella del Tor DNS resolver, se vogliamo utilizzare OpenDNS come server di backup nei casi in cui la risoluzione tramite Tor non vada a buon fine. Utilizziamo solo questa configurazione, oppure adattiamola alle nostre esigenze cambiando gli indirizzi dei server DNS con quelli desiderati, se non ci interessa usare Tor.

Se utilizziamo Tor, modifichiamo la sua configurazione in /etc/tor/torrc, decommentando questa voce

Codice: [Seleziona]
ControlPort 9051
Ed aggiungendo le seguenti

Codice: [Seleziona]
DNSPort 8853
AutomapHostsOnResolve 1
AutomapHostsSuffixes .exit,.onion

TransPort 9040
TransListenAddress 127.0.0.1

Ora riavviamo tor, facciamo partire pdnsd, e testiamo il funzionamento.
Codice: [Seleziona]
# rc.d restart tor
# rc.d start pdnsd

$ nslookup duckduckgo.com 127.0.0.1
$ nslookup 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.

Codice: [Seleziona]
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

Verifichiamo che tutto funzioni correttamente, ed aggiungiamolo fra i demoni all'avvio... Ed il gioco è fatto! :)
In /etc/rc.conf
Codice: [Seleziona]
DAEMONS=(... @tor @pdnsd @polipo @privoxy ...)
Fonti ed approfondimenti

    https://wiki.archlinux.org/index.php/Pdnsd
    http://wiki.debian.org/FreedomBox/Configs/Tor

Nota per chi utilizza NetworkManager, wicd o simili con la scheda configurata tramite DHCP:
Può capitare che, al momento del caricamento dei demoni di tor, pdnsd, polipo e privoxy, la rete non sia ancora pronta. Se non avete la necessità di utilizzare NM e wicd, ad esempio se il vostro ip locale sarà sempre lo stesso, oppure se non utilizzate una scheda di rete wireless (ad esempio, se avete un pc fisso collegato tramite cavo di rete al router), potete usare il normale demone "network" ed impostare staticamente i dati di ip, netmask e gateway della vostra scheda di rete, semplificando così la configurazione.
Oppure, potete far caricare i demoni dopo un po' di ritardo, dando così tempo alla rete di impostarsi.
La cosa più semplice, è di metterli a mano nello script rc.local. o direttamente così:

Codice: [Seleziona]
rc.d start pdnsd && rc.d start polipo && rc.d start privoxy
oppure aggiungendo un ritardo, così:

Codice: [Seleziona]
(sleep 5; rc.d start pdnsd && rc.d start polipo && rc.d start privoxy)&
Con il '&' vengono caricati in background, magari mentre sta caricando login grafico o direttamente il desktop. Senza, aspetterebbe l'avvio dei tre. I 5 secondi, sono un esempio, potreste dover allungare o accorciare l'attesa a seconda delle necessità.
« Ultima modifica: 02 Giugno 2012 ore 18:12 da Masque »

Offline Masque

  • *
  • Post: 723
  • Reputazione: 60
    • Mostra profilo
Riepilogo dei miei file di configurazione, ripuliti dai commenti e dalle parti non utilizzate.

/etc/privoxy/config:

Codice: [Seleziona]
# Privoxy config file
confdir /etc/privoxy

logdir /var/log/privoxy
actionsfile match-all.action # Actions that are applied to all sites and maybe overruled later on.
actionsfile default.action # Main actions file
actionsfile user.action # User customizations

filterfile default.filter
filterfile user.filter # User customizations

logfile logfile

#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

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 privoxy->tor
# forward privoxy->polipo
#forward-socks5 / localhost:9050 .
forward / localhost:8123

forwarded-connect-retries 0

accept-intercepted-requests 0

allow-cgi-request-crunching 0

split-large-forms 0

# disable long timeouts
#keep-alive-timeout 300
#default-server-timeout 60
#socket-timeout 300

/etc/tor/torrc:

Codice: [Seleziona]
## CONFIGURED FOR ARCHLINUX

## Replace this with "SocksPort 0" if you plan to run Tor only as a
## server, and not make any local application connections yourself.
SocksPort 9050 # what port to open for local application connections
SocksBindAddress 127.0.0.1 # accept connections only from localhost

## Allow no-name routers (ones that the dirserver operators don't
## know anything about) in only these positions in your circuits.
## Other choices (not advised) are entry,exit,introduction.
AllowUnverifiedNodes middle,rendezvous

## Logs go to stdout at level "notice" unless redirected by something
## else, like one of the below lines. You can have as many log lines as
## you want.
##
## Send all messages of level 'notice' or higher to /var/log/tor/notices.log
#Log notice file /var/log/tor/notices.log
## Send only debug and info messages to /var/log/tor/debug.log
#Log debug-info file /var/log/tor/debug.log
## Send ONLY debug messages to /var/log/tor/debug.log
#Log debug-debug file /var/log/tor/debug.log
## To use the system log instead of Tor's logfiles, uncomment these lines:
Log notice syslog
## To send all messages to stderr:
#Log debug stderr

## Uncomment this to start the process in the background... or use
## --runasdaemon 1 on the command line.
RunAsDaemon 1
User tor
Group tor

## The directory for keeping all the keys/etc. By default, we store
## things in $HOME/.tor on Unix, and in Application Data\tor on Windows.
DataDirectory /var/lib/tor

## The port on which Tor will listen for local connections from Tor controller
## applications, as documented in control-spec.txt. NB: this feature is
## currently experimental.
ControlPort 9051

# For DNS
DNSPort 8853
AutomapHostsOnResolve 1
AutomapHostsSuffixes .exit,.onion

TransPort 9040
TransListenAddress 127.0.0.1

/etc/polipo/config
Codice: [Seleziona]
# configuration file for Polipo. -*-sh-*-

# to tor
socksParentProxy = "localhost:9050"
socksProxyType = socks4a

# allowed ports
allowedPorts = 1-65535
tunnelAllowedPorts = 1-65535

# keep connections alive and allow more slots to improve speed
maxConnectionAge = 5m
maxConnectionRequests = 120
serverMaxSlots = 8
serverSlots = 2

/etc/rc.d/polipo:
Codice: [Seleziona]
#!/bin/bash
. /etc/rc.conf
. /etc/rc.d/functions

DAEMON=polipo
ARGS="daemonise=true pidFile=/var/run/$DAEMON/$DAEMON.pid"
PID=$(pidof -o %PPID /usr/bin/$DAEMON)

case $1 in
    start)
        stat_busy "Starting $DAEMON"
        if ck_daemon $DAEMON; then
            [[ ! -d /var/run/$DAEMON ]] && install -d $DAEMON --group=polipo --owner=polipo /var/run/$DAEMON
            su -c "/usr/bin/$DAEMON $ARGS" -s /bin/sh polipo >/dev/null 2>&1
            if [[ $? != 0 ]]; then
                stat_fail
            else
                add_daemon polipo
                stat_done
            fi
        else
            stat_fail
        fi
    ;;
    stop)
        stat_busy "Stopping $DAEMON"
        if ! ck_daemon $DAEMON; then
            kill $PID >/dev/null 2>&1
            if [[ $? != 0 ]]; then
                stat_fail
            else
                rm_daemon $DAEMON
                stat_done
            fi
        else
            stat_fail
        fi
    ;;
    purge)
        stat_busy "Purging $DAEMON"
        [[ ! -d /var/run/$DAEMON ]] && install -d $DAEMON /var/run/$DAEMON
        if ! ck_daemon $DAEMON; then
            kill -USR1 $PID >/dev/null 2>&1
            sleep 1
            /usr/bin/$DAEMON -x $ARGS >/dev/null 2>&1 || stat_fail
            kill -USR2 $PID >/dev/null 2>&1
            stat_done
        else
            /usr/bin/$DAEMON -x $ARGS >/dev/null 2>&1 || stat_fail
            stat_done
        fi
    ;;
    restart)
        $0 stop
        $0 start
    ;;
    *)
        echo "usage: $0 {start|stop|restart|purge}"
    ;;
esac

/etc/pdnsd.conf:
Codice: [Seleziona]
/etc/pdnsd.conf:
global {
        perm_cache=2048;
        cache_dir="/var/cache/pdnsd";
#       pid_file = /var/run/pdnsd.pid;
        run_as="pdnsd";
        server_ip = 127.0.0.1;  # Use eth0 here if you want to allow other
                                # machines on your network to query pdnsd.
        status_ctl = on;
#       paranoid=on;       # This option reduces the chance of cache poisoning
                           # but may make pdnsd less efficient, unfortunately.
        query_method=udp_tcp;
        min_ttl=15m;       # Retain cached entries at least 15 minutes.
        max_ttl=1w;        # One week.
        timeout=120;        # Global timeout option (10 seconds).
        neg_domain_pol=on;
        udpbufsize=1024;   # Upper limit on the size of UDP messages.
}

# 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;
}

# The servers provided by OpenDNS are fast, but they do not reply with
# NXDOMAIN for non-existant domains, instead they supply you with an
# address of one of their search engines. They also lie about the addresses of
# of the search engines of google, microsoft and yahoo.
# If you do not like this behaviour the "reject" option may be useful.
server {
        label = "opendns";
        ip = 208.67.222.222, 208.67.220.220;
        reject = 208.69.32.0/24,  # You may need to add additional address ranges
                 208.69.33.0/24,  # here if the addresses of their search engines
                 208.69.34.0/24,  # change.
                 208.67.219.0/24,
                 173.194.35.0/24,
                 208.67.216.136,
                 208.67.217.136;
        reject_policy = fail;     # If you do not provide any alternative server
                                  # sections, like the following root-server
                                  # example, "negate" may be more appropriate here.
        timeout = 4;
        uptest = ping;            # Test availability using ICMP echo requests.
        ping_timeout = 100;       # ping test will time out after 10 seconds.
        interval = 15m;           # Test every 15 minutes.
        preset = off;
}

source {
        owner=localhost;
#       serve_aliases=on;
        file="/etc/hosts";
}

rr {
        name=localhost;
        reverse=on;
        a=127.0.0.1;
        owner=localhost;
        soa=localhost,root.localhost,42,86400,900,86400,86400;
}

/etc/resolv.conf

Codice: [Seleziona]
#Local DNS
nameserver 127.0.0.1

configurazione di Firefox (about:config)

Codice: [Seleziona]
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

Come invertire polipo e privoxy

Cambiate in questo modo i due file di configurazione

/etc/privoxy/config da

Codice: [Seleziona]
# forward-socks5 privoxy->tor
# forward privoxy->polipo
#forward-socks5 / localhost:9050 .
forward / localhost:8123

a

Codice: [Seleziona]
# forward-socks5 privoxy->tor
# forward privoxy->polipo
forward-socks5 / localhost:9050 .
#forward / localhost:8123

/etc/polipo/config da

Codice: [Seleziona]
# to tor
socksParentProxy = “localhost:9050″
socksProxyType = socks4a

a

Codice: [Seleziona]
# to tor
#socksParentProxy = “localhost:9050″
#socksProxyType = socks4a

# to privoxy
parentProxy = “localhost:8118″

Dopodiché, nelle impostazioni del vostro browser, mettere il proxy HTTP sulla porta di polipo, anziché di privoxy, cioè da localhost 8118 a 8123.
« Ultima modifica: 04 Maggio 2012 ore 08:02 da Masque »


Offline fedefox

  • *
  • Post: 1453
  • Reputazione: 34
    • Mostra profilo
    • Allevamento Della Repubblica Pisana
ti meriti un +1 solo per la lunghezza della guida guarda ahahahah  :-*

Offline Yulaow

  • *
  • Post: 15
  • Reputazione: 1
    • Mostra profilo
ti meriti un +1 solo per la lunghezza della guida guarda ahahahah  :-*
concordo in pieno  ;D

Offline Masque

  • *
  • Post: 723
  • Reputazione: 60
    • Mostra profilo
...ed è pure zeppa di messaggi subliminali!  :o ::)

Offline fedefox

  • *
  • Post: 1453
  • Reputazione: 34
    • Mostra profilo
    • Allevamento Della Repubblica Pisana
lol piano piano la leggerò tutta nn temere ahahah

Offline Masque

  • *
  • Post: 723
  • Reputazione: 60
    • Mostra profilo
Intanto, ho fatto alcune modifiche alla guida.
Aggiunte delle configurazioni del file di Tor per ridurre le latenze.
Modificato file di polipo per utilizzare socks4a invece del 5, per via di un possibile problema di sicurezza della privacy con la risoluzione degli indirizzi: http://bodhizazen.net/Tutorials/TOR#socks
Aggiunto in coda un paragrafetto su come invertire l'ordine dei due proxy (polipo e privoxy). Io ho trovato che l'ordine originalmente usato (Browser->Privoxy->Polipo->Tor) è più veloce... ma se qualcuno vuole testare per un po' anche l'altro...

Per migliorare ulteriormente la privacy durante la navigazioni, ho trovato due estensioni utili per Firefox:

NoScript: blocca ogni script presente sulle pagine. A differenza di Ghostery, non si basa su delle liste nere da tenere aggiornate, ma su una lista bianca che l’utente compilerà, mano a mano, inserendo i siti dei quali vuole che vengano eseguiti gli script. Permette, inoltre, di sbloccare temporaneamente gli script del sito aperto, in modo da farli eseguire solo in quest’occasione. È un estensione leggera, che permette di ripulire le pagine anche dalle poche schifezze che possono sfuggire a privoxy.
http://noscript.net/features

RefControl: ogni volta che cliccate sul link contenuto in un sito, il browser memorizza l’indirizzo della pagina che conteneva il link, chiamata “referrer”. Il sito a cui si giunge, può leggere quest’informazione dal vostro browser e capire da che sito provenivate. Questo, viene utilizzato spessissimo nelle statistiche di accesso ai siti. Volendo proteggere la propria privacy, anche quest’informazione andrebbe nascosta. RefControl premette di scegliere il comportamento di default del browser e di inserire delle regole per i siti desiderati. Ad esempio, è possibile impostare come comportamento di default di non rispondere quando viene chiesto il referrer (oppure di rispondere con un indirizzo inventato), ed inserire una serie di indirizzi per i quali il browser deve rispondere normalmente.
http://www.stardrifter.org/refcontrol/
« Ultima modifica: 22 Aprile 2012 ore 14:27 da Masque »

Offline dongongo

  • *
  • Post: 445
  • Reputazione: 16
    • Mostra profilo
Devo aver sbagliato qualcosa, la connessione risulta più lenta di prima... :S
Credo di aver sbagliato qualcosa per quanto riguarda polipo... Credo... Non riesco a trovare queste righe nel file di configurazione

[[ ! -d /var/run/$DAEMON ]] && install -d $DAEMON /var/run/$DAEMON
/usr/bin/$DAEMON $ARGS >/dev/null 2>&1

E quindi ho deciso di saltare un pezzettino, tanto non credo che finisca in mani sbagliate il mio pc... ;D
Come faccio a testare l'effettivo funzionamento di polipo? E semmai, come faccio a creare lo script in /etc? Io l'ho preparato, ma non so come spostarlo in /etc/crond.daily/

EDIT: e se facessi copia-incolla dei tuoi file? ;D
« Ultima modifica: 22 Aprile 2012 ore 13:54 da dongongo »



Offline Masque

  • *
  • Post: 723
  • Reputazione: 60
    • Mostra profilo
Devo aver sbagliato qualcosa, la connessione risulta più lenta di prima... :S
Credo di aver sbagliato qualcosa per quanto riguarda polipo... Credo... Non riesco a trovare queste righe nel file di configurazione

[[ ! -d /var/run/$DAEMON ]] && install -d $DAEMON /var/run/$DAEMON
/usr/bin/$DAEMON $ARGS >/dev/null 2>&1

Con solo Tor e Privoxy, la navigazione è più lenta, per via dei tempi di attesa che tor introduce (è inevitabile, per come funziona il sistema...), con gli accorgimenti indicati, si riescono a ridurre molto questi tempi, riducendo il numero di richieste diverse che vengono sparate in rete (un po' grazie al pipelining, che fa passare molte richieste attraverso poche connessioni, invece di molte richieste su molte connessioni, un po' grazie alle cache locali).

Quelle righe che hai scritto, non sono nel file di configurazione di polipo, ma nello script che lo lancia all'avvio, cioè /etc/rc.d/polipo
La modifica serve per evitare che polipo giri come utente root.

E quindi ho deciso di saltare un pezzettino, tanto non credo che finisca in mani sbagliate il mio pc... ;D
Come faccio a testare l'effettivo funzionamento di polipo? E semmai, come faccio a creare lo script in /etc? Io l'ho preparato, ma non so come spostarlo in /etc/crond.daily/

EDIT: e se facessi copia-incolla dei tuoi file? ;D

Per testare polipo da solo, c'è spiegato nella guida ;)
In due parole, basta che in polipo non inserisci le righe di configurazione che gli fanno fare il forward verso tor, e configuri il browser per puntare a polipo (se è come nella mia configurazione: localhost, porta 8123).

In /etc/cron.daily ci va solo lo script che fa la pulizia della cache di polipo. È comodo, ma non essenziale.
Per creare dei file lì, devi essere utente root (o fare sudo).

Puoi anche provare ad usare i miei file... potrebbe funzionare... :)
(adesso aggiungo il mio /etc/rc.d/polipo nel resoconto finale)
« Ultima modifica: 22 Aprile 2012 ore 14:39 da Masque »

 

Template by Homey | Sito ufficiale | Disclaimer