Logging su MySQL: differenze tra le versioni

nessun oggetto della modifica
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 10: Riga 10:
In tutte queste situazioni viene in nostro aiuto una piccola utility : sqlsyslogd, realizzata da [mailto:venglin@freebsd.lublin.pl Przemyslaw Frasunek].
In tutte queste situazioni viene in nostro aiuto una piccola utility : sqlsyslogd, realizzata da [mailto:venglin@freebsd.lublin.pl Przemyslaw Frasunek].


Sqlsyslogd è un wrapper per syslogd scritto in C per FreeBSD, ma è comunque compatibile con qualsiasi piattaforma POSIX e ANSI-C compliant (chi scrive non ha mai avuto problemi nell' usarlo su piattaforma GNU/Linux, in particolare Debian).
Sqlsyslogd è un wrapper per syslogd scritto in C per FreeBSD, ma è comunque compatibile con qualsiasi piattaforma POSIX e ANSI-C compliant (chi scrive non ha mai avuto problemi nell'usarlo su piattaforma GNU/Linux, in particolare Debian).


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==
Riga 22: Riga 22:
$ make
$ make
</pre>
</pre>
nella directory in cui abbiamo scaricato i nostri files.<br>
nella directory in cui abbiamo scaricato i nostri file.<br>
ora copiamo l' eseguibile creato in /usr/local/sbin (ad esempio):
Ora copiamo l'eseguibile creato in <code>/usr/local/sbin</code> (ad esempio):
<pre>
<pre>
$ su
$ su
Riga 35: Riga 35:
$ mysql -u root -p < sqlsyslogd.sql
$ mysql -u root -p < sqlsyslogd.sql
</pre>
</pre>
questo comando crea il database sqlsyslogd, che contiene l' unica tabella logs.
questo comando crea il database sqlsyslogd, che contiene l'unica tabella logs.


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==
Riga 44: Riga 44:


=Configurazione=
=Configurazione=
Creaimo il file /usr/local/etc/sqlsyslogd.conf 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 creadenziali dell' utente "root". In questo caso in sqlsyslogd.conf 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!).


Lo script perl permette di specificare sia il server che ospita il database, sia l' utente con con collegarsi.
Lo script perl permette di specificare sia il server che ospita il database, sia l'utente con con collegarsi.
Il mio suggerimento, rivolto a ovvie questioni di sicurezza, consiste nel creare un apposito utente con cui far girare il wrapper e con cui accedere al database!!
Il mio suggerimento, rivolto a ovvie questioni di sicurezza, consiste nel creare un apposito utente con cui far girare il wrapper e con cui accedere al database!!


Editiamo il file sqlsyslogd.wrapper e adattiamolo alla nostra configurazione e alle nostre esigenze.
Editiamo il file <code>sqlsyslogd.wrapper</code> e adattiamolo alla nostra configurazione e alle nostre esigenze.


Editiamo /etc/syslogd.conf e scriviamo una riga del tipo:
Editiamo <code>/etc/syslogd.conf</code> e scriviamo una riga del tipo:
<pre>
<pre>
*.* |/path/to/sqlsyslogd.wrapper
*.* |/path/to/sqlsyslogd.wrapper
</pre>
</pre>
Possiamo specificare tutte le facilities che vogliamo e loggare soltano quello che ci interessa. La direttiva dell' esempio regirige tutto quello che viene loggato.
Possiamo specificare tutte le facilities che vogliamo e loggare soltanto quello che ci interessa. La direttiva dell'esempio redirige tutto quello che viene loggato.


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.
1 508

contributi