21.9. Strumenti di analisi dei Log

Passiamo ora alla discussione inerente gli strumenti e delle metodologie che utilizzeremo per effettuare l'analisi dei file di log. Appare chiaro, anche sulla base di quanto scritto in precedenza, che la registrazione delle attività più importanti viene memorizzata nel file access.log. In questo file troviamo sia le informazioni inerenti gli accessi, sia le informazioni relative alle prestazioni della nostra cache.

Introduciamo il discorso dell'analisi dei log dicendo che, i file di log stessi devono essere necessariamente gestiti in base alla loro grandezza. In uno scenario dove più di 500 utenti accedono ad internet attraverso la delega di Squid, il file access.log può anche raggiungere dimensioni vicine al gigabyte per una sola settimana d'utilizzo. Per questo motivo la prima cosa da fare è utilizzare il nostro sistema di schedulazione dei processi (crond) in maniera appropriata, nella fattispecie ci serviremo del comando apposito offerto da Squid per ruotare i file di log, ovvero:

% squid -k rotate 
  

Il comando di cui sopra genererà un file access.log.N dove "N" indica un numero incrementale a partire da 0 sino a 9 che indica il numero di rotazione del file di log, tale procedura consente:

Nei paragrafi successivi prenderemo in considerazione il file access.log.0, che differisce dal file di log "normale" in quanto si tratta del file di log direttamente successivo all'originale routato, questa scelta permette di agire su un file di log senza dover fermare il processo di squid e/o di utilizzare il file di log in un lasso di tempo ben definito.

Ricordiamo al lettore che, nell'area /contrib è possibile trovare una tabella crontab correttamente configurata nella quale sono censiti tutti i comandi di rotating e log parsing.

Non è nostro scopo consigliare un programma per la gestione dei log di Squid, per noi è fondamentale descrivere quelle applicazioni di largo utilizzo che consentiranno al lettore di scegliere il sistema di analisi che più si addice alle sue esigenze. Ora passiamo in rassegna diverse soluzioni per le quali forniremo anche un breve commento.

21.9.1. Calamaris

Calamaris è in grado di analizzare diversi files di log, tra questi possiamo citare i files di log protoddi da Squid (http://www.squid-cache.org/), NetCache (http://www.netapp.com/products/netcache/), Inktomi Traffic Server (http://www.inktomi.com/) e Oops! proxy server (http://zipper.paco.net/~igor/oops.eng/).

calamaris è sicuramente il più famoso tra i log analyzer realizzati per Squid e si tratta di tool scritto in perl, si tratta di una delle poche applicazioni in grado di creare una statistica di utilizzo completa che non riguarda solamente gli accessi al sistema ed il livello di utilizzo ma gestisce anche le cache vicine (protocollo ICMP / parent e sibling) e la dislocazione degli oggetti nelle cache stesse, calamaris supporta la creazione di report sia in formato testo che in formato html che contengono le seguenti informazioni:

Calamaris è anche utile per capire il livello di utilizzo della cache rispetto alle richieste ricevute, infatti viene anche gestita la percentuale di HIT rispetto ai MISS, l'utilizzo di calamaris può anche essere utile per creare dei report relativi alle performance del sistema. Ora vediamo un comando di esempio per la generazione di un report:

% cat /usr/local/squid/var/logs/access.log.0 | calamaris -F html -u \
>/web_server_root/calamaris/index.html 
   

possiamo programmare l'esecuzione di calamaris utilizzando la tabella di crontab(8), questo prodotto è reperibile presso la URL's http://cord.de/tools/squid/calamaris/Welcome.html.en.

21.9.2. Webalizer

Questo software nato per la preparazione di reports per i log dei server web, può funzionare egregiamente anche per la gestione dei log di Squid. Webalizer è particolarmente indicato per i file di grosse dimensioni poichè, essendo scritto in C, è molto veloce nell'elaborazione del file di log. Ricordiamo che la visione dei report prodotti da Webalizer necessita di un web server, il software consente anche la configurazione per la generazione di un'archivio storico che terrà conto delle analisi effettuate in precedenza, in questo modo potremmo ottenere della reportistica incrementale.

Per quello che riguarda le informazioni reperibili dall'analisi del file di log, webalizer gestisce le seguenti statistiche mensili:

Webalizer è sicuramente uno dei migliori log parser disponibili oggi in circolazione, l'unica pecca è quella di non consentire una analisi approfondita dei file di log visto che la sua prerogativa è quella di fornire dei risultati statistici. La configurazione di webalizer è piuttosto semplice, basta configurare correttamente le principali variabili all'interno del suo file di configurazione, tra queste possiamo citare le più importanti

LogFile /usr/local/squid/logs/access.log 
LogType squid 
OutputDir /usr/local/www/data-dist/webalizer 
   

ulteriori informazioni circa gli altri parametri di configurazione possono essere reperite all'interno del file di configurazione che è comunque commentato, una volta impostate le variabili all'interno del file di configurazione sarà necessario lanciare il comando

% /usr/local/bin/webalizer -c /usr/local/etc/webalizer.squid.conf 
   

se vogliamo impostare l'esecuzione programmata possiamo utilizzare la tabella di crontab(8), per tutte le altre informazioni su webalizer consigliamo di consultare la documentazione dell'applicazione direttamente alla URLs http://www.mrunix.net/webalizer/.

21.9.3. Sarg

Squid Analysis Report Generator (SARG) è un altro ottimo analizzatore di log per Squid, la sua peculiarità è quella di essere orientato alla creazione di reportistica in base all'utenza, può essere molto utile in ambienti dove i sistemi di autenticazione concedono o negano l'accesso alla cache. SARG è stato scritto nel linguaggio di programmazione C ed è particolarmente indicato per file di log dimensioni ragguardevoli.

Lo storico di utilizzo è dato dal periodo di tempo a cui il log fa riferimento, molto importante al fine di ottenere una reportistica coerente è il susseguirsi dei log tramite la loro rotazione, a tale proposito consigliamo all'utente di lanciare il comando sarg con l'obbligo di analizzare un file access.log.N appena ruotato. Anche questo analizzatore di log necessita di un web server per la pubblicazione dei dati analizzati.

Le informazioni reperibili sono le seguenti

la configurazione è alquanto semplice, il file di configurazione sarg.conf viene posizionato nella directory /usr/local/etc/sarg e come per webalizer sarà necessario editare questo file per definire alcune variabili come

language Italian
access_log /usr/local/squid/access.log.0 
resolve_ip yes 
output_dir /usr/local/www/data-dist/sarg 
   

a punto possiamo iniziare il processo di generazione dei report avviando l'eseguibile del programma

% sarg 
   

se vogliamo programmare l'esecuzione di sarg possiamo utilizzare anche in questo caso la tabella di crontab(8), ulteriori informazioni ed eventuale documentazione può essere reperita presso la URLs http://sarg.sourceforge.net/.

21.9.4. Squeezer2

Squeezer2 è il diretto successore del famoso script Squeezer. Si tratta di una applicazione scritta in perl che permette di avere ottima visione sullo stato della cache in termini di prestazioni, accessi e metodi HTTP utilizzati. Anche questo analizzatore di log fornisce la reportistica in formato HTML, possiamo generare tre tipologie di report

L'utilizzo di Squeezer2 è alquanto semplice anche per un profano del linguaggio perl, basterà editare il file squeezer2.pl e configurare correttamente le seguenti variabili:

my $base_dir = '/usr/squid'; 
my $conf_name = '/usr/squid/etc/squid.conf'; 
my $log_dir = $base_dir . '/var/logs'; 
my $log_name = 'access.log.0'; 
   

A questo punto lanceremo i seguenti comandi al fine di creare i report:

% /usr/local/bin/squeezer2.pl /var/squid/logs/access.log.0 \
>/www/squeezer/SQ`date +%Y%m%d`.html 
% /usr/local/bin/squeezer2.pl > /www/squeezer/all.html 
   

Il sito di riferimento è presso la URL's http://www.rraz.net/squeezer2/.

21.9.5. Yaala

Anche questa applicazione rappresenta un ottimo sistema per la gestione e l'analisi del log di Squid in particolare per quello che concerne i siti internet acceduti dai nostri utenti. La particolarità di Yaala sta nel fatto che la creazione dei report in HTML è completamente configurabile, Yaala utilizza un linguaggio molto simile all'SQL, l'estrazione dei dati dal file di log analizzato può risultare molto simile ad una vera e propria select. E' possibile quindi concatenare i dati stabilendo un criterio di aggregazione ed estrarre le informazioni desiderate dal file di log preso in considerazione.

Esistono tre tipi di aggregazione possibili:

Dati questi tre tipi di aggregazione si possono estrarre i dati per campi, i campi disponibili sono:

Per spiegare meglio passiamo direttamente ad un esempio di configurazione, editando il file "config" si devono definire quindi le variabili necessarie ed i criteri di estrazione dei dati:

directory: 'reports'; 
report: 'Classic'; 
logtype: 'Squid'; 
select: "requests BY client, date, httpstatus, method, mime"; 
   

Analizzando l'ultima riga aggregheremo i dati concatenando le richieste in base al client, la data, il codice http, il metodo http e il mimetype. Ora per creare i nostri report basterà lanciare il seguente comando:

% yaala /path/verso/squid/logs/access.log.0 
   

Ulteriori delucidazioni e riferimenti sono reperibili sulla URL's http://verplant.org/yaala/.

21.9.6. SquidAlyser

SquidAlyser è un programma di analisi dei log molto potente. E' scritto in perl e si appoggia ad un database (MySQL o PostgreSQL) per lo storage dei dati. L'autore dell'applicazione sconsiglia questo programma in scenari ad alta densità d'utenza in quanto esiste un grande impatto sia in termini di prestazioni (utilizzo del perl e di un database) che gestionali (mantenimento e manutenzione di una macchina DB).

I dati che si possono estrarre sono tutti inerenti l'utenza e si possono anche analizzare gli accessi in base a file chiamati o byte. L'installazione comprende quindi la creazione di un database, l'utilizzo di uno script che nel caso specifico si occupa di estrarre le informazioni e metterle nel DB e la configurazione corretta del web server per il CGI che creerà i report.

Dato che la struttura di SquidAlyser è alquanto variegata non discuteremo della configurazione di questo sistema, ulteriori informazioni a riguardo sono reperibili sulla URL's http://ababa.org/index.html.

21.9.7. Logrep

Logrep è un software molto potente per la gestione dei log. Questa applicazione viene citata non tanto per la qualità dei report che è in grado di generare quanto per la possibilità che offre nel riunire in una unica applicazione la completa gestione dei molti file di log che oggi vengono prodotti.

Nello specifico, Logrep può essere molto utile nel caso si volesse implementare una macchina preposta allo storage dei file di log ed alla creazione della reportistica. Tra i formati supportati da Logrep vale la pena citare oltre a Squid anche IIS, Apache, Exchange, Snort, Postfix, Iptables, NT Event ed altri. Ricordiamo che naturalmente nel caso si volesse implementare uno scenario simile a quello sopra descritto, si deve necessariamente procedere a copiare l'access.log.0 sul log-server.

il sito di riferimento è alla URL's http://logrep.sourceforge.net/ .

21.9.8. LIRE

Anche LIRE, come Logrep, è un software che consente la gestione e la creazione di report centralizzata, supporta una grande varietà di formati di files di log. LIRE viene inoltre citato perchè offre la possibilità di installare sulla macchina log-server, che abbiamo brevemente descritto nel paragrafo precedente, un demone che rimane in ascolto delle informazioni che vengono trasmesse dal suo client che potrà essere installato sulla macchina Squid. In questo modo il client LIRE si occuperà di inviare il file di log direttamente al log-server sulla base dei dei criteri da noi impostati.

Ulteriori informazioni possono essere reperite sulla URLs: http://logreport.org/lire/.

21.9.9. Squidefender

Squid Defender è un semplice script scritto in linguaggio perl che si occupa di analizzare il file access.log al fine di trovare possibili entry riguardanti possibili attacchi:

Tra le altre funzionalità importanti riportiamo:

Il suo funzionamento è alquanto semplice, basta editare il file squidefender.conf, inserendo correttamente alcune variabili importanti, tra le quali citiamo:

squidlog=/squid/var/logs/access.log.0 
mailhost=IP.DEL.SMTP 
logfile=squidresults.log 
htmlout=/path/www/index.html 
   

Una volta preparato il file di configurazione basterà lanciare l'eseguibile e puntare il nostro browser verso il report, ulteriori informazioni possono essere reperite sulla URL's http://www.jeroen.se/squidefender.php.