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

m
nessun oggetto della modifica
(Aggiunto template autori)
mNessun oggetto della modifica
Riga 12: Riga 12:
# I log tra host rsyslog possono essere inviati crittati
# I log tra host rsyslog possono essere inviati crittati
# I log possono essere filtrati in base alla criticità del loro contenuto
# I log possono essere filtrati in base alla criticità del loro contenuto
# Il demone stesso è altamente personalizzabile
# Il [[demone]] stesso è altamente personalizzabile
Procediamo quindi alla sua installazione:
Procediamo quindi alla sua installazione:
<pre>
<pre>
Riga 72: Riga 72:
3306/tcp  open  mysql
3306/tcp  open  mysql
</pre>
</pre>
Il database MySQL Syslog creato in precedenza non ha nessun meccanismo per la cancellazione o la rotazione dei log registrati. E' possibile utilizzare uno script come il seguente, da mettere nel crontab, per cancellare tutti i log più vecchi di sei mesi:
Il database MySQL Syslog creato in precedenza non ha nessun meccanismo per la cancellazione o la rotazione dei log registrati. È possibile utilizzare uno [[script]] come il seguente, da mettere nel [[crontab]], per cancellare tutti i log più vecchi di sei mesi:
<pre>
<pre>
mysql -h 127.0.0.1 -uroot -pPassword Syslog -e "delete from SystemEvents where ReceivedAt < date_sub(now(), interval 6 month)"
mysql -h 127.0.0.1 -uroot -pPassword Syslog -e "delete from SystemEvents where ReceivedAt < date_sub(now(), interval 6 month)"
mysql -h 127.0.0.1 -uroot -pPassword Syslog -e "optimize table SystemEvents"  
mysql -h 127.0.0.1 -uroot -pPassword Syslog -e "optimize table SystemEvents"
</pre>
</pre>
Rendiamolo eseguibile e ricordiamoci di inserirlo nel crontab del server:
Rendiamolo eseguibile e ricordiamoci di inserirlo nel crontab del server:
Riga 83: Riga 83:


== Installazione di LogAnalyzer 3.x ==
== Installazione di LogAnalyzer 3.x ==
Il successore di pgpLogCon si chiama Adiscon LogAnalyzer e, come il suo predecessore, è scritto in PHP ed è liberamente scaricabile dal sito del progetto:  
Il successore di pgpLogCon si chiama Adiscon LogAnalyzer e, come il suo predecessore, è scritto in PHP ed è liberamente scaricabile dal sito del progetto:
http://loganalyzer.adiscon.com/ .<br/>
http://loganalyzer.adiscon.com/ .<br/>
La sua installazione procede essenzialmente in maniera identica a quella di phpLogCon, ma in questo paragrafo esamineremo anche l'utilizzo di un database MySQL di appoggio. Si scarichi innanzitutto la versione più aggiornata dal sito ufficiale: http://www.loganalyzer.adiscon.com/downloads.<br/>
La sua installazione procede essenzialmente in maniera identica a quella di phpLogCon, ma in questo paragrafo esamineremo anche l'utilizzo di un database MySQL di appoggio. Si scarichi innanzitutto la versione più aggiornata dal sito ufficiale: http://www.loganalyzer.adiscon.com/downloads.<br/>
Riga 93: Riga 93:
# mv /var/www/src /var/www/loganalyzer
# mv /var/www/src /var/www/loganalyzer
</pre>
</pre>
Prima di continuare con l'installazione di LogAnalyzer occorre creare un database MySQL dove il software registrerà i propri dati di configurazione; possiamo crearlo sia tramite PHPMyAdmin sia tramite la shell <code>mysql></code>. Nel corso della guida supporremo di aver creato un database con queste caratteristiche:
Prima di continuare con l'installazione di LogAnalyzer occorre creare un database MySQL dove il software registrerà i propri dati di configurazione; possiamo crearlo sia tramite PHPMyAdmin sia tramite la [[shell]] <code>mysql></code>. Nel corso della guida supporremo di aver creato un database con queste caratteristiche:
* Nome database: ''loganalyzer''
* Nome database: ''loganalyzer''
* Nome utente database: ''loganalyzer''
* Nome utente database: ''loganalyzer''
Riga 140: Riga 140:
Per installare Splunk, dopo aver scaricato il pacchetto .deb per la nostra architettura spostiamoci nella directory di download e diamo i comandi:
Per installare Splunk, dopo aver scaricato il pacchetto .deb per la nostra architettura spostiamoci nella directory di download e diamo i comandi:
<pre>
<pre>
apt-get update
# apt-get update
apt-get install libstdc++6
# apt-get install libstdc++6
dpkg -i splunk_package_name.deb
# dpkg -i splunk_package_name.deb
</pre>
</pre>
dove <code>package_name</code> 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: <code>/opt/splunk/license-eula.txt</code>).<br>
(potete trovare il testo della licenza qui: <code>/opt/splunk/license-eula.txt</code>).<br>
Riga 203: Riga 203:


== Configurazione di logrotate ==
== Configurazione di logrotate ==
L'utility '''logrotate''' è pensata per semplificare l'amministrazione dei file di log. Logrotate permette la rotazione automatica, la compressione, l'eliminazione e l'invio per mail dei file di log; può inoltre essere impostato per l'esecuzione giornaliera, settimanale, mensile o quando i log raggiungono una certa dimensione predefinita.<br/>
L'utility '''logrotate''' è pensata per semplificare l'amministrazione dei file di log. [[Logrotate]] permette la rotazione automatica, la compressione, l'eliminazione e l'invio per mail dei file di log; può inoltre essere impostato per l'esecuzione giornaliera, settimanale, mensile o quando i log raggiungono una certa dimensione predefinita.<br/>
Per installare logrotate su Debian:
Per installare logrotate su Debian:
<pre>
<pre>
Riga 230: Riga 230:
** <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;
** <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'''
** <code>postrotate endscript</code>: 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;  
** <code>prerotate endscript</code>: 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, <code>/var/log/apache2</code>
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>
Riga 248: Riga 248:
error.log.5.gz
error.log.5.gz
</pre>
</pre>
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.<br/>
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 [[Cron]]. 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 <code>/etc/logrotate.conf</code>  
# il file di configurazione <code>/etc/logrotate.conf</code>
# la directory di configurazione <code>/etc/logrotate.d</code>
# la directory di configurazione <code>/etc/logrotate.d</code>
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/>
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/>
Riga 273: Riga 273:
Analizziamolo nel dettaglio:
Analizziamolo nel dettaglio:
# <code>/var/log/apache2/*.log</code>: indica i file che vengono interessati dal processo;
# <code>/var/log/apache2/*.log</code>: indica i file che vengono interessati dal processo;
# <code>weekly</code>: i file sono rotati ogni settimana. Alternativa: <code>daily</code>;
# <code>weekly</code>: i file sono ruotati ogni settimana. Alternativa: <code>daily</code>;
# <code>rotate nn</code>: saranno conservati non più di <code>nn</code> file;
# <code>rotate nn</code>: saranno conservati non più di <code>nn</code> file;
# <code>compress</code>: i file saranno compressi con gzip. Alternativa: <code>nocompress</code>;
# <code>compress</code>: i file saranno compressi con gzip. Alternativa: <code>nocompress</code>;
# <code>delaycompress</code>: non comprime i log del giorno prima;
# <code>delaycompress</code>: non comprime i log del giorno prima;
# <code>notifempty</code>: non esegue la rotazione se il file è vuoto. Alternativa: <code>ifempty</code>;
# <code>notifempty</code>: non esegue la rotazione se il file è vuoto. Alternativa: <code>ifempty</code>;
# <code>create xx user group</code>: imposta proprietario, gruppo e permessi per i nuovi filescreati;
# <code>create xx user group</code>: imposta proprietario, gruppo e permessi per i nuovi file creati;
# <code>sharedscripts</code>: esegue ogni script di prerotate o postrotate su ogni file. Alternativa: <code>nosharedscripts</code>;
# <code>sharedscripts</code>: esegue ogni script di prerotate o postrotate su ogni file. Alternativa: <code>nosharedscripts</code>;
# <code>postrotate + endscript</code>: ogni cosa tra queste due voci viene eseguita dopo il processo di rotazione. Alternativa: <code>prerotate</code>.
# <code>postrotate + endscript</code>: ogni cosa tra queste due voci viene eseguita dopo il processo di rotazione. Alternativa: <code>prerotate</code>.
Riga 294: Riga 294:
* ''Print = No'' Se settato a Yes, l'output di logwatch viene visualizzato a schermo invece di essere inviato via mail
* ''Print = No'' Se settato a Yes, l'output di logwatch viene visualizzato a schermo invece di essere inviato via mail
* ''# Save = /tmp/logwatch'' Se impostato, l'output viene salvato sul file indicato invece di essere inviato via mail
* ''# Save = /tmp/logwatch'' Se impostato, l'output viene salvato sul file indicato invece di essere inviato via mail
* ''# Archives = Yes'' Specifica se cercare anche nei file di log archiviati (anche gzippati) come /var/log/messages.1 o /var/log/messages.1.gz
* ''# Archives = Yes'' Specifica se cercare anche nei file di log archiviati (anche gzippati) come <code>/var/log/messages.1</code> o <code>/var/log/messages.1.gz</code>
* ''Range = yesterday'' Indica su quale periodo fare l'analisi dei log: "All" analizza tutti i log (in questo caso si consiglia di impostare "Archives = Yes", "Yesterday" si riferisce ai log del giorno prima (utile quando si crontabba un esecuzione notturna), "Today" si riferisce alle righe di log relative al giorno corrente.
* ''Range = yesterday'' Indica su quale periodo fare l'analisi dei log: "All" analizza tutti i log (in questo caso si consiglia di impostare "Archives = Yes", "Yesterday" si riferisce ai log del giorno prima (utile quando si crontabba un'esecuzione notturna), "Today" si riferisce alle righe di log relative al giorno corrente.
* ''Detail = Low'' Livello di dettaglio dei report. Può essere "Low", "Med", "High"  
* ''Detail = Low'' Livello di dettaglio dei report. Può essere "Low", "Med", "High"
* ''Service = All'' Definisce per quali servizi verificare i log. Può essere "All" o uno o più servizi, da scrivere su più righe, come "pam_pwdb" e "ftpd-messages"
* ''Service = All'' Definisce per quali servizi verificare i log. Può essere "All" o uno o più servizi, da scrivere su più righe, come "pam_pwdb" e "ftpd-messages"
* ''# LogFile = messages'' Specifica un singolo file di log da analizzare. Se "Service = All" vengono comunque analizzati tutti i log
* ''# LogFile = messages'' Specifica un singolo file di log da analizzare. Se "Service = All" vengono comunque analizzati tutti i log
Riga 307: Riga 307:
logwatch --save logwatch.txt --range Today
logwatch --save logwatch.txt --range Today
</pre>
</pre>
Salva sul file logwatch.txt (''--save logwatch.txt'') l'output relativo alla giornata corrente (''--range Today''), usando per gli altri paramentri le impostazioni definite nel file di configurazione.
Salva sul file <code>logwatch.txt</code> (''--save logwatch.txt'') l'output relativo alla giornata corrente (''--range Today''), usando per gli altri parametri le impostazioni definite nel file di configurazione.
<br/>
<br/>
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:
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:
Riga 315: Riga 315:
Non dimenticate, alla fine delle modifiche, di lanciare il comando:
Non dimenticate, alla fine delle modifiche, di lanciare il comando:
<pre>
<pre>
newaliases
# newaliases
</pre>
</pre>


Riga 367: Riga 367:
filter(filter_name);
filter(filter_name);
destination(destination_name);
destination(destination_name);
};  
};
</pre>.
</pre>.
Vediamo alcuni esempi.
Vediamo alcuni esempi.
Riga 379: Riga 379:
};
};


destination d1 { udp("10.13.44.44"); };  
destination d1 { udp("10.13.44.44"); };


log
log
Riga 385: Riga 385:
source(s_all);
source(s_all);
destination(d1);
destination(d1);
};  
};
</pre>
</pre>
# Viene utilizzato un filtro per inviare al syslog server solo i messaggi di livello '''alert''' e '''error''' generati da '''kernel facility'''. Come si può notare, per l'invio dei log viene utilizzato questa volta il protocollo TCP:
# Viene utilizzato un filtro per inviare al syslog server solo i messaggi di livello '''alert''' e '''error''' generati da '''kernel facility'''. Come si può notare, per l'invio dei log viene utilizzato questa volta il protocollo TCP:
Riga 396: Riga 396:
};
};


filter filter1 { level(notice, alert, error) 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)); };


log
log
Riga 405: Riga 405:
filter(filter1);
filter(filter1);
destination(d1);
destination(d1);
};  
};
</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>:
Riga 415: Riga 415:
udp();
udp();
tcp(port(54321));
tcp(port(54321));
};  
};
</pre>
</pre>
=== Client Windows ===
=== Client Windows ===
6 999

contributi