Installazione di Squid

Presupposti:
  • Occorre un computer anche non particolarmente potente: per un utilizzo normale è sufficiente un pentium 2 o celeron con 64 di ram e un disco fisso da 2 gb. Può essere utile più spazio disco se si intende utilizzare squid non solo per il controllo dell'accesso a internet, ma anche per velocizzare l'accesso alle pagine e ridurre il consumo di banda, aumentando la memoria cache per le pagine.
  • Deve essere installato e configurato Argo-linux e il pacchetto isi-ldap. Quest'ultimo, che svolge la funzione di autenticatore degli utenti, può essere installato sulla macchina che fa da proxy (tipicamente il firewall/gateway) oppure su un altro computer (server ldap/samba).

Per installare Squid, se non è già installato, è sufficiente dare il comando root@srv #apt-get install squid. Il comando per attivare il server proxy è root@srv #/etc/init.d/squid start. Per far sì che il proxy venga avviato automaticamente al riavvio del computer, è sufficiente controllare che in /etc/runlevel.conf la riga "30 0,1,6 2,3,4,5 /etc/init.d/squid" non sia commentata.

Configurazione di Squid

La configurazione di squid è contenuta nel file /etc/squid/squid.conf. Si tratta di un file molto lungo, capillarmente documentato ed estremamente configurabile. >Nelle ultime versioni il file è stato snellito: restano solo i comandi principali e sono stati elòiminati tutti i commenti
Qui ci limitiamo a dare indicazioni estremamente concise ed atte solo ad una configurazione minimale, adatta allo scopo che ci prefiggiamo, cioè di far sì che gli utenti della scuola che accedono ad Internet vengano autenticati dal proxy tramite un accesso al database ldap.
  • La prima cosa da configurare è l'IP della macchina che deve essere interrogata per l'autenticazione degli utenti, cioè il server ldap/samba (che può essere la stessa macchina dove gira squid, oppure un'altra).
    Questo si ottiene con la riga "auth_param basic program /usr/lib/squid/ldap_auth -b ou=People,dc=isi xxx.xxx.xxx.xxx (indirizzo Ip del server ldap)".
  • La seconda cosa necessariamente da configurare è la creazione di una access list (acl) che obblighi gli utenti ldap ad autenticarsi per poter accedere a internet.
    Ciò si ottiene con la seguente riga: "acl ldapusers proxy_auth REQUIRED".
  • Se lo si desidera si possono creare altre access list per utenti o macchine che non hanno bisogno di essere filtrati.
Per questo motivo quasi tutto il resto della configurazione può essere lasciato ai valori di default

Visualizzare i reports di Squid con Sarg

Sarg (Squid Analysis Report Generator) è uno strumento che genera pagine web con report che rendono facilmente leggibili i log di Squid. In pratica viene creata una pagina web per ogni utente, con un elenco delle pagine visitate, completo di URL, bytes scaricati, tempi di accesso, etc...
Nella distribuzione Argo-linux Sarg è già previsto e l'unica cosa da fare è modificare leggermente il file di configurazione, che è già funzionale, ma che ha un piccolo errore e salva le pagine web in una directory che non è raggiungibile.
  • Per configurare la cartella di salvataggio dei report corretta, occorre sostituire "output_dir /var/www/html/squid-reports" con "output_dir /var/www/http/squid-reports"
  • Si possono poi configurare moltissimi altri parametri, alcuni esclusivamente estetici, altri utili, per esempio:
    • impostare la lingua italiana con "language Italian"
    • personalizzare il titolo con title "Statistiche degli accessi degli utenti tramite Squid"
    • aggiungere un logo con "logo_image http://localhost/immagine.jpg"
In questo modo è possibile vedere, digitando nel browser l'IP del firewall la pagina dei report sugli accessi al proxy realizzata automaticamente da SARG. Poiché i dati contenuti sono da considerare riservati, è opportuno proteggere l'accesso a queste pagine con la richiesta di una login e relativa password.

Proteggere le pagine web di SARG (e non solo) da accessi indesiderati

Per proteggere le pagine web da accessi indesiderati con evidente rischio di non rispettare il diritto alla privacy, è opportuno utilizzare le funzionalità di Apache, utilizzando il file .htaccess e quello delle password, cioè .htpasswd.
Per attivare questa funzionalità occorre creare un file dal nome .htaccess (attenzione al punto iniziale, che lo rende nascosto). Il file .htaccess funziona come uno script di configurazione, e fornisce ad Apache alcuni dettagli ed opzioni quando un utente viene autenticato. Con un editor di testi si devono inserire le seguenti righe:
AuthUserFile /var/www/http/squid-reports/.htpasswd
AuthGroupFile /dev/null
AuthName "Rapporti di Squid"
AuthType Basic
<Limit GET>
require valid-user
</Limit>
Come si può notare, il file .htaccess è diviso in due sezioni, la prima parte per i dettagli di autenticazione e la seconda parte con i permessi per l'utente:
AuthUserFile /var/www/http/squid-reports/.htpasswd
Nella prima linea è indicato il percorso assoluto al file .htpasswd. Questo file contiene una lista di combinazioni di username e password che Apache userà per verificare tutti i tentativi di login.
AuthGroupFile /dev/null
La seconda linea fa riferimento ad un file per l'autentificazione di gruppi. Questo potrebbe essere utile per separare gli utenti in gruppi distinti, come studenti e insegnanti. Siccome non ne faremo uso, indichiamo /dev/null, in modo tale da "avvisare" Apache che il file non esiste.
AuthName "Rapporti di Squid"
Nella terza linea, indichiamo il nome che vogliamo venga visualizzato dalla finestra del browser quando richiede il login
AuthType Basic
La variabile AuthType imposta il tipo di autenticazione per la richiesta. Dato che stiamo usando una semplice autenticazione via web, la impostiamo su Basic, anche perché viene supportata da tutti i browser. Altri valori possibili sono PGP e Digest.

La seconda sezione del nostro file .htaccess, contiene le richieste e i metodi di risposta a cui gli utenti autenticati hanno accesso. Nel nostro file .htaccess consentiamo agli utenti autorizzati l'accesso a tutte le parti del sito in cui il metodo GET è permesso (in poche parole, gli utenti possono vedere una pagina, ma non possono compilare form etc). Altri limiti includono PUT e POST.
<Limit GET>
...
</Limit>
Tra i due Limit, possiamo inserire una lista di utenti a cui intendiamo concedere l'accesso alle cartelle protette, precendendo l'username con “require user”, ad esempio
require user fabio
require user massimo
In alternativa si può garantire l'accesso a tutti gli utenti con l'esatta accoppiata username/password presenti nel file .htpasswd:
require valid-user 
Arrivati a questo punto non resta che aggiungere utenti alla lista delle persone autorizzate. Questo viene fatto tramite il programma htpasswd, che è molto più semplice del file .htaccess, dato che può essere composto anche da una sola linea. In realtà è composto da una lista di coppie nome/valore, che rappresentano le combinazioni di username/password. Ogni combinazione di username/password è separata da un ritorno a capo e viene usata da Apache per determinare se un utente che tenta di accedere alla directory protetta esiste, e se la password che ha fornito è valida.
Per creare il file .htpasswd, una volta collegato al server web via ssh, occorre portarti nella directory da proteggere.
La sintassi del comando htpasswd è la seguente:
htpasswd [opzioni] [file .htpasswd] [nuovo username]
Digiteremo quindi:
*htpasswd -c /var/www/http/squid-reports/.htpasswd nomeutente*
dove
  • "-c" informa il programma che stiamo creando un nuovo file.
  • /var/www/http/squid-reports/.htpasswd indica il percorso e il nome del file che creiamo
  • nomeutente è il nome dell'utente cui vogliamo dare il permesso di accedere.
In questo modo verrà chiesto di digitare due volte la password che si vuole associare all'utente.
Per aggiungere un altro utente, non sarà più necessario usare il parametro "-c" (che serve a creare il file .htpasswd).

Infine occorre accertarsi che nel proprio file di configurazione del server Apache (/etc/apache/httpd.conf) la direttiva AllowOverride sia settata a All e non a None, altrimenti le direttive presenti nel file .htaccess saranno scartate in favore di quelle presenti nel file di configurazione.

Filtro sui contenuti web

Squid permette di impostare delle politiche di accesso ai siti web, in particolare sugli indirizzi (sia URL che indirizzi IP), che è possibile bloccare, anche se non è possibile impostare dei filtri sul contenuto delle pagine web: per questo è necessario un programma a parte, come per esempio Dans Guardian
Per fare ciò occorre definire delle access list, alle quali poi negare o permettere l'accesso. Un'access list va inserita in /etc/squid.conf e generalmente fa riferimento ad un file di testo esterno nel quale vengono inseriti gli indirizzi da bloccare (ricordo che il file di testo deve avere un indirizzo per riga e che il fine riga deve essere Unix-type).
Esempio di file che contiene gli indirizzi da bloccare:
.lookatmynaughtywife.com
.wifeposter.com
.wifelovers.com
.chickchat.nl
.tienerwebcams.nl
E' possibile trovare su Internet dei file con una serie di indirizzi da bloccare già confezionati, anche se magari non tutti sono aggiornati. Per esempio si può vedere il sito http://www.squidblock.com/, oppure anche Squid and Web Utilities di Pedro Lineu Orso, ed ancora Squid Blocking Files di Jasons Staudenmayer.
Tale file va salvato in una cartella apposita, per esempio /etc/squid/policies/ e ad esso fa riferimento l'access list impostata in squid.conf tramite il comando url_regex, per esempio:
acl porn url_regex "/etc/squid/policies/porn.txt" 
acl mp3 url_regex "/etc/squid/policies/mp3.txt" 
Oltre alla definizione della access list, è necessario indicare a Squid quale comportamento deve tenere quando deve accedere ad un sito in essa contenuto. Tale comportamento si definisce col comando "deny", in questo modo:
http_access deny porn 
http_access deny mp3 
Dopo aver fatto le modifiche al file di configurazione, occorre ovviamente riavviare il servizio con il comando /etc/init.d/squid restart.

Maggiori informazioni si possono trovare sul sito ufficiale di Squid (in inglese), e soprattutto sull'ottimo sito in lingua italiana di Merlino BBS, nella sezione dedicata a Squid.

-- FabioFrittoli - 8 Giugno 2004

Revision: r1.6 - 12 Jun 2021 - 06:45 - WebMaster
Reteisi > DocTecWoody > IsiSquid
Copyright © 1999-2006 degli autori degli articoli. Tutto il materiale presente su questa piattaforma collaborativa è di proprietà di chi l'ha prodotto. Idee, richieste, problemi relativi a TWiki? Invia feedback