Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Barnyard2: memorizzare gli eventi Snort in MySQL

Memorizzare il log degli eventi registrati da Snort su MySQL, al fine di poterli poi analizzare a scopi di intrusion detection.
Memorizzare il log degli eventi registrati da Snort su MySQL, al fine di poterli poi analizzare a scopi di intrusion detection.
Link copiato negli appunti

In questa lezione vedremo come installare ed utilizzare Barnyard2,
un plugin che nasce con l’idea di ottimizzare la memorizzazione degli eventi generati da Snort.

Fondamentalmente, gli eventi generati da Snort verranno
prima salvati in formato binario (non direttamente leggibile),
successivamente tradotti da Barnyard2, e infine salvati all’interno di un database MySQL.
L’uso di MySQL consentirà il recupero rapido dei dati salvati e
l’utilizzo di ricerche mirate all’interno della miriade di eventi generati.

Configurazione iniziale

Passiamo ad installare i pacchetti richiesti per l’esecuzione di Barnyard2:

sudo apt-get update
sudo apt-get install -y mysql-server libmysqlclient-dev mysql-client autoconf libtool unzip

Ad un certo punto dell’installazione verrà richiesto di impostare una password di root
per MySQL; ovviamente, scegliamo una non troppo banale.

Facciamo quindi in modo che Snort salvi gli eventi in formato binario
(maggiore efficienza), e che Barnyard2 possa leggerli.
A tal fine, apriamo il file di configurazione di Snort:

sudo nano /etc/snort/snort.conf

La riga 521 dovrebbe risultare commentata e riportante il testo #output unified2:….
Sostituiamola con la seguente linea (ovviamente decommentata):

output unified2: filename snort.u2, limit 128

In questo modo Snort genererà dei file denominati snort.u2.xxxxx,
contenenti gli alert in formato binario. Ciascun file sarà grande al più 128MB. Le "x" conterranno il timestamp
della creazione del file.

Installazione

Scarichiamo il file .zip contenente i sorgenti di Barnyard2:

wget https://github.com/firnsy/barnyard2/archive/master.zip -O barnyard2-Master.zip

Decomprimiamo quindi l’archivio:

unzip barnyard2-Master.zip

Posizioniamoci ora all’interno della cartella dei sorgenti e iniziamo la configurazione del pacchetto:

cd barnyard2-master
autoreconf -fvi -I ./m4

Creiamo un link simbolico alla libreria dumbnet.h
(dnet.h è il nome che Barnyard2 si aspetterà di trovare) e riconfiguriamola:

sudo ln -s /usr/include/dumbnet.h /usr/include/dnet.h
sudo ldconfig

Adesso dobbiamo configurare la compilazione di Barnyard2.
Per fare ciò, il comando di configurazione avrà bisogno di conoscere la
posizione della libreria MySQL installata sulla macchina.
Scegliamo la linea corretta tra le due seguenti (in base all’architettura della piattaforma):

./configure --with-mysql --with-mysql-libraries=/usr/lib/x86_64-linux-gnu
./configure --with-mysql --with-mysql-libraries=/usr/lib/i386-linux-gnu

Infine, compiliamo il tutto (il binario finirà in /usr/local/bin/barnyard2)
ed eseguiamo un test di verifica del corretto funzionamento:

make
sudo make install
/usr/local/bin/barnyard2 –V

Se tutto è andato a buon fine, dovremmo leggere qualcosa di simile:

Figura 7. Test di esecuzione per Barnyard2 (click per ingrandire)

Test di esecuzione per Barnyard2

Passiamo infine ad impostare permessi e file di configurazione di Barnyard2:

sudo cp ~/snort_src/barnyard2-master/etc/barnyard2.conf /etc/snort/
sudo mkdir /var/log/barnyard2
sudo chown snort.snort /var/log/barnyard2
sudo touch /var/log/snort/barnyard2.waldo
sudo chown snort.snort /var/log/snort/barnyard2.waldo

Configurazione del database MySQL

Barnyard2 leggerà i file binari salvati da Snort (snort.u2.xxxxx),
li convertirà in formato leggibile e li salverà all’interno del database MySQL.
Per rendere possibile tutto ciò, non dovremo fare altro che creare un database
e l’utente tramite il quale Barnyard2 potrà accedere.

Eseguiamo il comando mysql dalla shell (inserendo la password di root scelta in precedenza):

mysql -u root –p

Creiamo un database denominato snort, con lo schema adatto per i
salvataggi di Barnyard2:

create database snort;
use snort;
source ~/snort_src/barnyard2-master/schemas/create_mysql

Creiamo l’utente con cui accedere al DB (snort, con password "password"),
e impostiamo i permessi:

CREATE USER 'snort'@'localhost' IDENTIFIED BY 'password';
grant create, insert, select, delete, update on snort.* to 'snort'@'localhost';
exit

Adesso dobbiamo spiegare a Snort
come collegarsi al DB MySQL. Per fare ciò, dobbiamo modificare nuovamente il file di configurazione:

sudo nano /etc/snort/barnyard2.conf

Aggiungiamo la seguente linea alla fine del file (senza spezzarla):

output database: log, mysql, user=snort password=password dbname=snort host=localhost sensor name=sensor01

La password scritta in questo file risulterà leggibile, dovremo quindi cambiarne i privilegi di accesso:

sudo chmod o-r /etc/snort/barnyard2.conf

Verifica finale

A questo punto non rimane che verificare che Snort memorizzi
gli eventi nei relativi file di log in formato binario,
e che Barnyard possa leggerli e convertirli in righe per le tabelle del DB MySQL.

Eseguiamo Snort in modalità demone (sostituiamo il nome
dell’interfaccia con quella della nostra macchina):

sudo /usr/local/bin/snort -q -u snort -g snort -c /etc/snort/snort.conf -i en2ps3

Eseguiamo il ping verso la macchina Snort, in modo che possa registrare l’evento di “intrusione”
dei pacchetti ICMP, e dopo qualche pacchetto inviato,
interrompiamo il ping e chiudiamo Snort.
Dovremmo visualizzare un file snort.u2.xxxxx dentro la directory di log /var/log/snort.
Eseguiamo Barnyard2 per caricare il contenuto di
questo file all’interno del DB MySQL (non spezzate la linea):

sudo barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.u2.xxxxxx –w /var/log/snort/barnyard2.waldo -g snort -u snort

Attendete un po’ e chiudete Barnyard2 dopo che avrete visualizzato gli eventi processati.
Verifichiamo che i record siano stati caricati all’interno di MySQL (digitate la password):

mysql -u snort -p -D snort -e "select count(*) from event"

Se tutto va a buon fine, dovremmo visualizzare
il risultato di count(*),
pari al numero di messaggi ICMP ricevuti durante la precedente operazione di ping:

Figura 8. Conteggio dei record memorizzati nella tabella degli alert di Barnyard2 (click per ingrandire)

Conteggio

Ti consigliamo anche