Gestione di una whitelist per utenti con Squid
Si vuol gestire Squid per filtrare la navigazione web gestendo una semplice Whitelist, decidendo quali utenti hanno
- navigazione illimitata
- navigazione limitata ai siti consentiti
- navigazione vietata agli altri utenti
E' possibile usare le sole ACL di Squid, senza ricorrere a redirector esterni tipo SquidGuard o DansGuardian.
Presupposti
Si presume il corretto funzionamento dell'autenticazione, sia essa IDENTD o NTLM (vedi Autenticazione NTLM in Squid).
Creazione files di definzione
- Creare il file /etc/squid/utenti.illimitati contenente i nomi degli utenti che navigheranno senza restrizioni.
Tale lista dovrà contenere i nomi utenti in minuscolo e nel caso di autenticaione NTLM, sempre in minuscolo, nella forma
nomeutente\dominio
- Creare il file /etc/squid/utenti.limitati contenente i nomi degli utenti che navigheranno solo sui siti della whitelist, seguendo le indicazioni precedenti.
- Creare il file /etc/squid/siti.consentiti contenente i nomi completi di tutti i server http a cui si deve accedere senza prefisso http:// e senza url finale.
Ad esempio, se si vuole far visitare il sito che risponde alla pagina http://www.server.pippo.com/index.html, inserire
www.server.pippo.com
- ATTENZIONE: se si vuole sbloccare l'intero dominio, cioè inserire un valore che valga per www.dominio.dom, www.sub.dominio.dom, inserire:
- .dominio.dom
- cioè il nome del dominio preceduto da un punto.
Definizione delle ACL
- Verificare che non ci sia nessun redirector installato, nel caso rimuoverlo.
sudo cat /etc/squid/squid.conf | grep ^redirect
- Nella sezione ACL in /etc/squid.conf, prima della direttiva proxy_auth, definire l'acl relativa ai siti consentiti:
acl Siti_Permessi dstdomain "/etc/squid/siti.permessi"
- Sempre nella sezione ACL, come ultime direttive, inserire le acl relative ai gruppi di utenti:
acl Lan_1 src 192.168.1.0/255.255.255.0 acl Utenti_Illimitati proxy_auth "/etc/squid/utenti.illimitati" acl Utenti_Limitati proxy_auth "/etc/squid/utenti.limitati"
Nota esplicativa
In pratica la direttiva proxy_auth dice che per ogni utente correttamente autenticato, vengono considerati validi solo gli utenti elencati nel file indicato.
Se alla direttiva proxy_auth si fa seguire REQUIRED, allora, tutti gli utenti autenticati saranno considerati validi.
L'Acl Lan_1 è riportata solo per chiarezza.
Applicazione delle ACL
Nella sezione http_access, prima delle ultime due direttive:
http_access allow localhost http_access deny all
Mettere le direttive:
http_access allow Lan_1 Utenti_Illimitati http_access allow Lan_1 Utenti_Limitati Siti_Permessi
Questo significa:
- http_access allow Lan_1 Utenti_Illimitati
le connessioni che sono provenienti dalla Lan_1 e che sono effettuate dagli Utenti_Illimitati, sono permesse senza ulteriori limitazioni.
- http_access allow Lan_1 Utenti_Limitati Siti_Permessi
le connessioni che sono provenienti dalla Lan_1 e che sono effettuate dagli Utenti_Limitati e che sono dirette ai Siti_Pemessi, sono permesse. Se un utente limitato cerca di accedere ad un altro sito, non gli sarà permesso.
Poichè le direttive successive sono:
- http_access allow localhost
Consente connessioni da localhost senza restrizioni
- http_access deny all
Vieta qualsiasi altro tipo di connessioni
QUALSIASI ALTRO UTENTE, ANCHE SE AUTENTICATO, non potrà navigare su nessun sito.
Fare un reload della configurazione per testare le modifice:
sudo /etc/init.d/squid reload
Osservare i log
sudo tail -f /var/log/squid/cache.log
PEr vedere se ci sono eventuali errori di configurazione che impedisconoa squid di partire
sudo tail -f /var/log/squid/access.log
Per vedere quali siti vengono bloccati con TCP_DENIED e quali no, in base ai nomi utenti.
Riferimenti
- Debian Administration :: Squid site restrictions:
- Squid Book: 10.3. Capire il funzionamento delle ACL
- SQUID Frequently Asked Questions: Authentication:23.2 How do I use authentication in access controls?
- lf235, SystemAdministration: Configurare un Proxy-Server con Squid:
- ViSolve - Squid Configuration Manual: Access Control