Utilizzo di Squid come Proxy Server
di Stefano Sasso
1. Introduzione
In questo articolo vedremo come configurare Squid come proxy-cache. Squid si comporta come un intermediario che riceve le richieste dai vari client e le invia al server competente. Quando giunge una risposta ne salva una copia sul disco e ne manda una al client richiedente. Il vantaggio si dimostra quando più client richiedono lo stesso oggetto: il proxy server recupera la copia che aveva precedentemente salvato sul disco e la invia al client che l'ha richiesta senza dover contattare di nuovo il server.
2. Introduzione a Squid
Squid è uno dei proxy server Open Source più diffusi in quanto è molto stabile, flessibile e ad alte prestazioni; Squid supporta i protocolli HTTP, FTP e GOPHER, inoltre i protocolli SSL, HTTPS, TSL sono pienamente supportati in modalità tunneling tra client e server.
3. Installazione
3.1 Requisiti di sistema
I prerequisiti di Squid sono minimi: si richiedono la presenza di GCC e Perl, normalmente installati di default in ogni distribuzione.
3.2 Download dei sorgenti, compilazione, installazione
La prima operazione da fare è scaricare l'ultima versione stabile di
Squid da www.squid-cache.org.(Al
momento in cui scrivo la versione stabile è: squid-2.5.STABLE3)
Una volta effettuato il download dei sorgenti è necessario scompattare
l'archivio:
tar xzvf squid-2.5.STABLE3.tar.gz
Ci portiamo nella directory appena creata
cd squid-2.5.STABLE3
e procediamo con la compilazione el'installazione
./configure --prefix=/usr/local/squid
make all
make install
Se l'operazione termina senza errori il binario principale di Squid si trova
sotto /usr/local/squid/sbin/ .
Per rendere le cose più semplici è consigliato inserire la directory
/usr/local/squid/sbin alla variabile PATH.
4. Configurazione base
Iniziamo ora la configurazione editando il file squid.conf presente in /usr/local/squid/etc/ . Nel file aggiungiamo al posto giusto le seguenti variabili:
http_port 3128
è la porta in cui Squid rimane in ascolto
visible_hostname proxy.miodominio
è l'hostname del proxy
cache_dir ufs /usr/local/squid/var/cache 500 16 256
definisce la directory dove verranno archiviate le pagine richieste. Il primo numero indica la dimensione della cache in Mb
cache_mgr root@miodominio
l'email dell'amministratore della cache
5. Controllo di accesso
Squid offre un sistema raffinato per il controllo dell'accesso alla cache: con l'uso di cosiddetti "acl" (= access control list); questo sistema è molto semplice da usare e configurabile in diversi modi. Si tratta di elenchi con regole che vengono elaborate una dopo l'altra.
La direttiva acl definisce un tipo di accesso. Si possono
abilitare utenti, gruppi di indirizzi IP, orari di accesso, protocolli e così
via...
Consente due forme utilizzabili:
acl aclname acltype stringa
acl aclname acltype "file"
Se si usa un file gli argomenti vanno inseriti uno per linea.
La situazione più comune che si presenta è consentire l'accesso
alla cache solo alle macchine e agli utenti autorizzati.
Prima di iniziare bisogna attivare un programma per l'autenticazione esterna.
Per fare questo ci portiamo nella cartella helpers/basic-auth/NCSA
presente nella directory dei sorgenti, quindi lanciamo
make
make install
Una volta attivato il supporto all'autenticazione è possibile intervenire su squid.conf per apportare le dovute modifiche:
auth_param basic program /usr/local/squid/libexec/ncsa_auth /usr/local/squid/etc/passwd
auth_param basic realm Proxy Cache Authentication
Il file contenente le password (/usr/local/squid/etc/passwd) deve essere generato con l'utility htpasswd fornita con il web server Apache.
Ora, sempre su squid.conf aggiorniamo le ACL
acl password proxy_auth REQUIRED
Possiamo anche aggiungere gli indirizzi IP delle nostre reti
acl network1 src 192.168.0.0/255.255.255.0
acl network2 src 192.168.15.0/255.255.255.0
Ora non ci resta che attivare le politiche e negare tutto ciò che non è stato esplicitamente autorizzato (In alcuni squid.conf alcune delle seguenti righe potrebbero essere già presenti e decommentate, e quindi non occorre aggiungerle. L'importente è che tutte le politiche vengano scritte prima della riga http_access deny all eventualmente già presente.)
http_access deny !password
http_access allow localhost
http_access allow network1
http_access allow network2
http_access deny all
6. Avvio del server
Prima di avviare il server è necessario creare alcune directory:
cd /usr/local/squid/var
mkdir -m 777 cache logs
Ora dobbiamo inizializzare la cache con
/usr/local/squid/sbin/squid -z
Questo comando va lanciato dopo l'installazione e successivamente solo quando si vuole reinizializzare (= pulire, svuotare) la cache.
Per avviare il server digitare:
/usr/local/squid/sbin/squid
e per disabilitarlo:
/usr/local/squid/sbin/squid -k shutdown .
Ecco un esempio del file squid.conf
# File: squid.conf # Created by stone (stone -at- dscnet.org) # Date: 27/02/2004
# TAG: visible_hostname : il nome host che verrà visto # TAG: cache_mgr : l'email dell'amministratore della cache # ACL: access control list : non deve tenere in cache i cgi # TAG: cache_mem : la ram utilizzata dalla cache; per avere prestazioni
ottimali # TAG: cache_dir : la directory dove deve venir memorizzata la cache # TAG: cache_access_log : il file di log per gli accessi # TAG: cache_log : i log della cache # TAG: cache_store_log : i log di storage # TAG: emulate_httpd_log : scrive i log in una forma più leggibile # TAG: mime_table : il file di configurazione per i tipi MIME # TAG: dns_nameservers : i/il nostro/i DNS # ACL generali # ACL per l'accesso alla cache dalla/e nostra/e rete/i # Le regole per l'accesso alla cache e a internet icp_access allow localhost # squid.conf END |
www.gnustile.net