Registrare i log di Iptables in MySQL

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca

Introduzione

Lo scopo di questa guida è di mostrare come registrare le attività del firewall di Linux in un database MySQL.
Il target -j LOG di iptables viene utilizzato per salvare nel file di log di syslog un sommario testuale degli headers dei pacchetti intercettati.
Ma cosa occorre fare per registrare l’intero pacchetto, o una porzione particolare di esso, per eventuali esami futuri?
Contrariamente a quanto avviene con altri moduli firewall, c'è bisogno di un programma che gira in userspace, nella fattispecie ulogd, per poter trattare i pacchetti ottenuti. ulogd affianca o sostituisce il tradizionale metodo di logging bastato su syslogd con il più evoluto target ULOG, capace di loggare direttamente in userspace e gestire i log nei modi più svariati. Le informazioni risultano più schematiche e molto simili a quelle dei tradizionali log di sistema. In pratica i log vengono gestiti da un apposito programma che è in grado di elaborarli in modi diversi, da file di testo a database MySQL, il tutto in modo nativo senza usare filtri o script in perl come capitava con il tradizionale target LOG.

Installazione

L’installazione dei pacchetti necessari è velcoe e semplice come al solito in Debian:

# apt-get install ulogd ulogd-mysql

Configurazione

Come prima cosa occorre creare un database vuoto, con gli opportuni privilegi, in cui registrare gli eventi ulogd. Potete creare il database utilizzando PhpMyAdmin o direttamente da linea di comando, in questo modo:

# mysql -u root -p
CREATE DATABASE ulogd;
GRANT ALL PRIVILEGES ON ulogd.* TO ‘ulogduser’@'localhost’ IDENTIFIED BY ‘Digitate_la_password_per_ulogd’ WITH GRANT OPTION;
quit

Come avrete notato, abbiamo creato un nuovo database, un nuovo utente e abbiamo attribuito a questo utente i permessi per leggere e scrivere sul database.
Le struttura delle tabelle per il database appena creato è scritta nel file /usr/share/doc/ulogd-mysql/mysql.table. Carichiamolo quindi nel database appena creato con:

# mysql -u ulogduser -p ulogd < /usr/share/doc/ulogd-mysql/mysql.table

Adesso possiamo procedere con la configurazione di ULOG editando il file /etc/ulogd.conf.
Nella sezione plugins va decommentata la riga:

plugin="/usr/lib/ulogd/ulogd_MYSQL.so"

per permettere la registrazione dei log su un db MySQL.
Impostiamo poi l’account per l’accesso al database:

[MYSQL]
table="ulog"
pass="password_per_ulogduser"
user="ulogduser"
db="ulogd"
host="localhost"

Arrivati a questo punto è sufficiente riavviare ulogd:

/etc/init.d/ulogd restart