3 581
contributi
m (ha spostato Configurare un server Syslog su Debian Etch a Configurare un server Syslog su Debian: La guida funziona anche con Lenny e Squeeze e il titolo era fuorviante.) |
m (spaziatura/box iniziale) |
||
(30 versioni intermedie di 6 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
{{ | {{Old|Se si sta utilizzando Debian 6 (Squeeze) vedere la guida: [[Configurare un server Syslog su Debian Squeeze]]}} | ||
__TOC__ | |||
== Introduzione == | == Introduzione == | ||
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/> | ||
Riga 42: | Riga 43: | ||
== Installazione di phpLogCon == | == Installazione di phpLogCon == | ||
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. | {{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.<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 52: | Riga 54: | ||
# 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 | # groupadd adm | ||
# usermod -a -G | # usermod -a -G adm www-data | ||
</pre> | </pre> | ||
Verifichiamo quindi la buona riuscita dei comandi: | Verifichiamo quindi la buona riuscita dei comandi: | ||
Riga 74: | Riga 76: | ||
Ora apriamo con un editor il file <code>'''/etc/logrotate.conf'''</code> e cerchiamo la voce <code>create</code>, 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 | create 640 root adm | ||
</pre> | </pre> | ||
Modifichiamo infine anche il file <code>'''/etc/logrotate.d/syslog-ng'''</code>, cercando la sezione relativa a syslog e modificandola come segue: | Modifichiamo infine anche il file <code>'''/etc/logrotate.d/syslog-ng'''</code>, cercando la sezione relativa a syslog e modificandola come segue: | ||
Riga 82: | Riga 84: | ||
daily | daily | ||
compress | compress | ||
create 640 root | create 640 root adm | ||
postrotate | postrotate | ||
/etc/init.d/syslog-ng reload >/dev/null | /etc/init.d/syslog-ng reload >/dev/null | ||
Riga 88: | Riga 90: | ||
} | } | ||
</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 == | |||
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/> | |||
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/> | |||
Quindi si scompatti l'archivio appena scaricato e si copi la directory <code>src</code> all'interno del nostro server Apache: | |||
<pre> | |||
# tar -xzvf loganalyzer-3.0.1.tar.gz | |||
# cd loganalyzer-3.0.1 | |||
# mv src /var/www/ | |||
# mv /var/www/src /var/www/loganalyzer | |||
</pre> | |||
Prima di continuare con l'installazione di LogAnalyzer occorre rendere leggibili a LogAnalyzer i files di log syslog.<br/> | |||
Creiamo innanzitutto un nuovo gruppo e aggiungiamo l'utente <code>www-data</code> a questo gruppo: | |||
<pre> | |||
# groupadd adm | |||
# usermod -a -G adm www-data | |||
</pre> | |||
Verifichiamo quindi la buona riuscita dei comandi: | |||
<pre> | |||
groups www-data | |||
</pre> | |||
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> | |||
# cd | |||
# mv loganalyzer-3.0.1/contrib/configure.sh /var/www/phplogcon | |||
# mv loganalyzer-3.0.1/contrib/secure.sh /var/www/phplogcon | |||
# cd /var/www/loganalyzer | |||
# chmod +x configure.sh secure.sh | |||
# ./configure.sh | |||
</pre> | |||
Inoltre dobbiamo configurare un nuovo database MySQL. Apriamo quindi l'interfaccia phpMyAdmin che abbiamo installato seguendo la guida apposita, facciamo login con le credenziali configurate e creiamo un nuovo database, chiamandolo <code>loganalyzer</code>.<br/> | |||
Infine colleghiamoci alla pagina <code>http://127.0.0.1/loganalyzer</code> e completiamo il processo di installazione e configurazione di loganalyzer. Quando arriviamo alla pagina di configurazione del supporto database inseriamo il nome del database che abbiamo appena creato (<code>loganalyzer</code> e il nome utente e la password del nostro utente MySQL).<br/> | |||
Ora apriamo con un editor il file <code>'''/etc/logrotate.conf'''</code> e cerchiamo la voce <code>create</code>, modificandola in: | |||
<pre> | |||
create 640 root adm | |||
</pre> | |||
Modifichiamo infine anche il file <code>'''/etc/logrotate.d/syslog-ng'''</code>, cercando la sezione relativa a syslog e modificandola come segue: | |||
<pre> | |||
/var/log/syslog { | |||
rotate 7 | |||
daily | |||
compress | |||
create 640 root adm | |||
postrotate | |||
/etc/init.d/syslog-ng reload >/dev/null | |||
endscript | |||
} | |||
</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/loganalyzer</code>. | |||
LogAnalyzer permette di configurare più sorgenti log, nel caso volessimo tener monitorati, oltre al file syslog, anche altri file di log. Per aggiungere sorgenti log è sufficiente aprire il file di configurazione: | |||
<pre> | |||
# nano /var/www/loganalyzer/config.php | |||
</pre> | |||
e spostarci alla fine del file. Lì troveremo configurata la prima sorgente log (Syslog) ma potremo aggiungerne altre. Ad esempio possiamo controllare gli accessi al nostro server creando la seguente sorgente: | |||
<pre> | |||
$CFG['DefaultSourceID'] = 'Source2'; | |||
$CFG['Sources']['Source2']['ID'] = 'Source2'; | |||
$CFG['Sources']['Source2']['Name'] = 'Auth Log Server'; | |||
$CFG['Sources']['Source2']['ViewID'] = 'AUTHLOG'; | |||
$CFG['Sources']['Source2']['SourceType'] = SOURCE_DISK; | |||
$CFG['Sources']['Source2']['LogLineType'] = 'auth.log'; | |||
$CFG['Sources']['Source2']['DiskFile'] = '/var/log/auth.log'; | |||
</pre> | |||
Non c'è limite alle sorgenti log che possono essere configurate. | |||
== 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> | ||
Per scaricare il pacchetto '''.deb''' che viene messo a disposizione (uno per architetture x86 e uno per architetture amd64) occorre effettuare la registrazione gratuita sul sito. Splunk non è opensource, ma è disponibile una versione Free, la cui limitazione è che può processare solo 500 MB di Log al giorno. Durante la configurazione di Splunk sarà possibile scegliere se utilizzare una versione Enterprise di prova o se utilizzare la versione Free.<br> | Per scaricare il pacchetto '''.deb''' che viene messo a disposizione (uno per architetture x86 e uno per architetture amd64) occorre effettuare la registrazione gratuita sul sito. Splunk '''non è opensource''', ma è disponibile una versione Free, la cui limitazione è che può processare solo 500 MB di Log al giorno. Durante la configurazione di Splunk sarà possibile scegliere se utilizzare una versione Enterprise di prova o se utilizzare la versione Free.<br> | ||
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 160: | Riga 229: | ||
</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 184: | Riga 253: | ||
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 195: | Riga 264: | ||
== 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 205: | Riga 274: | ||
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> | ||
Se invece amate avere sott'occhio i log in un terminale, potreste trovare utile il pacchetto '''ccze''', che altro non è che un coloratore di log molto comodo. Per installarlo: | Se invece amate avere sott'occhio i log in un terminale, potreste trovare utile il pacchetto '''ccze''', che altro non è che un coloratore di log molto comodo. Per installarlo: | ||
Riga 248: | Riga 317: | ||
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 267: | Riga 336: | ||
}; | }; | ||
</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 287: | Riga 356: | ||
}; | }; | ||
</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 306: | Riga 376: | ||
# 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. | ||
{{Autori | |||
|Autore = [[Utente:Ferdybassi|Ferdybassi]] | |||
}} | |||
contributi