DansGuardian

Il proxy web di riferimento del progetto reteisi è squid la cui configurazione è descritta sommariamente qui.

Squid filtra rispetto a molte regole ma non analizza mai il contenuto della pagina, per questo esiste una serie di applicativi chiamato content-filtering proxy. DansGuardian è il content-filtering proxy scelto dal progetto ReteISI.

Le principali caratteristiche per cui si è deciso di aggiungere DansGuardian sono:

  1. la gestione di liste di siti bloccati
  2. la gestione del content-filtering

Quest’ultima è però una caratteristica molto delicata, pensate ad esempio che probire la parola ‘sesso’, blocca anche siti che dichiarino “Non parlate di sesso”...

La configurazione normale di dansguardian è in aggiunta al proxy, per cui nella sua configurazione deve essere indicato il proxy server cui lui inoltrerà le richieste.

Cosa offre dansguardian

Dansgurdian (dg) è un potente content-filter che si interpone tra il browser dell’utente e il server proxy. Elenchiamo qui alcune delle operazioni più significative:

  • Può filtrare il testo e le pagine html che contengono contenuti violenti, sessuali, etc...
  • E` compatibile con le black lists di squidGuard, un altro content-proxy molto popolare
  • Può bloccare gli adverts
  • Usa un avanzato sistema di pesatura delle frasi (presenza di parole)
  • Può filtrare estensioni MIME type
  • Può filtrare URL semplici o contenenti espressioni regolari.
  • Puo’ bloccare tutti gli URL basati su ip
  • Può bloccare un ip sorgente specifico, così come una username.

Per la lista completa si faccia riferimento al sito ufficiale

Nelle configurazioni di default dansguardian usa lo stesso tipo di filtraggio per tutti gli utenti; gli utenti che non devono essere filtrati vengono fatti collegare direttamente al server proxy, saltando dunque dg. Volendo migliorare il livello di controllo ed impedire navigazioni non filtrate tramite la porta di squid, è stata pensata una nuova configurazione che imponga a tutti gli utenti, bloccati e non, di configurare come porta del proxy la sola porta dg(8128). Per applicare la configurazione, basta aggiungere alcuni file di filtraggio aggiuntivi e dire a dansguardian di associarli agli utenti desiderati (negli esercizi seguenti capiremo meglio come fare). Possiamo creare tre tipi di filtraggio:

  • nullo (l’utente naviga senza controllo di danguardian - resta quello operatoda squid)
  • bloccato (l’utente non naviga)
  • filtrato (l’utente viene filtrato secondo le regole definite nel file di filtraggio)

Come ogni content-filter, dg non è perfetto e a volte blocca involontariamente la navigazione di alcuni siti. Per ovviare a ciò, è permesso usare dei criteri di esclusione. Tali criteri possono allentare o completamente abbandonare il controllo sui contenuti visitati dall’utente.

Opzionalmente, il demone offre anche una scansione av, utilizzando l’antivirus libero clamav.

Configurazione

Configurazione base

Il file principale di configurazione è /etc/dansguardian/dansguardian.conf. In tale file, una volta installato il servizio, si configurano le seguenti direttive principali

# La porta su cui DansGuardian ascolterà.
filterport = 8128

# Ip del server proxy (default is the loopback - i.e. this server)
proxyip = 127.0.0.1

# La porta del proxy a cui dansguardian si deve connettere
proxyport = 3128

Questo è tutti quello che serve per il funzionamento standard di dansguardian.

Permettere alcuni siti bloccati da dansguardian

Per permettere la navigazione di un sito altrimenti bloccato, basterà aggiungerne l’url del sito al file /etc/dansguardian/lists/exceptionsitelist.

Impostare il peso delle parole per livelli scolari diversi

Per modificare il livello di severità con cui verrà filtrata la navigazione, si potrà agire sull’opzione naughtynesslimit

# Naughtyness limit # This the limit over which the page will be blocked. Each weighted phrase is given # a value either positive or negative and the values added up. Phrases to do with # good subjects will have negative values, and bad subjects will have positive # values. See the weightedphraselist file for examples. # As a guide: # 50 is for young children, 100 for old children, 160 for young adults. naughtynesslimit = 50

Porta 8128 per tutti gli utenti

Per imporre a tutti gli utenti di passare dalla stessa porta, come accennato in precedenza, dovremo assolvere ai seguenti compiti:

  • creare liste di filtraggio per ogni gruppo che si intende filtrare, definendo eventualmente i propri criteri voluti.
  • associare le liste di filtraggio ai singoli utenti.
  • configurare dansguardian.conf specificando quante liste di filtraggio verranno utilizzate.
  • attivare in /etc/argo/fw.conf la direttiva

Per creare nuove liste di filtraggio, si potrà usare come modello dansguardianf1.conf. I file creati dovranno avere nome della forma /etc/dansguardian/dansguardianf<NUMERO>.conf dove, per numero gruppo, si userà un valore decimale incrementale >1. All’interno del nuovo filtro creato, dovremo poi definire il tipo di politica da applicare, valorizzando la direttiva groupmode. I valori possibili sono

- 0 = bannato, l'utente non naviga
- 1 = filtrato, l'utente viene filtrato secondo i criteri del filter-file
- 2 = non filtrato, l'utente esce libero( come passare direttamente via proxy
      saltando dg)

Ora che abbiamo i filtri, dobbiamo associare loro gli utenti. Le associazioni utente-filtro, vengono fatte nel file /etc/dansguardian/lists/filtergroupslist. Ad esempio

d_libero=filter2
at_bloccato=filter3

(In questo caso, l’utente d_libero viene associato al filtro dansguardianf2.conf, at_bloccato al filtro dansguardianf3.conf).

Non resta che configurare /etc/dansguardian/dansguardian.conf specificando quante liste di filtraggio stiamo utilizzando, valorizzando la direttiva filtergroups. In questo caso, avendo aggiunto due filtri oltre a quello di default, ne sono stati configurati 3

filtergroups = 3

Nota

Se un utente non è associato a nessun filtro, verrà automaticamente associato al filtro di default filter1.

Ulteriori personalizzazioni

All’interno dei file di filtraggio, troveremo inclusi diversi altri file. Ogni file incluso, contiene commenti circa la sua utilità e la sintassi da usare per modificarlo in modo produttivo. Alcuni di questi file servono per definire eccezioni, altri per arricchire le politiche di filtraggio.

Questi, ad esempio, sono alcuni file inclusi dal filtro dansguardianf1.conf

# Content filtering files location
bannedphraselist = '/etc/dansguardian/lists/bannedphraselist'
weightedphraselist = '/etc/dansguardian/lists/weightedphraselist'
exceptionphraselist = '/etc/dansguardian/lists/exceptionphraselist'
bannedsitelist = '/etc/dansguardian/lists/bannedsitelist'
greysitelist = '/etc/dansguardian/lists/greysitelist'
exceptionsitelist = '/etc/dansguardian/lists/exceptionsitelist'
bannedurllist = '/etc/dansguardian/lists/bannedurllist'
greyurllist = '/etc/dansguardian/lists/greyurllist'
exceptionurllist = '/etc/dansguardian/lists/exceptionurllist'
exceptionregexpurllist = '/etc/dansguardian/lists/exceptionregexpurllist'
bannedregexpurllist = '/etc/dansguardian/lists/bannedregexpurllist'
picsfile = '/etc/dansguardian/lists/pics'
contentregexplist = '/etc/dansguardian/lists/contentregexplist'
urlregexplist = '/etc/dansguardian/lists/urlregexplist'

Cosa useremo in questa esperienza

  • un pdc server (su cui gireranno squid e dansguardian).
  • wget che per simulare un browser che scarica una pagina via http.
  • lynx per visualizzare le pagine scaricate.

Esercizi

verifica filtraggio dei contenuti

Sul server web è stata caricata in http://127.0.0.1/xxx.html una pagina con il seguente codice “offensivo”

<html><head><title>sex sex xxx</title></head>
<body>
sex sex sex xxx xxx xxx
</body>
</html>

Portiamoci quindi in /tmp e scarichiamo la pagina malevola passando direttamente da squid(porta 3128)

http_proxy=127.0.0.1:3128 wget --proxy-user=a_test --proxy-password=isi http://127.0.0.1/xxx.html

Verrà scaricata la stessa pagina presente sul server; per dimostrario basterà fare un “lynx xxx.html” del file scaricato (premere Q per uscire).

Rimuoviamo il file appena scaricato e ritentiamo il download passando questa volta da dansguardian(porta 8128)

rm xxx.html
http_proxy=127.0.0.1:8128 wget --proxy-user=a_test --proxy-password=isi http://127.0.0.1/xxx.html

Verifichiamo quindi con lynx il contenuto della pagina scaricata ora. La pagina di partenza è stata sostituita da una di dansguardian che avvisa l’avvenuto bloccaggio!.

Porta 8128 per tutti gli utenti

Facendo riferimento a quanto detto nella parte introduttiva ci assicuri che la configurazione base di dansguardian sia corretta. I file di filtraggio sono configurati per filtrare l’utente a_filtrato e non filtrare l’utente d_libero.

Portiamoci in /tmp, rimuoviamo le eventuali pagine precedentemente scaricate e riscarichiamo la pagina malevola autenticandoci come d_libero, passando via dansguardian(porta 8128)

http_proxy=127.0.0.1:8128 wget --proxy-user=d_libero --proxy-password=isi http://127.0.0.1/xxx.html

Verrà scaricata la stessa pagina presente sul server; per dimostrario basterà fare un “lynx xxx.html” del file scaricato (premere Q per uscire).

Rimuoviamo il file appena scaricato e ritentiamo il download autenticandoci questa volta con l’utente a_filtrato, porta 8128

rm xxx.html
http_proxy=127.0.0.1:8128 wget --proxy-user=a_filtrato --proxy-password=isi http://127.0.0.1/xxx.html

Verifichiamo quindi con lynx il contenuto della pagina scaricata ora. La pagina di partenza è stata sostituita da una di dansguardian che avvisa l’avvenuto bloccaggio.

Rimuoviamo il file appena scaricato e ritentiamo il download autenticandoci questa volta con l’utente at_bloccato, porta 8128

rm xxx.html
http_proxy=127.0.0.1:8128 wget --proxy-user=at_bloccato --proxy-password=isi http://127.0.0.1/xxx.html

Verifichiamo quindi con lynx il contenuto della pagina scaricata ora. La pagina di partenza è stata sostituita da una di dansguardian che avvisa dell’avvenuto bloccaggio in quanto l’utente NON è abilitato a navigare.

Ora non ci resterà che configurare /etc/argo/fw.conf affinchè ridiriga il traffico in uscita con testinazione 80 sulla porta 8128

PROXY_REDIR_PORT=8128

e restartare pyrewall

pyrewall restart

eccezioni

Per permettere agli utenti oggetti di filtraggio di raggiungere alcuni siti bloccati, modifichiamo il file /etc/dansguardian/lists/exceptionsitelist accodando il nome del sito da raggiungere e restartiamo dansguardian

/etc/init.d/dansguardian restart

Reportistica per dansguardian