OSSEC: un evoluto sistema di intrusion detection

OSSEC è un "host-based intrusion detection system" (HIDS) opensource ovvero un software in grado di monitorare il funzionamento di un sistema "dal suo interno" anziché ricorrere all'uso delle interfacce di rete (come fanno invece networ...

OSSEC è un “host-based intrusion detection system” (HIDS) opensource ovvero un software in grado di monitorare il funzionamento di un sistema “dal suo interno” anziché ricorrere all’uso delle interfacce di rete (come fanno invece network-based intrusion detection system.
I software HIDS si occupano di sorvegliare costantemente il comportamento del sistema oggetto d’esame e lo stato in cui sta operando. Mentre i NIDS ispezionano il contentuto di ogni singolo pacchetto dati in transito, un HIDS qual è OSSEC può stabilire a quali risorse tentano di accedere i programmi installati bloccando tempestivamente operazioni sospette. Un word-processor non deve, ovviamente, modificare le password di sistema o la configurazione di aree vitali: se lo fa significa che, con buona probabilità, sta eseguendo del codice maligno, collegato all’azione di un malware.
Un HIDS controlla lo stato del sistema verificando le informazioni memorizzate, sia in RAM che sul file system, i file di log e così via. L’obiettivo è quello di rilevare tempestivamente anomalie.

OSSEC HIDS si incarica di analizzare i log di sistema, verificare l’integrità dei file memorizzati su disco, controllare la presenza di rootkit e tenere traccia delle performance di ogni macchina collegata alla rete locale.

Il progetto opensource sta ottenendo un sempre maggior numero di consensi ed è certamente uno dei migliori prodotti utilizzabili in una rete di tipo aziendale.

OSSEC deve essere installato su un sistema Linux ed è in grado di controllare, in modo centralizzato, qualsiasi personal computer, a partire dalle macchine Windows. Ciò è possibile grazie all’installazione, su ciascuna workstation, di uno speciale “agent”, un software che interagisce con il server di OSSEC.

Quando si parla di “intrusion detection systems” solitamente il pensiero corre a soluzioni NIDS, che forniscono una visione granulare di tutto ciò che sta accadendo nella rete locale. Il NIDS monitora il traffico appoggiandosi ad una scheda di rete collegata direttamente alla LAN. Il sistema che si occupa di controllare il traffico di rete può essere connesso alla LAN mediante un hub, alla porta “SPAN” di uno switch oppure ad un apparato detto “network tap” che agevola il monitoraggio in invasivo del flusso di dati in transito.

Un NIDS è un sistema di monitoraggio molto potente che però consta di qualche limite. Cosa succede, ad esempio, allorquando vengano impiegate tecniche conosciute per “dribblare” il NIDS? Cosa accade quando le comunicazioni tra due sistemi sono crittografate (un NIDS non permette, ovviamente, di esaminare il contenuto di pacchetti dati cifrati)?
Cosa succede se l’attacco sferrato da un aggressore viene effettuato impiegando tecniche crittografiche?
In questi frangenti un NIDS non può essere efficace.

Un HIDS può rilevare le attività in corso su macchine server e singole workstation generando messaggi di allerta simili a quelli di un NIDS. La differenza, però, è che un HIDS è in grado di ispezionare l’intero flusso dei dati scambiati nelle varie comunicazioni. Le tecniche precedentemente citate non hanno efficacia nei confronti di un HIDS perché, tra l’altro, nel caso di comunicazioni crittografate, queste possono essere comunque monitorate. I dati cifrati infatti vengono analizzati prima che diventino tali. Un HIDS, inoltre, può svolgere compiti addizionali quali i controlli sull’integrità dei file, sul contenuto del registro di sistema, operazioni di analisi dei log, rilevamento di rootkit e così via.

Controllo dell’integrità
Per ciascun file presente sul sistema è sempre possibile generare un firma digitale attraverso l’utilizzo di una “funzione hash”. L'”impronta” generata caratterizza in modo univoco il singolo file preso in esame. Se un file con lo stesso nome, ad esempio, ha una firma differente significa che il contenuto varia. Un HIDS come OSSEC è in grado di monitorare file importanti con lo scopo di rilevarne eventuali cambiamenti dovuti, spesso, all’applicazione di aggiornamenti ma, purtroppo, altre volte, all’azione di malware.

Monitoraggio del registro di sistema
Il registro di Windows, come sottolineato più volte, è una delle componenti più importanti ma allo stesso tempo più delicate del sistema operativo Microsoft. Un HIDS qual è OSSEC “tiene d’occhio” gli interventi applicati al contenuto del registro di sistema. Grazie a questo tipo di attività, è possibile assicurarsi che un utente oppure un’applicazione non introduca delle modifiche con scopi maligni.

Rootkit
Un HIDS si occupa anche di preservare i sistemi tenuti sotto controllo dall’azione di rootkit. Qualora un malware del genere riuscisse ad insediarsi sul sistema i danni sarebbero infatti enormi. Un rootkit sa nascondere servizi, processi, file, cartelle, chiavi del registro di Windows e porte sia agli occhi dell’utente sia allo stesso sistema operativo.

Avvio di operazioni in modo automatico
Spesso gli HIDS permettono anche di eseguire particolari operazioni, in modo del tutto automatico, in risposta al verificarsi di uno specifico evento o di un insieme di attività potenzialmente pericolose.

Installazione di OSSEC lato server

OSSEC è un software scalabile, multipiattaforma ed opensource che vanta più di 5.000 download ogni mese. In grado di operare sulla maggior parte dei sistemi operativi (Linux, Windows, OpenBSD, FreeBSD, Mac OS X e Sun Solaris), presenteremo l’installazione di OSSEC su un server Linux. Sulle varie macchine Windows collegate alla LAN installeremo l’apposito programma “agent”.

Sui sistemi Ubuntu Linux, prima di procedere all’installazione di OSSEC, è necessario verificare la presenza del pacchetto denominato build-essential. Per controllare, è possibile cliccare sul menù Sistema, Amministrazione quindi su Gestore pacchetti Synaptic infine digitare build-essential dopo aver cliccato sul pulsante Cerca.

Il pacchetto build-essential è installabile servendosi di Synaptic oppure da finestra terminale (menù Applicazioni, Accessori, Terminale) digitando il seguente comando:

sudo apt-get install build-essential

L’installazione del pacchetto dovrà essere confermata premendo il tasto “S” (Sì).

A questo punto si può procedere al download dei file ossec-hids-1.4.tar.gz e ossec-hids-1.4_checksum.txt. I comandi da utilizzare sono i seguenti:

mkdir temp
cd temp
wget http://www.ossec.net/files/ossec-hids-1.5.tar.gz
wget http://www.ossec.net/files/ossec-hids-1.5_checksum.txt

Gli sviluppatori di OSSEC consigliano, quindi, di controllare l’integrità del prodotto verificando la corrispondenza delle firme mediante l’utilizzo dei comandi seguenti:

cat ossec-hids-1.5_checksum.txt
md5sum ossec-hids-1.5.tar.gz
sha1sum ossec-hids-1.5.tar.gz

Il passo seguente consiste nel decomprimere l’archivio d’installazione di OSSEC:

tar -zxvf ossec-hids-1.5.tar.gz
cd ossec-hids-1.5

Conclusa l’operazione di estrazione dei file dall’archivio compresso, è possibile avviare la procedura d’installazione vera e propria:

sudo -s
./install.sh

Digitando it, il setup sarà avviato in lingua italiana.
Per effettuare un’installazione basata sull’impiego di un server centralizzato (in questo caso Ubuntu Linux) e di “agent” periferici (da installare su ciascuna workstation connessa alla rete locale), è necessario digitale server e premere il tasto Invio. Come secondo passo, è possibile confermare l’installazione di OSSEC nella directory /var/ossec (premere Invio).

A partire dal terzo punto in poi, la procedura di installazione propone una serie di scelte che hanno a che fare con le notifiche ed i messaggi di allerta. Ad esempio, si può indicare se si desideri o meno ricevere notifiche via posta elettronica ed il server SMTP da impiegare per la spedizione delle e-mail.

Il “demone di controllo dell’integrità” è il responsabile per il controllo delle modifiche apportate sui file memorizzati: è consigliabile abilitarlo.
Attivando anche il motore di riconoscimento rootkit, OSSEC effettuerà in tempo reale delle analisi sulle varie workstation così da individuare la presenza di eventuali componenti nocivi.
Entrambe le protezioni, basilari per un HIDS, dovrebbero essere abilitate servendosi del pulsante “s” (Sì).

Come passo successivo, OSSEC richiede se attivare la “risposta attiva”. Come già spiegato, si tratta di uno strumento molto potente che consente di mettere in atto, in modo del tutto automatico, azioni tali da prevenire intrusioni o comunque ridurre l’impatto di un attacco. La “risposta attiva” può perciò rivelarsi come una soluzione estreamente interessante per rispondere in modo tempestivo ed efficace ad un tentativo di aggressione.
Va purtuttavia rimarcato come configurazioni approssimative del modulo di “risposta attiva” possano inibire il corretto funzionamento di un sistema od arrestare servizi di fondamentale importanza.
E’ consigliabile attivare la funzionalità di “risposta attiva” integrata in OSSEC ma è bene inserire nella “white-list” uno o due indirizzi IP “fidati” ai quali sia sempre concesso l’accesso al sistema.

In un’installazione di tipo server come quella che stiamo realizzando, OSSEC può ricevere i messaggi di allerta attraverso un canale cifrato (porta 1514) oppure attraverso il protocollo “syslog” (porta 514), impiegato per veicolare – in una rete IP – informazioni di log e reso standard, di recente, dall’IETF (Internet Engineering Task Force).

Premendo Invio, OSSEC viene compilato, installato e configurato sulla base delle opzioni impostate in precedenza. Al termine di questa fase, la procedura di setup fornisce alcune informazioni conclusive.

Ad esempio, viene ricordato che lo script di inizializzazione del sistema è stato modificato in modo tale da eseguire OSSEC in modo automatico ad ogni ingresso in Linux.

Per avviare OSSEC è necessario digitare il comando /var/ossec/bin/ossec-control start. L’HIDS può essere arrestato in qualsiasi momento ricorrendo al comando /var/ossec/bin/ossec-control stop.

La configurazione del software può essere controllata o modificata accedendo al contenuto del file /var/ossec/etc/ossec.conf.

Prima di passare all’installazione dei vari “agent”, è bene tenere a monte che il server OSSEC colloquia con i client utilizzando la poarte 1514 ed eventualmente la 514. E’ perciò necessario assicurarsi che il firewall od il sistema per il filtraggio dei pacchetti dati consentano questo tipo di comunicazioni. E’ indispensabile attivare il traffico UDP in ingresso (“inbound”) sulle porte 1514 e 514 per qualunque sistema ove sia installato un agent di OSSEC.

Ogni “agent” deve potersi indetificare con il server ed il server deve essere in grado di confermare l’identità dell'”agent”. In questo modo è possibile essere certi che non vengano gestiti messaggi non autorizzati, inviati da host non supportati.
Il traffico dati tra server e ciascun “agent” avviene in forma cifrata e viene “validato” utilizzando chiavi precedentemente condivise. Tali chiavi debbono essere generate sul server quindi importate su ciascun client.
La gestione delle chiavi si concretizza facendo ricorso all’apposita utilità “manage_agents” avviabile digitando il comando /var/ossec/bin/manage_agents.

Per aggiungere un nuovo “agent” in lista, è necessario premere il tasto “A”: verrà così richiesto, un nome (non è concesso l’uso degli spazi) da attribuire all'”agent”, l’indirizzo IP della macchina ove è installato ed un numero identificativo (ID) a propria scelta.

La procedura va ripetuta per ciascun “agent”. Al termine di quest’operazione OSSEC deve essere riavviato in modo tale che possa leggere le informazioni aggiornate relative alle chiavi (comando /var/ossec/bin/ossec-control restart).

Installazione dell’agent

Sui sistemi Windows, l'”agent” è dotato di un’interfaccia grafica. Scaricabile cliccando qui, la procedura d’installazione dell'”agent” richiede quali componenti si desideri utilizzare (suggeriamo di lasciare attive le scelte predefinite).

L’amministratore dovrà poi inserire l’indirizzo IP del server e la chiave di autenticazione per lo specifico client. Tale chiave può essere ricavata avviando sul server, nuovamente, l’utilità manage_agents, quindi servendosi del tasto “E” (Extract key for an agent). La chiave può essere copiata manualmente oppure recuperata con un “copia&incolla” collegandosi al server Linux via SSH (si può utilizzare, allo scopo, un software come PuTTY).

Cliccando sul pulsante Save, l'”agent” di OSSEC richiederà di confermare l’importazione della chiave quindi si connetterà al server.
A questo punto, è possibile chiudere la finestra Agent manager cliccando sulla “X” in alto a destra.

Come ultimo passo, verrà richiesto di avviare il modulo “agent” cliccando sul pulsante OK.

L'”agent” per Windows dovrebbe essere installato ed operativo. Per verificare che sia effettivamente così, è bene dare uno sguardo ai log dell'”agent” stesso (menù View, View logs dell’Agent manager, avviabile dal menù Start, Programmi, ossec).

In figura, è immediato notare come l'”agent” si sia correttamente connesso al server OSSEC utilizzando la porta UDP 1514.

Il file /var/ossec/etc/ossec.conf può essere utilizzato, sul server, per modificare, in profondità,la configurazione di OSSEC.
Tutte le configurazioni possibili, sono illustrate sul sito web ufficiale del prodotto (ved. questa pagina).

OSSEC non è certamente uno strumento per utenti novizi ma si rivela un’interessante soluzioni per gli amministratori di rete più evoluti. Prima di avviare a padroneggiare efficacemente l’utilizzo del prodotto, è necessario infatti studiare nel dettaglio le tante opzioni di configurazione.
Il software è dotato anche di un’interfaccia grafica accessibile via web (WUI), scaricabile ed installabile separatamente previa adozione, sul server, di Apache e PHP.

Ti consigliamo anche

Link copiato negli appunti