6 999
contributi
(Aggiunto template autori) |
S3v (discussione | contributi) 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. | 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 | 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 | # <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 | # <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 | 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 === |
contributi