Linux tips and tricks/Transparent proxy: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nimrod (discussione | contributi)
mNessun oggetto della modifica
Nimrod (discussione | contributi)
Nessun oggetto della modifica
Riga 1:
{{Linux tips and tricks}}
 
Con l'espressione ''transparent proxy'' si intende il filtraggio e l'eventuale blocco o redirezione dei pacchetti TCP/IP finalizzato a particolari obiettivi, fra cui:
 
* proteggere deii minori dal rischio di imbattersi in siti dedicati alla pornografia, alla violenza, al gioco d'azzardo e altro
* impedire al personale di un'azienda o di un ente di perdere tempo frequentando siti non connessi con l'attività lavorativa
* migliorare l'utilizzo della banda disponibile, bloccando l'accesso a siti non connessi con l'attività lavorativa
Line 10 ⟶ 11:
Gli ingredienti che permettono di realizzare tutto questo sono, in definitiva:
 
* un insieme di blacklist che elenchino i siti e le URL da bloccare o meno, ma anche frasi che, trovate in una pagina, facciano sì che essa sia bloccata
* un software di filtraggio, o ''url rewriter'', che, servendosi delle blacklist, possa dirottare una richiesta verso una pagina di bloccoprestabilita oppure lasciarla passare
* un software proxy, che si occupa essenzialmente di passare le URL al software di filtraggio oppure, quando è lo stesso software di filtraggio a ricevere le richieste direttamente, a passarleinoltrarle allverso l'esterno se non sono state bloccate
* la utility iptables, utilizzata per definire le regole che, in maniera trasparente, dirottano tutto il traffico web attraverso il proxy o il software di filtraggio, indipendentemente dalla volontà degli utenti
* il supporto Netfilter nel kernel, necessario alla utility iptables, almeno per quanto riguarda una serie di funzionalità
 
Il sistema può sembrare complesso, ma tutto si riduce a qualche configurazione. Nel seguito, dopo alcune nozioni preliminari, sarà illustrata prima una soluzione basata su squid e squidGuard, rispettivamente come proxy e come filtratore, e poi una soluzione alquantoleggermente diversa, basata su tinyproxy e DansGuardian, nellache qualein isostanza ruoliproduce deilo due software sono invertiti rispetto alla prima soluzione, ma ilstesso risultato rimane praticamente lo stesso.
 
== Nozioni preliminari ==
 
=== Le blacklist ===
 
Il sito del software di filtraggio ''squidGuard'', illustrato più avanti, elenca alcune fonti di [http://www.squidguard.org/blacklists.html blacklist], sia gratuite che commerciali. Per cominciare la cosa migliore è fare riferimento alla prima fonte ([http://squidguard.mesd.k12.or.us/blacklists.tgz MESD]), liberamente scaricabili e distribuibili.
Line 52 ⟶ 55:
Bloccare il dominio ''amazon.com'' sarebbe assurdo, vista la sua importanza. Ma siccome Amazon consente ai suoi utenti iscritti di pubblicare materiale pornografico, con un elenco di URL è possibile bloccare l'accesso a questo materiale senza bloccare l'accesso ad Amazon.
 
Le dimensioni notevoli delle liste obbligano i software di rewriting a gestirle in forma indicizzata. NelI casodue disoftware squidGuard,discussi lenel blacklistseguito devonoutilizzando essere convertite nelil formato ''db''DB (quellocioè delil Berkeley Database) col comando:.
 
# squidGuard -C all
 
DansGuardian richiede invece, almeno su Debian, il semplice riavvio (del servizio DansGuardian, ovviamente, non del sistema operativo).
 
Naturalmente, se le blacklist vengono modificate per sbloccare dei siti o per bloccarne di nuovi, il comando va eseguito nuovamente. Ma questo di solito si fa solo quando si installa una versione aggiornata delle blacklist.
Line 123 ⟶ 122:
 
Il blocco successivo definisce una ''destinazione'', da intendere come un raggruppamento di URL e domini distinto dal altri per qualche caratteristica. Nel caso specifico, si volevano distinguere i siti porno, creando una ''dest'' di nome appunto ''porn''. Nel blocco, la dichiarazione ''domainlist'' indica la blacklist per i domini da bloccare, mentre la dichiarazione ''urllist'' indica la blacklist per le URL. I valori usati sono percorsi relativi al percorso ''dbhome'' definito all'inizio del file.
 
Di volta in volta che, nella configurazione di squidGuard, si fa riferimento ad una nuova blackist, bisogna indicizzarla, convertendola nel formato ''db'' del Berkeley Database. A questo scopo si usa il comando:
 
# squidGuard -C all
 
È possibile, nonché opportuno prima di procedere, verificare la validità della configurazione di squidGuard simulando l'accesso ad una delle URL o dei domini bloccati. Ad esempio, il comando seguente simula esattamente quello che avverrebbe se il proxy, di cui parleremo più avanti, segnalasse a squidGuard una particolare URL per sapere se bloccarla o meno:
Line 231 ⟶ 234:
# iptables -t nat -A OUTPUT --dport www -m owner ! --uid-owner proxy -j REDIRECT --to-ports 8080
 
Come si vede, il traffico web, eccetto quello prodotto dall'utente ''proxy'' che, di norma, esegue il processo tinyproxy, viene dirottato sulla porta 8080 su cui è in ascolto appunto DansGuardian. Sappiamo poi come va a finire: DansGuardian riscrive o meno la URL, e in ogni caso la passa a tinyproxy sulla porta 3129 perché sia inoltrata all'esterno.
Come si vede, il traffico web, eccetto quello
Come accennato a proposito di Netfilter, a questa regola non sfuggono i pacchetti HTTP prodotti dallo stesso squid, per cui si creerebbe un circolo vizioso dal quale non uscirebbe più alcun pacchetto HTTP: da localhost sarebbe impossibile navigare sul web.
 
Il rimedio è contenuto nelle due opzioni ancora lasciate da parte: ''-m owner ! --uid-owner proxy''.
 
La prima segnala che è necessario caricare il modulo ''owner'' del kernel, in modo da permette l'utilizzo di alcune ulteriori opzioni di iptables, fra cui proprio ''--uid-owner''. Così come riportata nella regola sopra, questa opzione aggiunge una condizione particolare per selezionare i pacchetti HTTP in uscita: essi '''non''' devono essere stati prodotti dall'utente ''proxy''. Se, come avviene nella configurazione di squid per Debian Lenny, ''proxy'' è proprio l'utente che esegue squid, in questo modo ai pacchetti prodotti da squid non sarà applicato il target della regola, e quindi, se non intervengono altre regole a bloccarli, usciranno regolarmente permettendo all'utente di navigare tranquillamente.
 
 
 
[[Categoria:Linux tips and tricks|Transparent proxy]]