Registrare i log di Iptables in MySQL
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
Configurazione di iptables
Supponendo che il nostro PC abbia la scheda di rete eth0
connessa con un modem ADSL, possiamo impostare la seguente regola di iptables con il target ULOG:
# iptables -t nat -I POSTROUTING -s 192.168.1.0/24 -o eth0 -j ULOG
Tradotta in italiano la regola suona più o meno così: prendi tutto quello che proviene dalla LAN di classe C 192.168.1.0/24 e che esce dall’interfaccia eth0 verso Internet - e che quindi viene nattato -, e registralo su MySQL.