Gestione di una whitelist per utenti con Squid

From RVM Wiki
Jump to navigation Jump to search

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