Intestazione

Squid e DansGuardian
Come gestire e controllare gli accessi al Web dalle reti scolastiche
di Giancarlo Dessì, gian at cettolini.it

Accesso rapido: Inizio [1] - Precedente [2] - Successivo [3] - Ultimo [4] - Licenza [5]

Contenuto principale

10. Configurazione di DansGuardian

L'installazione di DansGuardian crea il file di configurazione generico

/etc/dansguardian/dansguardian.conf

Il file va naturalmente modificato adattando i valori impostati nelle direttive al contesto in cui si opera. Come già visto per squid.conf abbiamo a disposizione una configurazione predefinita, tuttavia può essere necessario personalizzare in vario modo la configurazione di DansGuardian.

La sintassi non si discosta da quella di squid.conf ad eccezione dell'inserimento del segno uguale fra il nome della direttiva e il valore attribuito:

direttiva = [valore]

Per il resto valgono le convenzioni largamente adottate nei file di configurazione:

La configurazione di DansGuardian contempla una vasta casistica che non è possibile trattare in questa sede. Mi limito pertanto all'esame di alcune impostazioni che dovrebbero essere d'interesse generale e che nel complesso non richiedono un particolare sforzo di comprensione. Nell'esempio che segue ho omesso diverse direttive per focalizzare l'attenzione su quelle che possono maggiormente interessare un'installazione di prova. Per ciò che non è contemplato in questo esempio raccomando di lasciare invariata la direttiva predefinita impostata dall'installazione di DansGuardian, di fare riferimento ad una documentazione più approfondita e di valutare le modifiche dopo aver acquisito una sufficiente esperienza.

# Azione eseguita in caso di accesso negato 
reportinglevel = 3         

# Directory dei file HTML 
# restituiti in caso di accesso negato
languagedir = '/etc/dansguardian/languages'

# Lingua utilizzata dalla directory 
# languagedir (default: ukenglish)
language = 'italian'

# Formato del file di registro
# L'opzione 3 imposta lo stesso formato 
# del file access.log di Squid
logfileformat = 1

# Percorso del file di registro
loglocation = '/var/log/dansguardian/access.log'

# Indirizzo di rete di DansGuardian 
filterip = 192.168.10.1         

# Porta di ascolto
filterport = 8080

# Indirizzo di rete del server proxy
# E' predefinito l'indirizzo di loopback   
# ipotizzando che proxy e filtro dei contenuti
# siano installati sullo stesso host
proxyip = 127.0.0.1

# Porta di ascolto del proxy
proxyport = 3128

# URL di reindirizzamento se l'accesso negato reindirizza ad un CGI
# Lasciare l'impostazione predefinita se si usa il template statico
accessdeniedaddress = 
       'http://YOURSERVER.YOURDOMAIN/cgi-bin/dansguardian.pl'

# Metodo di ponderazione delle pagine 
# il valore predefinito 2 fa sì che una 
# frase sia conteggiata una sola volta 
# se riscontrata nella pagina
weightedphrasemode = 2

# Creazione di una cache dei file e 
# degli indirizzi negati. L'impostazione
# predefinita (on) permette di triplicare 
# la velocità del processo di scansione, 
# pertanto è raccomandata se il sistema 
# è in esecuzione su un 
# computer lento 
createlistcachefiles = on  

Come ho già detto, diverse direttive sono state omesse. In generale vanno usate per ottimizzare il funzionamento di DansGuardian adattandolo ad uno specifico contesto (ad esempio, differenziazione degli eventi in un sistema basato sull'autenticazione degli utenti). E' consigliabile lasciare le impostazioni predefinite, soprattutto se non si ha cognizione di causa, e rimandare ad un secondo tempo un miglioramento della configurazione dopo aver acquisito un'adeguata esperienza. Infatti, dopo aver impostato le direttive essenziali (quali ad esempio gli indirizzi di rete e le porte di comunicazione), DansGuardian è in grado di operare efficacemente anche con le impostazioni predefinite nella maggior parte dei contesti.

Vediamo invece nel dettaglio il significato delle direttive mostrate nell'esempio.

reportinglevel = 3

Imposta il feedback di DansGuardian in caso di accesso negato. Sono possibili i seguenti valori:

languagedir = '/etc/dansguardian/languages'

Specifica la directory contenente i template usati per inviare una risposta di accesso negato. Il valore riportato nell'esempio è quello predefinito. Questa direttiva e quella successiva saranno prese in considerazione solo se la direttiva precedente è impostata sul valore 3.

language = 'italian'

Imposta la lingua utilizzata nell'invio dei rapporti. Come lingua predefinita è impostato l'inglese, ma in alternativa possono essere impostate altre 21 lingue.

logfileformat = 1

Specifica il formato che deve avere il file di registro. Sono possibili quattro valori (da 1 a 4), di cui il predefinito è 1, relativo al formato di DansGuardian accessibile con un editor di testo.

loglocation = 'var/log/dansguardian/access.log'

Specifica il percorso del file di log. Il valore predefinito è quello derivato dall'installazione.

filterip = 192.168.10.1

Specifica l'indirizzo IP dell'interfaccia di rete attraverso la quale il filtro accetta le richieste dei client. In assenza di un valore DansGuardian resta in ascolto su tutti gli indirizzi di rete che ha la postazione in cui è installato. Per ragioni di sicurezza è consigliabile specificare l'indirizzo di rete privato in modo da evitare eventuali accessi dall'esterno qualora il filtro fosse installato su un host connesso direttamente ad Internet.

filterport = 8080

E' la porta TCP attraverso la quale avvengono le transazioni fra i client e DansGuardian. In genere non ci sono motivi particolari per modificare il valore predefinito (8080).

proxyip = 127.0.0.1

Specifica l'indirizzo IP del proxy. Come valore predefinito è impostato l'indirizzo di loopback in quanto si da per assunto che DansGuardian e Squid siano installati sulla stessa postazione. Se invece risiedono su postazioni differenti deve essere specificato l'indirizzo di rete del server di connessione.

proxyport = 3128

E' la porta TCP attraverso la quale avvengono le transazioni fra Squid e i client (compreso DansGuardian). Il valore predefinito è naturalmente la porta impostata di default nella configurazione di Squid (3128).

accessdeniedaddress = ...

Specifica l'URI di un'applicazione CGI che elabora una pagina dinamica di risposta in caso di accesso negato. Questo indirizzo identifica un server Web presente sulla rete pubblica o in quella locale sul quale abbiamo copiato lo script di elaborazione (in linguaggio PERL). La soluzione più semplice (e consigliata) è tuttavia quella di usare il template statico. In questo ultimo caso evitate di modificare il valore predefinito della direttiva accessdeniedaddress oppure disabilitate la direttiva inserendo il carattere di commento a inizio riga. A mio parere l'abilitazione predefinita è un punto debole di DansGuardian perché potrebbe essere facilmente causa di un banalissimo errore di configurazione.

weightedphrasemode = 2

Per capire il significato di questa direttiva dobbiamo saperne di più sulle funzionalità supportate da DansGuardian. Quando il dominio o l'indirizzo richiesto non sono registrati nella blacklist il filtro effettua una scansione del testo delle pagine richieste per individuare espressioni regolari o parole chiave specificate nella blacklist o nella configurazione accessoria e ne effettua un conteggio. Raggiunto il limite di sicurezza (ad esempio, 50 parole trovate) il filtro blocca l'accesso perché la pagina richiesta viola probabilmente la policy.

Opportunamente configurata è un'importante funzionalità perché fornisce al filtro la possibilità di bloccare pagine non consentite anche se il loro indirizzo o il loro dominio non sono registrati nella blacklist, avvicinando questo strumento ai content filtering basati sull'intellingenza artificiale. Naturalmente è possibile configurare il grado di ponderazione delle pagine secondo il contesto. Ad esempio, in una scuola elementare si può valutare l'opportunità, di una soglia bassa (ad esempio 30 parole trovate) per aumentare il livello di sicurezza del filtro rischiando di bloccare anche pagine che pur avendo contenuti accettabili fanno un uso eccessivo di determinate parole. In una scuola media superiore potrebbe essere più opportuna una soglia alta (ad esempio 100 parole trovate) in modo da non avere un filtro eccessivamente rigido. In questo modo evitiamo ad esempio il blocco di una pagina di Biologia che usa in modo ridondante le parole sessuale, sesso con altre che combinate in un unico contesto sono fuorvianti interpretando un documento sull'anatomia degli apparati sessuali come una pagina a contenuto erotico.

Ritornando alla direttiva in questione (weightedphrasemode), possiamo attribuire tre valori alternativi:

Come si può vedere, l'impostazione 1 rende molto più selettivo il filtro prendendo in considerazione il numero complessivo delle parole o delle frasi non ammesse, mentre la seconda (quella predefinita) prende in considerazione soprattutto le combinazioni di parole o frasi non ammesse.

La scelta della configurazione più opportuna nella scansione del contenuto deve essere valutata attentamente secondo il contesto: un grado elevato di sicurezza e affidabilità del filtro si ripercuote sulla sua elasticità e portato all'estremo rende troppo rigida la policy. Per questo motivo la configurazione predefinita usa un approccio morbido. Sta all'amministratore ponderare il livello di compromesso fra sicurezza ed elasticità magari basando le scelte sulle esperienze maturate nel corso di un periodo di test sulle differenti soluzioni.

createlistcachefiles = on

Questa direttiva, impostata sul valore on permette di migliorare la velocità del servizio abilitando una cache delle risorse negate fino a triplicarne la velocità del processo di scansione citato nel punto precedente. E' ovvio che l'impostazione è di grande utilità se il servizio è elaborato da un processore lento.

Ribadisco che altre direttive non trattate in questa sede sono di fondamentale importanza nel migliorare la funzionalità e l'affidabilità del sistema di filtro dei contenuti, ma una trattazione completa potrebbe rivelarsi tediosa e prematura per un'installazione di prova. D'altra parte i commenti inseriti nella configurazione predefinita sono abbastanza esaustivi e intuitivi per capire cosa fare o meno nel momento in cui mettiamo mano alla configurazione.


Torna su

Note aggiuntive sull'accessibilità