10.6. Controllo d'accesso sui siti web

La politica di sicurezza può naturalmente prevedere delle limitazioni di accesso su taluni siti web: siti a sfondo sessuale o ludico possono essere vietati. Squid può essere utilizzato anche come potente strumento di content management. É possibile limitare i contenuti a parte della rete aziendale: la rete degli utenti può essere monitorata e filtrata utilizzando il sistema di autenticazione e la procedura di content managment.

10.6.1. Controlli di accesso e URL filtering

Con le ACL del tipo url_regex è possibile inserire un percorso per i files che contengono la lista delle parole chiave selezionate che consentono di individuare il sito Web vietato che è stato richiesto dal client HTTP (netscape, mozilla, internet explorer....).

acl porn url_regex "/squid/etc/blocked/porn.block.txt" 
acl notporn url_regex "/squid/etc/blocked/porn.unblock.txt" 
acl badlang url_regex "/squid/etc/blocked/badlang.block.txt" 
acl entertain url_regex "/squid/etc/blocked/entertain.block.txt" 
acl games url_regex "/squid/etc/blocked/games.block.txt" 
acl pirate url_regex "/squid/etc/blocked/pirate.block.txt" 
   

ecco il TAG http_access, facciamo attenzione all'ordine dei dinieghi di accesso via http

http_access deny porn 
http_access deny badlang 
http_access deny entertain 
http_access deny games 
http_access deny pirate 
   

Inseriti i blocchi ora è possibile definire le ACL relative agli host autorizzati. Per scaricare una lista aggiornata degli host è necessario raggiungere la seguente URLs: http://www.squidblock.com/. Di seguito esaminiamo anche il formato dei files che possono contenere la lista delle parole chiave che consentono di individuare i siti web

.sex.de
.playboy.com.br
.clubhardcore.com
www-cache.fh-bingen.de
.monkeylove.com
.amateur-pages.com
.hitboss.com
.peep.com
.erotism.com
.sinfulmail.com
.nookie.com
.snapshots.com
.onlyteens.com
heavyhangers
.dailydirt.com
hustler
.brunclik.cz
.desibaba.com
.picturepost.com
.haloo.fi
.smut.com
   

altre liste di siti precompilate possono anche essere reperite

10.6.2. Definire una lista di siti visitabili

In questo paragrafo tratteremo un modello di configurazione molto interessante ed anche molto semplice, è un dato di fatto più dell'80% delle consultazioni sui siti web effettuate da parte degli utenti aziendali non riguardano assolutamente nessuno degli argomenti connessi con gli scopi che si è prefissa l'organizzazione per la quale lavorano. Nell'esempio riportato con questo tipo di configurazione restringeremo al massimo il campo di consultazione ai soli web-site che sono stati definiti come "interessanti" ed "utili", gli esempi riportati possono essere validi in un'ambiente dove i bambini hanno libero accesso alle risorse web

acl allowed_hosts src 192.168.0.0/255.255.255.128
acl allowed_hosts1 src 192.168.0.128/255.255.255.128
acl allowed_hosts2 src 192.168.1.0/255.255.255.0
acl porn url_regex "/etc/squid/block/porn.block.txt"
acl consentiti url_regex "/etc/squid/block/consentiti.txt"
acl nonconsentiti url_regex "/etc/squid/block/nonconsentiti.txt"
acl snmpManager src 192.168.0.4/255.255.255.255
acl snmppublic snmp_community public
   

abbiamo definito delle ACL che in prima istanza frazionano la rete in due subnet distinte e poi definiscono delle liste in formato regexp, il file regexp è un file di testo nel quale vengono dichiarate un'insieme di espressioni regolari. Di seguito vengono applicate le ACL per definire questa specifica configurazione di Squid

http_access allow localhost
http_access allow allowed_hosts
http_access allow consentiti
http_access deny nonconsentiti
http_access allow allowed_hosts1
http_access deny manager all
http_access deny all
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
   

si evince che alla subnet dichiarata dalla ACL "allowed_hosts" (192.168.0.0/255.255.255.128) è consentito l'accesso a tutti i siti web, mentre la subnet dichiarata dalla ACL "allowed_hosts1" (192.168.0.128/255.255.255.128) è consentito accedere alle URL contenute nella lista di regexp che viene dichiarata dalla ACL "consentiti". Successivamente verranno bloccate tutte le URL contenute nella lista di regexp definita con la ACL "nonconsentiti". Di seguito la lista /etc/squid/block/consentiti.txt

www.totallyspies.com
www.it.barbie.com
www.myscene.com
www.witchmagazine.it
www.streghe.net
go.to/streghe
www.antoniogenna.net
disney
www.diddl.com
www.pollypocket.com
www.cartoonnetwork.it
www.repubblica.it
merlinobbs.net
www.foxkids
www.melevisione.rai.it
www.xmen
www.batman
powerrangers
   

ancora di seguito la lista /etc/squid/block/nonconsentiti.txt

% more nonconsentiti.txt
.
   

la lista di regexp "nonconsentiti.txt" con l'esperessione "." blocca tutto il resto.

10.6.3. Raggiungere direttamente domini o siti predefiniti

E' possibile utilizzare le ACL per consentire agli utenti di raggiungere direttamente alcuni siti internet. Ad esempio, se vogliamo che Squid consenta la connessione diretta con servers appartenenti al dominio cisco.com possiamo definire il seguente TAG all'interno del file squid.conf

acl cisco dstdomain .cisco.com
always_direct allow cisco
   

10.6.4. Bloccare gli spyware

Controllando lo user-agent log potremmo incorrere in questo tipo di codice

Gator/5.0 Script FD6B41F906B248C3B5711814B3F375B8 2 0.00 Gator/5.0 Precision Time \ 
   

se vogliamo evitare che le macchine infettate degli utenti interroghino la nostra rete passando per squid potremmo aggiongere il seguente TAG

acl gator browser Gator/5.0
Http_access deny gator
   

10.6.5. Bloccare web radio e TV

Controllando lo user-agent log potremmo incorrere in questo tipo di codice

Windows-Media-Player/9.00.00.3128
   

se vogliamo evitare che gli utenti utilizzino squid per vedere la TV o ascoltare la radio

acl WMP browser Windows-Media-Player/*
http_access deny WMP
   

10.6.6. Bloccare msn-messanger (Yahoo Messanger)

Tra gli elementi che compongono le ACL possiamo identificare un header del tipo content-type, inoltre possiamo identificare il pattern inviato quale risposta ad una intestazione del tipo content-type. Gli elementi che compongono le ACL da utilizzare sono il req_mime_type ed il rep_mime_type. Se vogliamo evitare l'utilizzo del msn-messanger dovremmo impostare le seguenti ACL

acl reqmsn req_mime_type -i ^application/x-msn-messenger
acl repmsn rep_mime_type -i ^application/x-msn-messenger
   

Il messanger msn viene identificato quindi dal tag application/x-msn-messenger, a questo punto dobbiamo solo applicare le regole appena definite

http_access deny reqmsn
http_reply_access deny repmsn
   

10.6.7. No cache

E' possibile utilizzare Squid senza memorizzare le pagine visitate nella cache, il TAG no_cache infatti consentirà di eliminare il caching degli oggetti

acl all src 0/0
no_cache deny all