La raccolta dei dati relativi al sistema, al traffico di rete, alle attività
degli utenti ed al server Web è essenziale poichè collezionando ed analizzando
queste informazioni diventa possibile non soltanto scoprire i segni di eventuali
intrusioni e determinare la portata delle azioni compiute dall'aggressore ma
anche individuare tutte quelle operazioni di "probing" che, pur non
rappresentando dei veri e propri attacchi, sono sintomi di un sicuro interesse
di qualcuno verso il sistema ed in particolare verso le sue
vulnerabilità.
L'approccio ideale per riconoscere in qualsiasi momento i
segni di probabili intrusioni o di altre attività anomale consiste nel
paragonare le informazioni relative al funzionamento del sistema in quel dato
momento con le analoghe informazioni catturate in un momento anteriore
(generalmente in fase di prima installazione od operatività) che, in
quanto tali, costituiscono un impronta affidabile e caratteristica del
funzionamento del sistema stesso.
Di regola questo genere di indicazioni
viene fornito dal sistema operativo, dal software che gestisce il server Web e
da altri meccanismi di terze parti.che consentono di:
- monitorare ed analizzare la natura e la portata del traffico di rete attraverso la raccolta di dati concernenti:
-
- il numero dei pacchetti, il numero dei bytes e delle connessioni in entrata
ed uscita suddivisi per protocollo, indirizzi IP sorgenti e destinazione e
porte; - le intestazioni ed il contenuto dei pacchetti ricevuti;
- il numero dei socket aperti;
- gli errori che si verificano sulle differenti interfacce di rete e lo stato
di queste ultime; - le connessioni effettuate ed i tentativi di connessione falliti suddivisi
per protocollo, nome dell'host/utente, porte, indirizzi, data ed ora; - la durata ed il flusso di ciascuna delle connessioni;
- il numero dei pacchetti, il numero dei bytes e delle connessioni in entrata
- monitorare l'utilizzo del sistema attraverso la raccolta di dati
concernenti: -
- l'ammontare totale delle risorse in uso (CPU, memoria, dischi);
- lo stato del file system per ciascuna partizione in termini di spazio
libero, numero dei file aperti, statistiche di I/O; - i cambiamenti nello stato del sistema (shutdown e riavvii);
- la data e l'ora di avvio dei vari processi, la loro durata nonchè la
percentuale di risorse, le periferiche ed il numero dei file che ciascuno di
essi adopera; - gli errori ed i warning segnalati dal sistema;
- monitorare gli utenti e le attività di questi attraverso la raccolta di dati
concernenti: -
- login (data ed ora, numero di tentativi falliti, tentativi di accesso come
utenti privilegiati) e logout; - i cambiamenti e le modifiche riguardanti i privilegi degli utenti e l'uso
dei privilegi stessi; - l'esecuzione di azioni che richiedono particolari privilegi;
- il numero dei processi avviato;
- login (data ed ora, numero di tentativi falliti, tentativi di accesso come
- monitorare e verificare l'integrità dei file attraverso la raccolta di dati
concernenti: -
- il numero ed il timestamp di files e/o directories ed i loro attributi;
- il checksum per tutti i files e le directories più importanti (pagine web,
file di sistema e di configurazione, applicazioni e strumenti per la sicurezza,
file contenenti dati rilevanti); - i cambiamenti nelle dimensioni, nel contenuto e nella protezione dei files;
- l'aggiunta, la cancellazione e la modifica di files e/o directories;
- la presenza di eventuali "alternate data streaming" all'interno dei files
(Windows NT/2000); - i risultati delle scansioni antivirus;
- raccogliere ed analizzare i file di log per i vari servizi di rete (web,
mail, ftp,etc...);
Naturalmente la mole di informazioni che deriva da simili operazioni di
monitoraggio può essere veramente considerevole per cui è sempre opportuno
effettuare un giusto bilanciamento tra l'importanza della attività di raccolta
dei dati e le risorse disponibili per memorizzarli.
Qualunque sia inoltre la quantità di informazioni che si decide di catturare è essenziale che questa "fotografia" del funzionamento del sistema venga ripetuta in relazione ai vari aggiornamenti che nel tempo vengono apportati al sistema stesso (installazione di nuovo software, aggiornamento dei file del sistema operativo, applicazioni delle patches di sicurezza, etc...) in modo da garantire l'attendibilità dei risultati che scaturiscono dal raffronto tra i dati.
Per non rischiare di vanificare inutilmente i meccanismi di logging ed auditing è inoltre conveniente adottare le seguenti precauzioni:
- posizionare i logs su un host separato dedicato esclusivamente a questa finalità e posto all'interno di una sottorete protetta da firewalls;
- configurare attentamente questo host in modo da scongiurare o limitare fortemente gli effetti di un possibile attacco di tipo D.O.S (Denial of Service) che può verificarsi se l'aggressore cerca di saturare le risorse impiegate per il salvataggio dei dati in modo da far cessare il logging;
- proteggere i logs in modo tale da consentire l'accesso ad essi ed agli strumenti utilizzati per la loro configurazione soltanto agli utenti debitamente autorizzati;
- criptare i logs contenenti informazioni sensibili nel momento stesso della loro registrazione;
- eliminare la possibilità che i dati una volta scritti possano essere modificati, usando per la registrazione supporti di tipo "write-once/read many" (CD-ROM, stampanti, cassette);
- predisporre opportune regole per l'archiviazione dei logs e la loro dislocazione in luoghi e su supporti fisicamente sicuri;
- analizzare i logs con cadenza periodica avvalendosi degli strumenti esistenti a tal fine;
Per diminuire il volume dei dati da analizzare periodicamente e quindi
favorire un riscontro più puntuale dei dati possono essere impiegate tecniche
cosiddette di rotazione che consistono nel creare copie dei logs online ad
intervalli regolari, rinominare queste copie ed analizzare i dati in esse
contenuti in modo da poter contare sempre su una collezione di logs relativi a
ben precisi momenti temporali.