Esempio di configurazione di Squid con controllo degli accessi

Segue un esempio di configurazione di Squid, in cui viene impostato il controllo degli accessi rispetto ad indirizzi IP sorgenti e autenticazione degli utenti.
Viene inoltre indicato come integrare Squidguard (software separato) per filtrare l'accesso a determinati siti con contenuto "non consono" (warez, porno ecc.).

Esempio di SQUID.CONF
# La configurazione di Squid prevede numerose impostazione per il tuning della cache, la gestione di una struttura di caching distribuita e la modifica di innumerevoli parametri di funzionamento del programma. In questo esempio si è mantenuta il più possibile la configurazione di default, rimuovendo i settaggi che generalmente sono commentati (perchè già impostati di default) e lasciando inalterate le impostazioni presenti nel file di default (su una Fedora 2).
# Le parti dove sono state introdotte delle customizzazioni sono spiegate contestualmente
  
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
# Di default la dimensione massima della cache su hard disk è 100 Mb, ha senso aumentarla secondo le proprie disponibilà. Qui si è messo 2000 Mb
cache_dir ufs /var/spool/squid 2000 16 256
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hour
# Squid può autenticare i suoi utenti in molti modi (tramite ldap, smb, pam, dominio NT...). Qui si decide di usare un file di password creato con il sistema di autenticazione di base di apache ("htpasswd -c /etc/squid/utenti).
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/utenti
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern .               0       20%     4320
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Safe_ports port 80
acl Safe_ports port 21
acl Safe_ports port 443 563
acl Safe_ports port 70
acl Safe_ports port 210
acl Safe_ports port 1025-65535
acl Safe_ports port 280
acl Safe_ports port 488
acl Safe_ports port 591
acl Safe_ports port 777
acl CONNECT method CONNECT

http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

# Definiamo alcune access list adatte al nostro scopo:
# - la rete dei client che possono usare il proxy ("retelocale")
# - l'uso del meccanismo di autenticazione sopra definito, definendo un gruppo che che include le login "paolo" e "carlo" ("utenti")
# - Un indirizzo della rete locale che non può usare il proxy ("hostnegato")

acl retelocale src 10.42.42.0/255.255.255.0
acl utenti proxy_auth carlo paolo REQUIRED
acl hostnegato src 10.42.42.10

# Le acl sopra definite vengono ora applicate. E' molto importante l'ordine con cui sono indicate. In questo caso, prima viene impedito l'accesso web a "hostnegato" e poi viene permesso agli utenti autenticati che fanno parte della rete locale. Notare l'uso di entrambe le acl sulla stessa riga, entrambe vanno rispettate
http_access deny hostnegato
http_access allow utenti retelocale

# Seguono le impostazioni preimpostate in /etc/squid.conf, notare che di default c'è un "http_access deny all" alla fine. Se questo fosse prima, impedirebbe gli accessi eventualmente definiti successivamente
http_access allow localhost
http_access deny all

http_reply_access allow all
icp_access allow all

# La seguente riga è da aggiungere (scommentandola) se si vuole usare SquidGuard per gestire l'accesso anche sulla base dei contenuti dei siti in cui si naviga. SquidGuard è un programma separato che va installato a parte
# redirect_program /usr/bin/squidGuard


Esempio di SQUIDGUARD.CONF
logdir /var/log/squidguard
dbhome /var/lib/squidguard

dest adult {
        domainlist      adult/domains
        urllist         adult/urls
        expressionlist  adult/expressions
}


acl {
        default {
                pass     !adult all
                redirect http://www.google.com
        }
}

Privacy Policy