Il Cache Manager è una componente interna di Squid per la gestione remota tramite protocollo HTTP. É possibile utilizzare una applicazione web del tipo Common Gateway Interface (CGI), cachemgr.cgi(8), che consente di visualizzare le diverse informazioni e statistiche relative al processo Squid esposte dal Cache Manager. Per utilizzare correttamente cachemgr.cgi(8) è necessario installare un server web, che può anche non risiedere sulla macchina dove è in esecuzione Squid.
A partire dalla versione 2.5 STABLE10, cachemgr.cgi(8) utilizza il file cachemgr.conf per determinare a quali server si è autorizzati ad accedere. Ogni linea specifica una coppia server:port seguita da una descrizione opzionale:
# This file controls which servers may be managed by cachemgr.cgi # # The file consists of one server per line on the format # hostname:port description # # Specifying :port is optional. If not specified then # the default proxy port is assumed. # # hostname is matched using shell filename matching, allowing # * and other shell wildcards. localhost cache.example.com:8080 |
Esistono anche applicazioni commerciali di terze parti che accedono direttamente allínterfaccia di Cache Manager senza utilizzare un server web.
In prima istanza assicurarsi che sia stato installato Apache e che la directory che contiene gli script cgi-bin utilizzi la direttiva ScriptAlias, è necessario modificare il file httpd.conf definendo la direttiva ScriptAlias per il singolo VirtualHost
<VirtualHost 192.168.0.4> ScriptAlias /squid/cgi-bin/ /usr/local/squid/libexec/ </VirtualHost> |
ora assicuriamoci che solo alcune workstation possano accedere al cachemanager, sempre all'interno della direttiva VirtualHost inseriremo le seguenti informazioni
<VirtualHost 192.168.0.4> <Location /usr/local/libexec/squid/cachemgr.cgi> order allow,deny allow from workstation.domain.com </Location> </VirtualHost> |
possiamo inserire più linee per ogni direttiva allow, possiamo autorizzare interi domini o intere subnet. In alternativa è anche possibile proteggere il Cache Manager impostando una password di accesso sul server web utilizzando la direttiva Location. Per proteggere l'accesso al Cache Manager con una password inseriremo le seguenti direttive nel file httpd.conf
<VirtualHost 192.168.0.4> <Location /usr/local/libexec/squid/cachemgr.cgi> AuthUserFile /etc/htpasswd AuthGroupFile /dev/null AuthName User/Password Required AuthType Basic require user cachemanager </Location> </VirtualHost> |
il file /etc/htpasswd contiene gli userID le password in formato MD5, non dimentichiamo mai che il protocollo HTTP non è un protocollo sicuro in quanto i dati transitano sempre in chiaro, maggiori informazioni sul web server Apache sono disponibili alla URLs http://httpd.apache.org/.
É possibile utilizzare una macchina Windows per connettersi al Cache Manager di Squid, anche su sistemi non Windows.
Innanzitutto é necessario procurarsi un package binario per Windows ed estrarne il file cachemgr.cgi.
Quindi si deve definire una directory virtuale IIS cgi-bin e modificarne i permessi di accesso in questo modo:
Definire una Allowed Web Server Extension "Squid cachemgr.cgi" ed aggiungere il file cachemgr.cgi nei Required Files.
Modificare la directory virtuale cgi-bin definendone l'Application Name come "cgi-bin" e assegnando "Scripts and Executables" come Execute Permissions
Disattivare infine l'accesso anonimo sulla directory virtuale e attivare uno schema di autenticazione, tipicamente Integrated Windows
Se si sta utilizzando IIS 5.0 (Windows 2000) o IIS 5.1 (Windows XP), si deve procedere in modo analogo, ma senza cambiare i permessi e non é necessario definire la Web Server Extension.
Tramite il Cache Manager è possibile visualizzare diverse informazioni sullo stato della cache ed è anche possibile bloccare il processo di Squid, è dunque una buona idea definirne dei livelli di accesso. Solitamente si impostano diversi livelli di sicurezza del Cache Manager ricorrendo all'utilizzo di più password utilizzando il TAG cachemgr_passwd. Rammentiamo ancora al lettore che il traffico http non è sicuro perchè i dati attraversano la rete in chiaro. Per proteggere questi dati da occhi indiscreti è possibile ricorrere agli standard SSL[1] o TLS[2] che sono alla base protocollo HTTPS (RFC 2818 - http://www.faqs.org/rfcs/rfc2818.html). L'utilizzo del TAG all'interno del file squid.conf è il seguente
cachemgr_passwd [password] [azione] [azione] |
dove password è appunto la parola chiave che intendiamo utilizzare, il TAG azione corrisponde ad un comando del Cache Manager
cachemgr_passwd pippo shutdown cachemgr_passwd paperino info stats/objects |
con questo esempio viene impostata come password la parola pippo per consentire l'arresto di Squid tramite Cache Manager. Utilizzando la parola chiave paperino potremo visualizzare le informazioni relative al processo Squid.
L'accesso al Cache Manager avviene utilizzando il protocollo identificato in Squid come cache_object, il TAG che definisce l'utilizzo di questo protocollo è proto cache_obiect
acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl all src 0.0.0.0/0.0.0.0 |
nell'esempio precedente, la macchina 127.0.0.1 è localhost, il webserver Apache è in funzione sulla stessa macchina che esegue Squid (localhost). A questo punto dobbiamo definire delle regole che consentono l'accesso al Cache Manager da parte di localhost
http_access deny manager !localhost http_access allow all |
nel caso in cui il server web é installato su una macchina diversa da localhost
acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl mywebserver src 192.168.0.4/255.255.255.255 acl all src 0.0.0.0/0.0.0.0 http_access deny manager !localhost !mywebserver http_access allow all |
dopo aver installato e configurato Apache, definite le parole chiave per l'accesso alle varie funzionalità del Cache Manager ed infine aver definito le ACL, siamo finalmente in grado di utilizzare il cachemgr.cgi.
Anche se l'interfaccia web di cachemgr.cgi consente di visualizzare le informazioni sullo stato della cache in maniera chiara e dettagliata possiamo anche interrogare il Cache Manager direttamente, senza dover configurare alcun user-agent ed utilizzando dal prompt dei comandi l'utility squidclient(8). I prerequisiti per questo tipo di configurazione sono gli stessi che per l'accesso tramite cachemgr.cgi.
Nel caso in cui squidclient(8) non sia in path, potrebbe essere comodo definire un link simbolico all'interno del path di sistema che consenta di avviare il comando in maniera agevole:
% ln -s /usr/local/squid/bin/squidclient /usr/sbin/squidclient |
ora possiamo finalmente interrogare il Cache Manager di Squid, nel caso in cui sia stata definita una password, basterà usare le opzioni -U e -W:
% squidclient -U manager -W pippo mgr:info | less ... ... Squid Object Cache: Version 2.5.STABLE6 Start Time: Sat, 25 Sep 2004 07:07:20 GMT Current Time: Sat, 25 Sep 2004 07:48:13 GMT Connection information for squid: |
ecco un'altro esempio di query via squidclient(8) che ci consentirà di determinare il numero di richieste HTTP in corso
% squidclient mgr:info | grep 'HTTP'
HTTP/1.0 200 OK
Number of HTTP requests received: 11
Average HTTP requests per minute since start: 0.2
HTTP Requests (All): 0.00000 0.00000
|
elenchiamo ora una serie di interrograzioni al Cache Manager di Squid, il significato di queste query è stato già trattato dettagliatamente in precedenza nella sezione Utilizziamo Net-SNMP
% squidclient mgr:info | less
...
...
Process Data Segment Size via sbrk(): 2244 KB
Maximum Resident Size: 0 KB
|
% squidclient mgr:info | grep 'Page faults'
Page faults with physical i/o: 464
|
% squidclient mgr:info | grep 'Number of HTTP requests'
Number of HTTP requests received: 16
% squidclient mgr:info | grep 'Average HTTP requests'
Average HTTP requests per minute since start: 0.2
% squidclient mgr:60min | grep 'client_http.requests'
client_http.requests = 0.004419/sec
|
% squidclient mgr:counters | grep icp.queries_recv
icp.queries_recv = 0
|
% squidclient mgr:5min | grep dns.median_svc_time
dns.median_svc_time = 0.000000 seconds
|
% squidclient mgr:info | grep 'Number of file desc currently in use'
Number of file desc currently in use: 12
|
% squidclient mgr:5min | grep cpu_usage
cpu_usage = 0.000000%
|
| [1] |
SSL è l'acronimo di Secure Socket Layer |
| [2] |
TSL è l'acronimo di Transport Layer Security |