Logging su MySQL: differenze tra le versioni

corretta gerarchia titoli
Nessun oggetto della modifica
(corretta gerarchia titoli)
Riga 1: Riga 1:
{{Versioni compatibili|Debian Etch 4.0<br/>Debian Lenny 5.0<br/>Debian Squeeze<br/>Debian Sid|}}
{{Versioni compatibili|Debian Etch 4.0<br/>Debian Lenny 5.0<br/>Debian Squeeze<br/>Debian Sid|}}
=Premessa=
== Premessa ==
Questa piccola guida, in questa sua prima versione, descrive velocemente la procedura per abilitare il logging di sistema su di un database MySQL. Essendo questo un compito di indirizzo prettamente professionale, non mi sono soffermato più di tanto nello spiegare i dettagli della procedura. Tantomeno ho elencato nel dettaglio '''tutti''' i comandi necessari, presumendo che chi legge abbia le competenze necessarie a completare le mie eventuali lacune. Qualsiasi commento o correzione è il benvenuto e sarà integrato in eventuali riscritture di questa guida che, in questa stesura, è poco più della traccia da me seguita in diverse occasione per realizzare quanto spiegato.
Questa piccola guida, in questa sua prima versione, descrive velocemente la procedura per abilitare il logging di sistema su di un database MySQL. Essendo questo un compito di indirizzo prettamente professionale, non mi sono soffermato più di tanto nello spiegare i dettagli della procedura. Tantomeno ho elencato nel dettaglio '''tutti''' i comandi necessari, presumendo che chi legge abbia le competenze necessarie a completare le mie eventuali lacune. Qualsiasi commento o correzione è il benvenuto e sarà integrato in eventuali riscritture di questa guida che, in questa stesura, è poco più della traccia da me seguita in diverse occasione per realizzare quanto spiegato.


Buona lettura e happy hacking!
Buona lettura e happy hacking!


=Logging su MySQL=
== Logging su MySQL ==
Spesso, specie in ambiente professionale, si ha la necessità di memorizzare i log di sistema in una località centralizzata vuoi per motivi di sicurezza che di semplice monitoraggio. Syslogd permette di implementare in maniera banale questa possibilità, ma a volte ci si trova nella necessità/desiderio di voler dare a questi log una forma facilmente gestibile e interrogabile come ad esempio un database MySQL.
Spesso, specie in ambiente professionale, si ha la necessità di memorizzare i log di sistema in una località centralizzata vuoi per motivi di sicurezza che di semplice monitoraggio. Syslogd permette di implementare in maniera banale questa possibilità, ma a volte ci si trova nella necessità/desiderio di voler dare a questi log una forma facilmente gestibile e interrogabile come ad esempio un database MySQL.
Esiste un syslogger che fa questo per noi, si tratta di syslogd-ng, però non sempre è possibile sostituire il logger in maniera indolore e trasparente.
Esiste un syslogger che fa questo per noi, si tratta di syslogd-ng, però non sempre è possibile sostituire il logger in maniera indolore e trasparente.
Riga 14: Riga 14:
Andiamo con ordine.
Andiamo con ordine.


==Ottenere i sorgenti==
=== Ottenere i sorgenti ===
Procuriamoci il sorgente all'indirizzo: [http://www.frasunek.com/sources/security/sqlsyslogd/sqlsyslogd.c sqlsyslogd.c]. Procuriamoci anche il [http://www.frasunek.com/sources/security/sqlsyslogd/Makefile MakeFile] e lo script che useremo per creare il nostro database: [http://www.frasunek.com/sources/security/sqlsyslogd/sqlsyslogd.sql sqlsyslogd.sql]
Procuriamoci il sorgente all'indirizzo: [http://www.frasunek.com/sources/security/sqlsyslogd/sqlsyslogd.c sqlsyslogd.c]. Procuriamoci anche il [http://www.frasunek.com/sources/security/sqlsyslogd/Makefile MakeFile] e lo script che useremo per creare il nostro database: [http://www.frasunek.com/sources/security/sqlsyslogd/sqlsyslogd.sql sqlsyslogd.sql]


==Compilazione del logger==
=== Compilazione del logger ===
Una volta ottenuto il sorgente del file compiliamolo digitando semplicemente:
Una volta ottenuto il sorgente del file compiliamolo digitando semplicemente:
<pre>
<pre>
Riga 30: Riga 30:
</pre>
</pre>


==Creare il database==
=== Creare il database ===
Creiamo il database con il comando:
Creiamo il database con il comando:
<pre>
<pre>
Riga 39: Riga 39:
Fermiamoci un momento a spiegare il funzionamento del wrapper: sqlsyslogd è un programma C che "intercetta" le chiamate di syslogd e le redirige verso una pipe. Dato che il syslogger syslogd non può puntare direttamente ad un altro programma (come invece può fare il suo cugino di FreeBSD), ma soltanto ad una named pipe, abbiamo bisogno di un ulteriore passaggio.
Fermiamoci un momento a spiegare il funzionamento del wrapper: sqlsyslogd è un programma C che "intercetta" le chiamate di syslogd e le redirige verso una pipe. Dato che il syslogger syslogd non può puntare direttamente ad un altro programma (come invece può fare il suo cugino di FreeBSD), ma soltanto ad una named pipe, abbiamo bisogno di un ulteriore passaggio.


==Il Wrapper==
=== Il Wrapper ===
Scarichiamo questo [http://www.frasunek.com/sources/security/sqlsyslogd/contrib/sqlsyslogd-on-redhat-7.3 script perl] e rinominiamolo ad esempio in "sqlsyslogd.wrapper".<br>
Scarichiamo questo [http://www.frasunek.com/sources/security/sqlsyslogd/contrib/sqlsyslogd-on-redhat-7.3 script perl] e rinominiamolo ad esempio in "sqlsyslogd.wrapper".<br>
Questo script crea per noi un FIFO socket. Syslogd manderà i suoi messaggi al socket, e il wrapper li inoltrerà a sqlsyslogd.
Questo script crea per noi un FIFO socket. Syslogd manderà i suoi messaggi al socket, e il wrapper li inoltrerà a sqlsyslogd.


=Configurazione=
== Configurazione ==
Creaimo il file <code>/usr/local/etc/sqlsyslogd.conf</code> e come unica riga, digitiamo la password necessaria a poter scrivere nel nostro database. Dato che sqlsyslogd gira con le credenziali dell'utente che lo lancia e che - presumibilmente - vorremo avviarlo al boot della nostra macchina, potremo creare un utente apposito o più semplicemente usare le credenziali dell'utente "root". In questo caso in <code>sqlsyslogd.conf</code> inseriremo la password di root (occhio ai permessi su questo file!).
Creaimo il file <code>/usr/local/etc/sqlsyslogd.conf</code> e come unica riga, digitiamo la password necessaria a poter scrivere nel nostro database. Dato che sqlsyslogd gira con le credenziali dell'utente che lo lancia e che - presumibilmente - vorremo avviarlo al boot della nostra macchina, potremo creare un utente apposito o più semplicemente usare le credenziali dell'utente "root". In questo caso in <code>sqlsyslogd.conf</code> inseriremo la password di root (occhio ai permessi su questo file!).


Riga 59: Riga 59:
Assicuriamoci che sqlsyslogd e sqlsyslogd.wrapper vengano lanciati ad ogni riavvio della macchina, aggiungendoli ad esempio ad uno script di avvio.
Assicuriamoci che sqlsyslogd e sqlsyslogd.wrapper vengano lanciati ad ogni riavvio della macchina, aggiungendoli ad esempio ad uno script di avvio.


=Conclusioni=
== Conclusioni ==
Finalmente possiamo riavviare syslogd e cominciare a importare in tempo reale i nostri log in MySQL!!
Finalmente possiamo riavviare syslogd e cominciare a importare in tempo reale i nostri log in MySQL!!
<pre>
<pre>
1 508

contributi