Monitorare gli accessi ai sistemi informatici è un requisito fondamentale per assicurare il più alto elevato standard di sicurezza della rete. Inoltre dovuto alla recente variazione del garante sulla legge della privacy che, dopo qualche posticipo, è entrata ufficialmente in vigore il 15 Dicembre 2009, agli amministratori di sistema è stata ulteriormente complicata la vita, come se questa non lo fosse già abbastanza…
Come prevede la normativa, bisogna registrare i log di accesso ai sistemi ed assicurare l'integrità dei file di sistema marcandoli temporalmente conservando il tutto per almeno sei mesi.
Tra le varie offerte disponibili sul mercato, la scelta è caduta su un software open source su piattaforma Linux chiamato OSSEC, un software IDS molto valido che risponde ai requisiti di legge ed è approvato dal Garante.
Prerequisiti
Partendo dalla configurazione minima di CentOS 5.x, sono richiesti alcuni package aggiuntivi da installare per il corretto funzionamento. Tramite il comando yum andiamo ad installare i package richiesti:
# yum install gcc glibc make which mysql-devel mysql-server httpd mod_ssl php
# chkconfig httpd on
# chkconfig mysqld on
Installazione
Dal sito www.ossec.net si effettua il download dell'applicazione OSSEC-HIDS-2.3. OSSEC nel suo normale funzionamento salva i dati su file ma conviene appoggiarsi ad un database (sono supportati attualmente mySQL e postgreSQL) soprattutto se ci sono diversi server da monitorare e si vuole centralizzare il tutto.
L'abilitazione al supporto database (mySQL nel nostro caso) deve essere fatta durante l’installazione:
# tar -zxvf ossec-hids-2.3
# cd ossec-hids-2.3/src
# make setdb
# cd ..
# ./install.sh
Lanciata la procedura di installazione, selezionare la tipologia di installazione e i parametri che si vogliono configurare. L’applicazione viene installata in /var/ossec.
Installazione della web-gui
Per installare l’interfaccia web di OSSEC, procedere in questo modo:
# wget http://www.ossec.net/files/ui/ossec-wui-0.3.tar.gz
# tar -zxvf ossec-wui-0.3.tar.gz
# mv ossec-wui-0.3 /var/www/html/ossec-wui
Eseguire lo script di configurazione dell'interfaccia web:
# cd /var/www/html/ossec-wui
# ./setup.sh
Impostare lo username (apache nell'esempio) e la password.
Aggiungere l’utente impostato precedentemente (apache) al gruppo ossec:
# vi /etc/group
ossec:x:500:apache
Impostare i permessi per la directory /var/ossec/tmp:
# cd /var/ossec
# chmod 770 tmp/ -R
# chown ossec:apache tmp/ –R
Riavviare Apache:
# service httpd restart
Configurazione
Importante da ricordare che se tra il server e l’agent è presente un firewall, la comunicazione di OSSEC avviene attraverso la porta UDP 1514.
Tramite il comando /var/ossec/bin/./manage_agent si creano gli agent dei server che saranno monitorati. Per procedere con la definizione degli agent:
# cd /var/ossec/bin/
# ./manage_agents
- Selezioniamo A per aggiungere un agent
- Definiamo un nome dell’agent: srv-service-lab
- Definiamo l’IP: 172.16.21.200
- Definiamo l’ID: 001
- Confermiamo digitando Y
Successivamente è necessario estrarre la chiave per configurare l’agent nell’host desiderato (srv-service-lab nell’esempio).
- Selezioniamo E per estrarre la chiave per l’agent
- Specifichiamo l’ID dell’agent da configurare
- Questa chiave andrà copiata dove richiesto durante l’installazione dell’agent
Abilitare il supporto database
Se si intende inviare i log al database, è necessario specificarlo prima di effettuare l'installazione quindi prima di lanciare lo script install.sh:
# cd ossec-hids-2.3/src
# make setdb
# cd ..
# ./install.sh
Dopo che l'installazione è terminata, abilitare il database:
# /var/ossec/bin/ossec-control enable database
Configurare MySQL
# mysql -u root -p
mysql> create database ossec;
mysql> grant INSERT,SELECT,UPDATE,CREATE,DELETE,EXECUTE on ossec.* to ossecuser@localhost;
mysql> set password for ossecuser@localhost=PASSWORD('password!');
mysql> flush privileges;
mysql> quit
Effettuare il download dello schema e importarlo nel database creato:
# wget http://www.ossec.net/files/other/mysql.schema
# mysql -u root -p ossec < mysql.schema
Configurare OSSEC per inviare gli alerts a MySQL
Nell'esempio vengono inviati gli alert all'indirizzo IP 192.168.10.30, utilizzando ossecuser come utente.
<ossec_config> <database_output> <hostname>192.168.10.30</hostname> <username>ossecuser</username> <password>password!</password> <database>ossec</database> <type>mysql</type> </database_output> </ossec_config>
Riavviare OSSEC e verificare che non ci siano errori nel log tramite il comando:
# cat /var/ossec/logs/ossec.log
Per migliorare la reportistica e le statistiche, molto scarne dell'interfaccia web di OSSEC, si può utilizzare il prodotto SPLUNK nella sua versione free che consente di avere vari report in un formato grafico più chiaro e leggibile.
E' qui riportato un esempio:
A questo punto non resta che mettere in sicurezza il server di OSSEC per evitare che venga compromesso.
Sincronizzare data e ora
E' opportuno che l’ora e la data del server su cui è installato OSSEC siano corretti per salvare i log correttamente.
# yum install ntpd
# ntpdate ntp1.ien.it # Effettuare una prima sincronizzazione manuale
# chkconfig ntpd on
# service ntpd start
Installazione del client Linux
L’installazione del client è molto semplice ma richiede l’installazione dei package richiesti per la compilazione di OSSEC.
# yum install gcc make which
# tar –xzvf ossec-hids-2.3.tar.gz
# cd ossec-hids-2.3
# ./install
Lanciata l’installazione, è sufficiente specificare agent come tipo di installazione.
Completata l’installazione, eseguire la configurazione del client per attivare la connessione importando la chiave generata dal server:
# cd /var/ossec/bin/
# ./manage_agents
Terminata la configurazione, riavviare il daemon OSSEC:
# service ossec restart
Troubleshooting
OSSEC riporta un agent come non connesso.
Dopo aver verificato che l'agent nel server da verificare è in modalità running (nel caso effettuare un restart del servizio), è necessario rimuovere l'ID del server dalla coda di OSSEC:
# cd /var/ossec/queue/rids
# rm 002 (nel caso l'ID del server da rimuovere corrisponda a 002)
# service ossec restart
Fatta questa semplice procedura, l'interfaccia web di ossec dovrebbe segnalare l'agent del server come connesso.
ho seguito passo passo quelloche hai scritto
Tutto funzionante.
Ora ti chiedo,come posso imporre che dopo il 180° giorno(6 mesi) mesi i log inizino a cancellarsi dal più vecchio?
Seconda domanda come potrei esportare i log tale da poterli poi masterizzare su un CD-R così da non potrlo più modificare?
OSSEC salva i suoi log nella directory "/var/ossec/logs/alerts" in ordine YEAR -> MONTH -> DAY. Quindi troverai una struttura di directory in forma "anno" (2010 ad esempio) con sub-directory "mese" (Jan) con all'interno i files giornalieri.
Per cancellare, potresti fare uno semplice script da inserire in un task/cron job per eliminare dati vecchi di sei mesi. Per esportare potresti semplicemente copiare i files di log da qualche parte e poi masterizzarli su un CD...
Con il database di mySQL puoi anche qui schedulare un task/cron job con l'istruzione: DELETE FROM myTable WHERE dateEntered < DATE_SUB(NOW(), INTERVAL 6 MONTH);
La prima parte è chiara,ma non ho capito o meglio non conosco bene i comandi all'interno di mysqld e ti chiedo quindi se quello che hai scritto tu è il comando perciso da eseguire o occorre fare altri comandi pre o post.
Grazie
E' molto interessante, volevo sapere se qualcuno di voi lo aveva testato con sistemi dove ci sono database oracle.. Mi spiego meglio: come gestisce le operazioni di login logout logfail a database quale oracle, sql server, mysql? E le stesse operazioni come vengono gestite con i firewall azinedali e le macchine linux /unix as400? faccio queste domande perchè io mi trovo in una realta dove ho tutti questi dispositivi, attualmente ho provato splunk che è un altro prodotto open source ma devo confessare di avere avuto dei problemi con gli amibenti descritti sopra.. anzi per essere sincero non ci sono riuscito proprio a farlo quadrare.
Grazie per le vostre risposte e per l'articolo davvero interessante.
Ciao Paolo, solo per chiarezza, come fai a dire: "risponde ai requisiti di legge ed è approvato dal Garante" ?
Che io sappia non esistono certificazioni del Garante in merito....
Grazie
Per quanto prevede il decreto entrato in vigore il 15 Dicembre 2009, OSSEC risponde a quanto richiesto dal Garante in termini di privacy. Se poi questo decreto sarà modificato in futuro introducendo varianti e considerando come "a norma di legge" solo determinati tipi di software, bisognerà ovviamente adeguarsi con le soluzioni "certificate" che purtroppo temo non saranno economicamente indolori.
L'ho installato e provato e devo dire che è davvero un ottimo software.. uniche pecche (per il mio uso almeno) è che attualmente non registra i log agli accessi dei database di oracle e non integra un timestamp e una crittografia dei dati per renderli immodificabili come vuole la legge e quindi bisogna provvedere con altri prodotti.. L'accesso ai database oracle è coming soon.. quindi arriverà spero presto, a quel punto di sicuro utilizzerò questo prodotto che mi pare meglio dello splunk sopratutto a livello di hardware rilevato. (firewall e router ecc..)
Bravo.
Bell'articolo ma soprattutto bel Blog: preciso, completo, sintetico.
Via così.
ciao! prima di tutto grazie per la splendida guida, molto chiara, sono riuscito a realizzare il tutto in meno di mezz'ora, pero' forse mi sfugge qualcosa: hai detto che questo sistema rispetta "i requisiti di legge ed è approvato dal Garante", la legge prevede come giustamente hai detto tu di "registrare i log di accesso ai sistemi ed assicurare l’integrità dei file di sistema marcandoli temporalmente conservando il tutto per almeno sei mesi." ma non ho capito a quali sistemi? ai server? perchè per inserire un agent devi per forza di cosa inserire l'ip fisso, nel caso dei server non è un problema ma per le macchine client tipicamente in dhcp come si fa? io pensavo ci volesse un sistema che tenesse traccia degli accessi alle macchine client oltre che a quelle server; grazie in anticipo per le delucidazioni
Attualmente la normativa sulla privacy prevede di loggare gli accessi ai sistemi effettuati degli amministratori di rete poichè, disponendo delle password, possono accedere alle aree contenenti dati. Per i client questo requisito non è previsto, però non mi stupirebbe se la normativà subisse del modifiche in futuro...
Salve P@olo avrei una domanda, durente l'installazione, seguita passo passo, al comando chown ossec:admin tmp/ -R mi dà come output chown: invalid user: 'admin'
Cosa devo fare ?
Il comando riportato sulla procedura è chown ossec:apache tmp/ -R.
Però teoricamente uno potrebbe scegliere qualunque nome per l'utente, giusto ?
Si, però deve essere opportunamente configurato nel sistema.