MySql e HoneyStats, organizzare e gestire i dati di una honeypot su RaspberryPi

honeystats

Abbiamo visto nel precedente articolo come creare una Honeypot su RaspberryPi in pochi semplici passi utilizzando kippo (o il nuovo fork cowrie) e glastopf.

Una volta messi in piedi i servizi adatti a catturare il traffico malevolo, potremmo andare semplicemente a spulciarci uno ad uno i file di log, ma visto che siamo decisamente pigri, vediamo quale possa essere invece un modo più agevole per controllare i dati.

MySQL e HoneyStats

In genere i software per honeypot mettono a disposizione diversi metodi per registrare le interazioni avvenute con i servizi: dai semplici log di testo a formati più moderni come json. Praticamente tutti però consentono di salvare i dati collezionati all’interno di un database MySQL, che è proprio il metodo che vedremo in questo articolo.

Oltre a configurare opportunamente il database, vedremo anche come utilizzare HoneyStats, il piccolo framework che ho pubblicato su Github e che utilizzo per popolare la pagina dedicata alla honeypot sul mio sito.

Honeystats ci consentirà facilmente di estrarre dal database in maniera automatica e pubblicare su un sito i vari log, per una semplice ed immediata analisi degli stessi.

Configuriamo l’ambiente MySQL

Per prima cosa abilitiamo il logging su MySQL nei vari file di configurazione e creiamo l’ambiente adeguato affinchè tutto funzioni nel modo corretto.

NB: ricordiamoci di installare il server MySQL sul nostro Raspberry Pi se non l’abbiamo già fatto e ovviamente creiamo/aggiorniamo l’utente root per la gestione del db:

apt-get install mysql-server mysql-client mysql-common
mysqladmin -u root password 'nuova-password'

Preparazione di kippo/cowrie

Creiamo un database ed un utente per kippo/cowrie e richiamiamo poi gli script SQL contenuti nella sotto-directory doc/sql; saranno questi script a creare le tabelle all’interno delle quali il software andrà a salvare i log.

Creaiamo il database per kippo/cowrie:

mysql -h localhost -u root -p
mysql> create database kippo;
mysql> GRANT ALL ON kippo.* TO 'kippo'@'localhost' IDENTIFIED BY kippo-password';
mysql> flush privileges; 
mysql> commit;
exit

Creiamo le tabelle per kippo/cowrie richiamando gli script sql. Gli script possono essere più di uno (quello principale ed i vari update che si sono aggiunti nel tempo); andiamo in ordine ed eseguiamoli in sequenza:

cd /home/kippo/kippo/doc/sql/
mysql -h localhost -u kippo -p
mysql> use kippo;
mysql> source mysql.sql;
mysql> source update2.sql;
...
mysql> source update7.sql;
mysql> commit;

Configuriamo infine il file .cfg di kippo/cowrie, togliendo i commenti dalle righe indicate di seguito e sostituendo a databaseusername e password quelli appena creati:

[database_mysql]
host = localhost
database = cowrie
username = cowrie
password = secret
port = 3306

Preparazione di glastopf

Facciamo la stessa cosa per glastopf, saltando la parte di esecuzione degli script, poichè sarà il software ad occuparsi della creazione delle tabelle nel database al primo avvio.

Creiamo un utente per glastopf:

mysql -h localhost -u root -p
mysql> create database glastopf;
mysql> GRANT ALL ON glastopf.* TO 'glastopf'@'localhost' IDENTIFIED BY 'glastopf-password';
mysql> flush privileges; 
mysql> commit;
exit

Abilitiamo il logging su mysql per glastopf, modificando il file di configurazione come nell’esempio seguente:

[main-database]
#If disabled a sqlite database will be created (db/glastopf.db)
#to be used as dork storage.
enabled = True
#mongodb or sqlalchemy connection string, ex:
#mongodb://localhost:27017/glastopf
#mongodb://james:bond@localhost:27017/glastopf
#mysql://james:bond@somehost.com/glastopf
connection_string = mysql://glastopfuser:glastopfpass@localhost/glastopfdb

 

Perfetto! Ora i nostri due servizi salveranno i dati all’interno dei database che abbiamo creato!

 

Vediamo adesso nella prossima pagina, come installare e configurare Honeystats per accedere facilmente ai nostri log.