6 999
contributi
S3v (discussione | contributi) m (Modifiche minori) |
|||
Riga 3: | Riga 3: | ||
In una serverfarm, ma anche in una piccola rete casalinga, può risultare molto utile riunire i log di tutte le macchine in un unico posto. Si possono in questo modo applicare funzioni di analisi, ricerca e statistica che, in un unico intervento, restituiranno lo stato di tutte le macchine della rete, e sarà inoltre possibile configurare un unico strumento per inviare messaggi di alert quando lo stato di una qualsiasi delle macchine monitorate subisce un'alterazione potenzialmente pericolosa.<br/> | In una serverfarm, ma anche in una piccola rete casalinga, può risultare molto utile riunire i log di tutte le macchine in un unico posto. Si possono in questo modo applicare funzioni di analisi, ricerca e statistica che, in un unico intervento, restituiranno lo stato di tutte le macchine della rete, e sarà inoltre possibile configurare un unico strumento per inviare messaggi di alert quando lo stato di una qualsiasi delle macchine monitorate subisce un'alterazione potenzialmente pericolosa.<br/> | ||
Debian, come è lecito aspettarsi, mette a disposizione degli ottimi strumenti per creare un server di log centralizzato. | Debian, come è lecito aspettarsi, mette a disposizione degli ottimi strumenti per creare un server di log centralizzato. | ||
Se si sta utilizzando Debian "Squeeze" vedere la guida: [[Configurare un server Syslog su Debian Squeeze]] | |||
== Installazione di Syslog-ng == | == Installazione di Syslog-ng == | ||
Riga 43: | Riga 45: | ||
== Installazione di phpLogCon == | == Installazione di phpLogCon == | ||
{{Box | Nota |phpLogCon ha attualmente cambiato nome in LogAnalyzer. Il nuovo software è trattato nel capitolo successivo}} | {{Box | Nota |phpLogCon ha attualmente cambiato nome in LogAnalyzer. Il nuovo software è trattato nel capitolo successivo}} | ||
Per facilitare la lettura e la gestione dei log è uso comune ricorrere a interfacce grafiche. Su server senza l'ambiente grafico X installato potrebbe essere comodo ricorrere a un'interfaccia scritta in PHP. La scelta in questa guida è caduta su '''phpLogCon''' (http://www.phplogcon.org/), che a mio avviso rappresenta un ottimo compromesso tra funzionalità e facilità di installazione/gestione. | Per facilitare la lettura e la gestione dei log è uso comune ricorrere a interfacce grafiche. Su server senza l'ambiente grafico X installato potrebbe essere comodo ricorrere a un'interfaccia scritta in PHP. La scelta in questa guida è caduta su '''phpLogCon''' (http://www.phplogcon.org/), che a mio avviso rappresenta un ottimo compromesso tra funzionalità e facilità di installazione/gestione.<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/> | 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/> | ||
Riga 53: | Riga 55: | ||
# mv /var/www/src /var/www/phplogcon | # mv /var/www/src /var/www/phplogcon | ||
</pre> | </pre> | ||
Prima di continuare con l'installazione di phpLogCon occorre rendere rendere leggibili a phpLogCon i files di log syslog. | Prima di continuare con l'installazione di phpLogCon occorre rendere rendere leggibili a phpLogCon i files di log syslog.<br/> | ||
Creiamo innanzitutto un nuovo gruppo e aggiungiamo l'utente www-data a questo gruppo: | Creiamo innanzitutto un nuovo gruppo e aggiungiamo l'utente <code>www-data</code> a questo gruppo: | ||
<pre> | <pre> | ||
# groupadd adm | # groupadd adm | ||
Riga 89: | Riga 91: | ||
} | } | ||
</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 <code>http://127.0.0.1/phplogcon</code>. | 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 LogAnalyzer 3.x == | == Installazione di LogAnalyzer 3.x == | ||
Il successore di | Il successore di phpLogCon 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. Prima di installare LogAnalyzer è necessario installare e configurare un ambiente LAMP, seguendo ad esempio le indicazioni riportare in questa guida: [[LAMP: Linux, Apache, MySQL e PHP]].<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. Prima di installare LogAnalyzer è 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 LogAnalyzer. Si scarichi innanzitutto la versione più aggiornata dal sito ufficiale: http://www.loganalyzer.adiscon.com/downloads.<br/> | Una volta terminata la configurazione dell'ambiente LAMP si può procedere all'installazione di LogAnalyzer. Si scarichi innanzitutto la versione più aggiornata dal sito ufficiale: http://www.loganalyzer.adiscon.com/downloads.<br/> | ||
Riga 103: | Riga 104: | ||
# 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 rendere rendere leggibili a LogAnalyzer i files di log syslog. | Prima di continuare con l'installazione di LogAnalyzer occorre rendere rendere leggibili a LogAnalyzer i files di log syslog.<br/> | ||
Creiamo innanzitutto un nuovo gruppo e aggiungiamo l'utente www-data a questo gruppo: | Creiamo innanzitutto un nuovo gruppo e aggiungiamo l'utente <code>www-data</code> a questo gruppo: | ||
<pre> | <pre> | ||
# groupadd adm | # groupadd adm | ||
Riga 163: | Riga 164: | ||
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> | ||
Riga 229: | Riga 230: | ||
</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. | ||
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> | ||
Riga 253: | Riga 254: | ||
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 264: | Riga 265: | ||
== Programmi utili == | == Programmi utili == | ||
Per gli amanti delle e-mail si segnala l'esistenza del pacchetto '''logwatch''', uno script in | 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 | ||
Riga 317: | Riga 318: | ||
destination(destination_name); | destination(destination_name); | ||
}; | }; | ||
</pre> | </pre> | ||
Vediamo alcuni esempi. | Vediamo alcuni esempi. | ||
* Tutti i log sono inviati a un server syslog all'indirizzo 10.13.44.44: | |||
<pre> | <pre> | ||
source s_all { | source s_all { | ||
Riga 336: | Riga 337: | ||
}; | }; | ||
</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: | |||
<pre> | <pre> | ||
source s_all { | source s_all { | ||
Riga 356: | Riga 357: | ||
}; | }; | ||
</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.<br/> | ||
Modifichiamo perciò il file di configurazione del server, <code>'''/etc/syslog-ng/syslog-ng.conf'''</code>: | |||
<pre> | <pre> | ||
source s_all { | source s_all { | ||
Riga 375: | Riga 377: | ||
# Snare Agent, scaricabile da http://www.intersectalliance.com/projects/SnareWindows/index.html | # Snare Agent, scaricabile da http://www.intersectalliance.com/projects/SnareWindows/index.html | ||
# NTSyslog, scaricabile da http://ntsyslog.sourceforge.net/ | # NTSyslog, scaricabile da http://ntsyslog.sourceforge.net/ | ||
Entrambi i tool sono facilmente configurabili. | Entrambi i tool sono facilmente configurabili.<br/> | ||
Consiglio anche di aumentare la dimensione massima dei file di log di Windows, di default troppo bassa, e di agire su '''Criteri di Protezione Locali''' per abilitare un criterio di auditing un po' più efficace di quello attivo nella configurazione di default. | Consiglio anche di aumentare la dimensione massima dei file di log di Windows, di default troppo bassa, e di agire su '''Criteri di Protezione Locali''' per abilitare un criterio di auditing un po' più efficace di quello attivo nella configurazione di default. | ||
<br/><br/> | <br/><br/> |
contributi