Old:Configurare un server Syslog su Debian: differenze tra le versioni

nessun oggetto della modifica
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 14: Riga 14:
# apt-get install syslog-ng
# apt-get install syslog-ng
</pre>
</pre>
L'installazione rimuoverà automaticamente il demone <tt>syslog</tt> installato di default.
L'installazione rimuoverà automaticamente il demone <code>syslog</code> installato di default.


=Configurazione del server Syslog=
=Configurazione del server Syslog=
Riga 39: Riga 39:
</pre>
</pre>
in modo da abilitare il demone a ricevere log da client remoti.<br/>
in modo da abilitare il demone a ricevere log da client remoti.<br/>
In questa configurazione è stata presa in considerazione una semplice gestione dei log (di default salvati in <tt>/var/log</tt>), senza l'implementazione di un database di archiviazione. Si tenga comunque presente che le possibilità di gestione dei log sono molto più avanzate di quelle mostrate in questa guida.
In questa configurazione è stata presa in considerazione una semplice gestione dei log (di default salvati in <code>/var/log</code>), senza l'implementazione di un database di archiviazione. Si tenga comunque presente che le possibilità di gestione dei log sono molto più avanzate di quelle mostrate in questa guida.


=Installazione di phpLogCon=
=Installazione di phpLogCon=
Riga 45: Riga 45:
Prima di installare phpLogCon è necessario installare e configurare un ambiente LAMP, seguendo ad esempio le indicazioni riportare in questa guida: [[LAMP: Linux, Apache, MySQL e PHP]].<br/>
Prima di installare phpLogCon è necessario installare e configurare un ambiente LAMP, seguendo ad esempio le indicazioni riportare in questa guida: [[LAMP: Linux, Apache, MySQL e PHP]].<br/>
Una volta terminata la configurazione dell'ambiente LAMP si può procedere all'installazione di phpLogCon. Si scarichi innanzitutto la versione più aggiornata dal sito ufficiale: http://www.phplogcon.org/downloads.<br/>
Una volta terminata la configurazione dell'ambiente LAMP si può procedere all'installazione di phpLogCon. Si scarichi innanzitutto la versione più aggiornata dal sito ufficiale: http://www.phplogcon.org/downloads.<br/>
Quindi si scompatti l'archivio appena scaricato e si copi la directory <tt>src</tt> all'interno del nostro server Apache:
Quindi si scompatti l'archivio appena scaricato e si copi la directory <code>src</code> all'interno del nostro server Apache:
<pre>
<pre>
# tar -xzvf phplogcon-2.3.11.tar.gz
# tar -xzvf phplogcon-2.3.11.tar.gz
Riga 62: Riga 62:
groups www-data
groups www-data
</pre>
</pre>
Ora copiamo i due file  <tt>configure.sh</tt> e <tt>secure.sh</tt> dalla directory <tt>contrib</tt> all'interno del nostro server Apache, rendiamoli eseguibili e lanciamo gli script:
Ora copiamo i due file  <code>configure.sh</code> e <code>secure.sh</code> dalla directory <code>contrib</code> all'interno del nostro server Apache, rendiamoli eseguibili e lanciamo gli script:
<pre>
<pre>
# cd
# cd
Riga 71: Riga 71:
# ./configure.sh
# ./configure.sh
</pre>
</pre>
Infine colleghiamoci alla pagina <tt>http://127.0.0.1/phplogcon</tt> e completiamo il processo di installazione e configurazione di phplogcon.<br/>
Infine colleghiamoci alla pagina <code>http://127.0.0.1/phplogcon</code> e completiamo il processo di installazione e configurazione di phplogcon.<br/>
Ora apriamo con un editor il file <code>'''/etc/logrotate.conf'''</code> e cerchiamo la voce <tt>create</tt>, modificandola in:
Ora apriamo con un editor il file <code>'''/etc/logrotate.conf'''</code> e cerchiamo la voce <code>create</code>, modificandola in:
<pre>
<pre>
create 640 root logadmin
create 640 root logadmin
Riga 88: Riga 88:
}
}
</pre>
</pre>
In questo modo la prossima volta che logrotate verrà eseguito i log diventeranno leggibili di default anche per il nostro webserver. Per visualizzarli basterà collegarsi alla pagina <tt>http://127.0.0.1/phplogcon</tt>.
In questo modo la prossima volta che logrotate verrà eseguito i log diventeranno leggibili di default anche per il nostro webserver. Per visualizzarli basterà collegarsi alla pagina <code>http://127.0.0.1/phplogcon</code>.
=Installazione di Splunk=
=Installazione di Splunk=
Un'interfaccia alternativa molto potente è Splunk (http://www.splunk.com/).<br>
Un'interfaccia alternativa molto potente è Splunk (http://www.splunk.com/).<br>
Riga 98: Riga 98:
dpkg -i splunk_package_name.deb
dpkg -i splunk_package_name.deb
</pre>
</pre>
dove <tt>package_name</tt> corrisponde al numero di versione del pacchetto scaricato.<br>
dove <code>package_name</code> corrisponde al numero di versione del pacchetto scaricato.<br>
Per avviare Splunk per la prima volta diamo il comando:
Per avviare Splunk per la prima volta diamo il comando:
<pre>
<pre>
/opt/splunk/bin/splunk start --accept-license
/opt/splunk/bin/splunk start --accept-license
</pre>
</pre>
(potete trovare il testo della licenza qui: <tt>/opt/splunk/license-eula.txt</tt>).<br>
(potete trovare il testo della licenza qui: <code>/opt/splunk/license-eula.txt</code>).<br>
Una volta terminata l'installazione dirigiamoci all'interfaccia web di Splunk:
Una volta terminata l'installazione dirigiamoci all'interfaccia web di Splunk:
<pre>
<pre>
Riga 124: Riga 124:
Tra le direttive più utili:
Tra le direttive più utili:
* '''Criteri di rotazione'''
* '''Criteri di rotazione'''
** <tt>daily</tt>: rotazione su base giornaliera;
** <code>daily</code>: rotazione su base giornaliera;
** <tt>weekly</tt>: rotazione su base settimanale;
** <code>weekly</code>: rotazione su base settimanale;
** <tt>monthly</tt>: rotazione su base mensile;
** <code>monthly</code>: rotazione su base mensile;
** <tt>size <dimensione></tt>: rotazione in base alla dimensione;
** <code>size <dimensione></code>: rotazione in base alla dimensione;
** <tt>notifempty</tt>: non esegue la rotazione se il file è vuoto;
** <code>notifempty</code>: non esegue la rotazione se il file è vuoto;
** <tt>rotate nn</tt>: conserva i file di log per <tt>nn</tt> rotazioni;
** <code>rotate nn</code>: conserva i file di log per <code>nn</code> rotazioni;
* '''Compressione'''
* '''Compressione'''
** <tt>compress</tt>: una volta archiviato il file di log, viene compresso tramite gzip;
** <code>compress</code>: una volta archiviato il file di log, viene compresso tramite gzip;
** <tt>compresscmd</tt>: indica il programma da utilizzare al posto di gzip;
** <code>compresscmd</code>: indica il programma da utilizzare al posto di gzip;
* '''Gestione File'''
* '''Gestione File'''
** <tt>create  <mode> <owner> <group></tt>: immediatamente dopo la rotazione viene creato un nuovo file con il nome identico al precedente. È possibile specificare, modalità di accesso, proprietario e gruppo;
** <code>create  <mode> <owner> <group></code>: immediatamente dopo la rotazione viene creato un nuovo file con il nome identico al precedente. È possibile specificare, modalità di accesso, proprietario e gruppo;
** <tt>copy</tt>: crea una copia del file di log e non modifica l'originale che non viene mai rimosso;
** <code>copy</code>: crea una copia del file di log e non modifica l'originale che non viene mai rimosso;
** <tt>copytruncate</tt>: utilizzata nel caso in cui non sia possibile chiudere il file di log. Viene archiviata parte del file di log mentre ne viene eseguita una copia;
** <code>copytruncate</code>: utilizzata nel caso in cui non sia possibile chiudere il file di log. Viene archiviata parte del file di log mentre ne viene eseguita una copia;
** <tt>olddir <directory></tt>: i file di log vengono spostati nella directory indicata prima di eseguire la rotazione;
** <code>olddir <directory></code>: i file di log vengono spostati nella directory indicata prima di eseguire la rotazione;
* '''Configurazione'''
* '''Configurazione'''
** <tt>include <file o directory></tt>: legge il file oppure tutti i file della directory indicata ed applica le direttive incontrate all'interno di essi. È possibile trovare include <code>/etc/logrotate.d</code> in quanto alcuni pacchetti installano le proprie istruzioni in questa directory;
** <code>include <file o directory></code>: legge il file oppure tutti i file della directory indicata ed applica le direttive incontrate all'interno di essi. È possibile trovare include <code>/etc/logrotate.d</code> in quanto alcuni pacchetti installano le proprie istruzioni in questa directory;
* '''Operazioni Pre-log e Post-log'''
* '''Operazioni Pre-log e Post-log'''
** <tt>postrotate endscript</tt>: tramite questo blocco di direttive è possibile eseguire delle operazioni in seguito alla rotazione;   
** <code>postrotate endscript</code>: tramite questo blocco di direttive è possibile eseguire delle operazioni in seguito alla rotazione;   
** <tt>prerotate endscript</tt>: tramite questo blocco di direttive è possibile eseguire delle operazioni prima che avvenga la rotazione e solo se questa avrà luogo.
** <code>prerotate endscript</code>: tramite questo blocco di direttive è possibile eseguire delle operazioni prima che avvenga la rotazione e solo se questa avrà luogo.
A titolo di esempio possiamo osservare la directory del web server Apache2 su un sistema in cui logrotate è in funzione, <tt>/var/log/apache2</tt>
A titolo di esempio possiamo osservare la directory del web server Apache2 su un sistema in cui logrotate è in funzione, <code>/var/log/apache2</code>
<pre>
<pre>
root@test:~# ls -1 /var/log/apache2/
root@test:~# ls -1 /var/log/apache2/
Riga 161: Riga 161:
Si possono notare i file di log attualmente in uso (<code>'''access.log'''</code> e <code>'''error.log'''</code>), i file di log del giorno precedente (<code>'''access.log.1'''</code> e <code>'''error.log.1'''</code>) e i file dei giorni ancora precedenti, che di default vengono compressi e conservati per cinque settimane.
Si possono notare i file di log attualmente in uso (<code>'''access.log'''</code> e <code>'''error.log'''</code>), i file di log del giorno precedente (<code>'''access.log.1'''</code> e <code>'''error.log.1'''</code>) e i file dei giorni ancora precedenti, che di default vengono compressi e conservati per cinque settimane.
Logrotate può essere schedulato utilizzando <code><cron></code>. La directory <code>'''/etc/cron.daily'''</code> contiene infatti gli script che vengono eseguiti automaticamente ogni giorno dal sistema. Qui si può trovare lo script di logrotate. Ogni giorno questo script, al momento dell'esecuzione, esamina due cose:
Logrotate può essere schedulato utilizzando <code><cron></code>. La directory <code>'''/etc/cron.daily'''</code> contiene infatti gli script che vengono eseguiti automaticamente ogni giorno dal sistema. Qui si può trovare lo script di logrotate. Ogni giorno questo script, al momento dell'esecuzione, esamina due cose:
# il file di configurazione <tt>/etc/logrotate.conf</tt>  
# il file di configurazione <code>/etc/logrotate.conf</code>  
# la directory di configurazione <tt>/etc/logrotate.d</tt>
# la directory di configurazione <code>/etc/logrotate.d</code>
Questa directory contiene i file di configurzione per i servizi installati sul server. Per esempio sul server esaminato in precedenza troveremo il file <tt>/etc/logrotate.d/apache2</tt>.<br/>
Questa directory contiene i file di configurazione per i servizi installati sul server. Per esempio sul server esaminato in precedenza troveremo il file <code>/etc/logrotate.d/apache2</code>.<br/>
Un tipico file di configurazione di logrotate è simile a questo:
Un tipico file di configurazione di logrotate è simile a questo:
<pre>
<pre>
Riga 183: Riga 183:
</pre>
</pre>
Analizziamolo nel dettaglio:
Analizziamolo nel dettaglio:
# <tt>/var/log/apache2/*.log</tt>: indica i file che vengono interessati dal processo;
# <code>/var/log/apache2/*.log</code>: indica i file che vengono interessati dal processo;
# <tt>weekly</tt>: i file sono rotati ogni settimana. Alternativa: daily;
# <code>weekly</code>: i file sono rotati ogni settimana. Alternativa: <code>daily</code>;
# <tt>rotate nn</tt>: saranno conservati non più di nn file;
# <code>rotate nn</code>: saranno conservati non più di <code>nn</code> file;
# <tt>compress</tt>: i file saranno compressi con gzip. Alternativa: nocompress;
# <code>compress</code>: i file saranno compressi con gzip. Alternativa: <code>nocompress</code>;
# <tt>delaycompress</tt>: non comprime i log del giorno prima;
# <code>delaycompress</code>: non comprime i log del giorno prima;
# <tt>notifempty</tt>: non esegue la rotazione se il file è vuoto. Alternativa: ifempty;
# <code>notifempty</code>: non esegue la rotazione se il file è vuoto. Alternativa: <code>ifempty</code>;
# <tt>create xx user group</tt>: imposta proprietario, gruppo e permessi per i nuovi filescreati;
# <code>create xx user group</code>: imposta proprietario, gruppo e permessi per i nuovi filescreati;
# <tt>sharedscripts</tt>: esegue ogni script di prerotate o postrotate su ogni file. Alternativa: nosharedscripts;
# <code>sharedscripts</code>: esegue ogni script di prerotate o postrotate su ogni file. Alternativa: <code>nosharedscripts</code>;
# <tt>postrotate + endscript</tt>: ogni cosa tra queste due voci viene eseguita dopo il processo di rotazione. Alternativa: prerotate.
# <code>postrotate + endscript</code>: ogni cosa tra queste due voci viene eseguita dopo il processo di rotazione. Alternativa: <code>prerotate</code>.
Se avete necessità di conservare per più tempo i log ruotati potete aumentare il valore dell'opzione <tt>rotate</tt>, oppure crearvi uno script che vi faccia il backup dei vecchi log in un'altra directory (in questo modo non rischiate che la directory <tt>/var/log/</tt> cresca troppo in dimensione).
Se avete necessità di conservare per più tempo i log ruotati potete aumentare il valore dell'opzione <code>rotate</code>, oppure crearvi uno script che vi faccia il backup dei vecchi log in un'altra directory (in questo modo non rischiate che la directory <code>/var/log/</code> cresca troppo in dimensione).


=Programmi utili=
=Programmi utili=
Per gli amanti delle e-mail si segnala l'esistenza del pacchetto '''logwatch''', uno script in perl che ogni giorno raccoglie gli eventi dei log e li invia all'utente root del sistema (o all'utente specificato in <tt>/etc/aliases</tt>).
Per gli amanti delle e-mail si segnala l'esistenza del pacchetto '''logwatch''', uno script in perl che ogni giorno raccoglie gli eventi dei log e li invia all'utente root del sistema (o all'utente specificato in <code>/etc/aliases</code>).
<pre>
<pre>
# apt-get install logwatch
# apt-get install logwatch
</pre>
</pre>
Se desiderate ricevere le email di logwatch anche su un indirizzo di posta elettronico esterno al sistema da monitorare, modificate il file <tt>/etc/aliases</tt> come segue:
Se desiderate ricevere le email di logwatch anche su un indirizzo di posta elettronico esterno al sistema da monitorare, modificate il file <code>/etc/aliases</code> come segue:
<pre>
<pre>
vostro_utente: vostro_utente indirizzo_esterno@pippo.com
vostro_utente: vostro_utente indirizzo_esterno@pippo.com
Riga 218: Riga 218:
=Configurazione dei client della rete=
=Configurazione dei client della rete=
==Client Linux==
==Client Linux==
Per forwardare i log di una macchina linux verso un server Syslog possono essere usati sia syslog sia syslog-ng.
Per forwardare i log di una macchina Linux verso un server Syslog possono essere usati sia syslog sia syslog-ng.
===1 - Syslog===
===1 - Syslog===
Si apra il file <code>'''/etc/syslogd.conf'''</code>. La sintassi utilizzata in questo file è molto semplice:
Si apra il file <code>'''/etc/syslogd.conf'''</code>. La sintassi utilizzata in questo file è molto semplice:
Riga 229: Riga 229:
kern.alert @10.2.5.8  # Gli alert del kernel sono forwardati a 10.2.5.8
kern.alert @10.2.5.8  # Gli alert del kernel sono forwardati a 10.2.5.8
</pre>
</pre>
Ricordarsi di riavviare il demone affinchè prenda in considerazione le modifiche:
Ricordarsi di riavviare il demone affinché prenda in considerazione le modifiche:
<pre>
<pre>
# etc/init.d/sysklogd restart
# etc/init.d/sysklogd restart
Riga 276: Riga 276:
};
};


filter filter1 { level(notice, alert, errot) and facility(kern); };  
filter filter1 { level(notice, alert, error) and facility(kern); };  


destination d1 { tcp("10.15.61.1" port (54321)); };  
destination d1 { tcp("10.15.61.1" port (54321)); };  
Riga 287: Riga 287:
};  
};  
</pre>
</pre>
Affinchè tutto funzioni non dobbiamo dimenticarci di istruire il server syslog affinchè si ponga in ascolto anche sulla porta TCP specificata. Modifichiamo perciò il file di configurazione del server, <code>'''/etc/syslog-ng/syslog-ng.conf'''</code>:
Affinché tutto funzioni non dobbiamo dimenticarci di istruire il server syslog affinché si ponga in ascolto anche sulla porta TCP specificata. Modifichiamo perciò il file di configurazione del server, <code>'''/etc/syslog-ng/syslog-ng.conf'''</code>:
<pre>
<pre>
source s_all {
source s_all {
6 999

contributi