Scrivo questa guida perché sempre più spesso nelle aziende nasce l’esigenza di monitorare ed eventualmente filtrare il traffico internet dei dipendenti.
Ci sono diversi software con cui implementare un server proxy, alcuni commerciali e alcuni gratuiti. In questa guida vedremo come implementare un server proxy in ambiente Windows completamente integrato in Active Directory a costo zero.
Il prodotto in questione è Squid (http://www.squid-cache.org/), originariamente nato per l’ambiente Linux è disponibile anche il porting su piattaforma Windows.
L’integrazione con Active Directory è possibile se lo installiamo su una macchina sia Linux che Windows, in ambiente Linux la configurazione per l’autenticazione in AD è leggermente più complessa di quella in ambiente Windows.
Squid può essere installato in qualunque macchina della nostra rete non necessariamente con due schede di rete, nel qual caso dovrà fare anche da gateway.
Come prima cosa dobbiamo scaricare Squid dal sito http://squid.acmeconsulting.it/index.html, seguiamo le indicazioni per Squid 2.7 per Windows -> Squid Download Page -> mirror 1/mirror 2 -> e qui scarichiamo l’ultima versione Stabile, al momento è la 2.7.STABLE8.
Una volta completato il download scompattiamo il file .zip nel percorso c:\squid. Copiamo questi tre file nel percorso c:\squid\etc:
- squid.conf.default ==> squid.conf
- mime.conf.default ==> mime.conf
- cachemgr.conf.default ==> cachemgr.conf
Apriamo il file squid.conf e apportiamo alcune modifiche necessarie per il primo avvio:
- Sezione OPTIONS FOR AUTHENTICATION
- Sezione ACCESS CONTROLS
- Sezione DISK CACHE OPTIONS
- In questa sezione dobbiamo impostare i parametri di configurazione della cache su disco, per far questo togliamo il commento alla riga:
cache_dir ufs c:/squid/var/cache 100 16 256
e modifichiamo i parametri secondo le nostre necessità.
Tenendo conto che i tre parametri hanno questo significato:
100 = Dimensione massima in MB della cache su disco
16 = Numero di sottodirectory di 1° livello
256 = Numero di sottodirectory di 2° livello
Inizialmente possiamo lasciare al valore di default questi 3 parametri.
- Sezione LOGFILE OPTIONS
- In questa sezione definiamo il percorso e il tipo del file di log degli accessi che viene generato da Squid.
Il percorso viene definito dalla seguente direttiva:
access_log c:/squid/var/logs/access.log squid
mentre il tipo viene definito dalla riga:
logformat squid %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt
in questo caso definiamo un formato di log chiamato squid e lo usiamo nel comando access_log.
- Sezione ADMINISTRATIVE PARAMETERS
- In caso di errore o di accesso a un sito non autorizzato Squid visualizza una pagina con i dettagli indicando anche un indirizzo e-mal dell’amministratore di sistema. A tal proposito possiamo modificare questo indirizzo tramite la direttiva seguente:
cache_mgr <indirizzo_email>
- Sezione ERROR PAGE OPTIONS
- L’ultimo parametro da modificare è la lingua in cui vogliamo vengano visualizzate le pagine di errore, per far questo usiamo questa direttiva:
error_directory c:/squid/share/errors/English
dove al posto di English inseriamo il nome della directory che rispecchia la lingua che vogliamo utilizzare all’interno della cartella c:/squid/share/errors, nel caso della lingua Italiana abbiamo:
error_directory c:/squid/share/errors/Italian
A questo punto la configurazione di base di Squid è terminata e possiamo mandarlo in esecuzione per la prima volta. Apriamo un quadro dos, posizioniamoci nella directory c:\squid\sbin e lanciamo il comando:
squid -z
in modo da creare le directory della cache. Se non abbiamo commesso errori nel file di configurazione dovremmo vedere qualcosa del tipo:
C:\squid\sbin>squid -z
2010/04/24 11:33:24| Creating Swap Directories
che ci segnala che la creazione delle directory è stata eseguita con successo, altrimenti vedremo qualcosa del tipo:
C:\squid\sbin>squid -z
2010/04/24 11:41:28| parseConfigFile: squid.conf:4257 unrecognized: 'error_directoryxxx'
2010/04/24 11:41:28| Creating Swap Directories
nel qual caso abbiamo commesso qualche errore di sintassi. (In questo caso era voluto!!).
NOTA: Se installiamo squid nella directory di default c:\squid non dobbiamo mai specificare il percorso del file di configurazione, se invece usiamo un percorso diverso è necessaroio modificare tutti i riferimenti all’interno del file squid.conf e usare il parametro -f configfile ogni volta che lanciamo il comando squid.exe.
Ora possiamo installare Squid come servizio e iniziare a testarlo. Per far questo lanciamo il comando:
C:\squid\sbin>squid -i
Registry stored HKLM\SOFTWARE\GNU\Squid\2.6\Squid\ConfigFile value c:/squid/etc/squid.conf
Squid Cache version 2.7.STABLE8 for i686-pc-winnt
installed successfully as Squid Windows System Service.
To run, start it from the Services Applet of Control Panel.
Don't forget to edit squid.conf before starting it.
Se tutto è andato a buon fine sarà creato il servizio Squid. Se vogliamo chiamarlo in modo diverso dobbiamo aggiungere il parametro -n servicename.
Una volta creato il servizio dobbiamo avviarlo con il comando:
net start Squid
e dovremo ricevere come output:
The Squid service is starting.
The Squid service was started successfully.
Verifichiamo che Squid sia effettivamente in ascolto tramite il commando:
C:\squid\sbin>netstat -na | findstr :3128
TCP 0.0.0.0:3128 0.0.0.0:0 LISTENING
Come si vede chiaramente squid è in ascolto sulla porta di default 3128.
Apriamo Internet Explorer in un client e configurazione le impostazioni del proxy tramite il menù Tools > Internet Options -> Connections -> LAN Settings e impostiamo il proxy server come evidenziato in figura:

sostituendo l’indirizzo e la porta del server con quelli della nostra configurazione.
Torniamo al browser e proviamo a raggiungere un sito qualunque, se tutto funziona correttamente dovrebbe visualizzarsi la pagina senza alcun problema.
Per verificare l’utilizzo effettivo del proxy, possiamo usare uno dei vari test online del tipo (http://www.lagado.com/proxy-test) oppure verificare il file access.log nella cartella C:\squid\var\logs.
Se invece appare una finestra del tipo:

che ci chiede le credenziali di accesso significa che il proxy sta funzionando ma c’è qualche problema con l’autenticazione NTLM.
In questo caso dobbiamo modificare il livello di autenticazione LAN Manager nel valore:
Send LM & NTLM – use NTLMv2 session security if negotiated
Per semplicità possiamo modificare la Default Domain Policy così da configurare tutte le macchine nel Dominio. L’impostazione si trova all’interno della chiave:
Computer Configuration -> Policies -> Windows Settings -> Security Settings -> Local Policies -> Security Options -> Network security: LAN Manager authentication level
Una volta apportata la modifica aspettiamo che la policy venga applicata o forziamola con il comando GPUDATE /force, dopodiché riproviamo e se tutto è andato bene questa volta la richiesta di username e password non dovrebbe comparire.
Con le procedure fin qui indicate la configurazione base di Squid è terminata, l’accesso è consentito a tutti per qualunque sito e un log viene generato ad ogni accesso.
Nella prossima parte vedremo alcuni parametri per l’ottimizzazione di Squid e come configurare l’impostazioni del proxy in automatico nel browser.
Parte 2
Commenti recenti