Molti vorrebbero limitare l’accesso a determinati siti ai propri figli. Questo post vuole mostrare come è relativamente facile da fare sotto ubuntu (questa guida vale anche per kubuntu, xubuntu, ecc. e debian) senza tenere aggiornate manualmente white list e black list. Per fare questo utilizzeremo dansguardian + privoxy e alcune regole di iptables.
DansGuardian è il programma si occupa di filtrare l’accesso ai siti attraverso varie tecniche come l’analisi dell’URL, del contenuto testuale, delle immagini. Per funzionare ha bisogno di un proxy, molte guide si basano su SQUID che è più completo ma più difficile da configurare, privoxy è molto più semplice da configurare e ha anche qualche opzione aggiuntiva.
1. Installare Dansguardian + Privoxy
Il tutto si riduce a:
$ sudo apt-get -y install privoxy dansguardian2. Configurare Privoxy
Usando un qualsiasi editor di testo, modificate il file /etc/privoxy/config:
$ sudo nano /etc/privoxy/confige cambiate la linea che contiene:
listen-address localhost:8118
in
listen-address 127.0.0.1:8118
Anche se è la stessa cosa, privoxy come parent proxy senza questa modifica rifiuterà le connessioni. A questo punto riavviate privoxy:
$ sudo service privoxy force-reload
3. Configurare dansguardian
Usando un qualsiasi editor di testo, modificate il file /etc/dansguardian/dansguardian.conf rimuovendo la seguente linea nella parte superiore del file:
UNCONFIGURED - Please remove this line after configuration
Adesso bisogna modificare la porta predefinita visto che dansguardian generalmente lavora con squid. Modificate l’opzione proxyport come segue:
proxyport = 8118
e l’opzione language per avere la pagina di blocco in italiano:
language = 'italian'
e avviate dansguardian:
$ service dansguardian start4. Configurare il firewall con UFW
Usando un qualsiasi editor di testo, modificate il file /etc/ufw/before.rules commentando la seguente linea nella parte superiore del file:
#-A ufw-before-output -o lo -j ACCEPT
Adesso non resta che aggiungere alla fine del file, sopra la riga COMMIT le seguenti righe:
# Rules for Dansguardian
-A ufw-before-output -m owner --uid-owner root -j ACCEPT
-A ufw-before-output -p tcp -m multiport --dports 80,443 -m owner --uid-owner privoxy -j ACCEPT
-A ufw-before-output -p tcp -m multiport --dports 80,443 -j DROP
-A ufw-before-output -o lo -p tcp -m tcp --dport 8118 -m owner --uid-owner dansguardian -j ACCEPT
-A ufw-before-output -o lo -p tcp -m tcp --dport 8118 -m owner --uid-owner bodhi -j ACCEPT
-A ufw-before-output -o lo -p tcp -m tcp --dport 8118 -j DROP
-A ufw-before-output -o lo -j ACCEPT
# don’t delete the ‘COMMIT’ line or these rules won’t be processed
COMMIT
Ecco una breve spiegazione delle varie righe:
- La prima riga permette all’utente root di uscire senza limitazioni (altrimenti sarebbe più difficile lanciare applicazioni come apt-get).
- La seconda permette a privoxy di connettersi alle porte 80 e 443;
- La terza impedisce a tutti gli altri di connettersi alle porte 80 e 443;
- La quarta linea permette DansGuardian di connettersi a Privoxy;
- Nella quinta riga invece bodhi deve essere sostituito con il nome di un utente “genitore” che non deve essere filtrato da dansguardian. Questa riga va ripetuta per ogni utente “genitore”;
- La sesta blocca tutte le altre connessioni a privoxy;
- La settima riga permette tutte le connessioni sul localhost;
- L’ultima è il commit che non deve essere rimosso.
A questo punto basta avviare ufw con i seguenti comandi:
$ sudo ufw enable $ sudo service ufw restart5. Configurazione per gli utenti
A questo punto per poter accedere ad internet è necessario che gli utenti impostino il corretto proxy nel loro browser.
Se utilizzate Firefox andate in: Modifica -> Preferenze -> Avanzate -> Rete -> Connessione e impostate i parametri come nell’immagine sotto:
Indicando la porta 8118 per gli utenti “genitori” (quelli che avete aggiunto nel file di configurazione di ufw) e la porta 8080 per gli utenti “figli” .
Invece per la riga di comando (wget , curl, etc.) aggiungete nel file ~/.bashrc di ogni utente la seguente riga per i “genitori”:
export http_proxy='localhost:8080'
e la seguente per i “figli”:
export http_proxy='localhost:8118' # Utenti non Filtrati
Enrico Strocchi 27/10/2011
(tratto da http://blog.bodhizazen.net/linux/web-content-filtering-made-easy/ )