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

m
nessun oggetto della modifica
mNessun oggetto della modifica
 
(6 versioni intermedie di 4 utenti non mostrate)
Riga 1: Riga 1:
{{Versioni compatibili|Lenny|Squeeze}}
{{Versioni compatibili|ONLY|Lenny|Squeeze}}
== 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 8: Riga 8:


== Installazione di rsyslog ==
== Installazione di rsyslog ==
Il server syslog che prenderemo in considerazione sarà '''rsyslog'''. Pur non essendo installato di default su sistemi Debian, dove invece si può trovare syslogd, questo demone presenta diversi vantaggi:
Il server syslog che prenderemo in considerazione sarà '''rsyslog'''. È il syslogd di default su sistemi Debian a partire da "Lenny", questo demone presenta diversi vantaggi:
# Le connessioni possono essere stabilite via TCP al posto di UDP
# Le connessioni possono essere stabilite via TCP al posto di UDP
# 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:
 
Nelle versioni precedenti a "Lenny" è necessario installarlo con:
<pre>
<pre>
# apt-get install rsyslog
# apt-get install rsyslog
Riga 71: Riga 72:
514/tcp  open  shell
514/tcp  open  shell
3306/tcp  open  mysql
3306/tcp  open  mysql
</pre>
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>
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"
</pre>
Rendiamolo eseguibile e ricordiamoci di inserirlo nel crontab del server:
<pre>
# chmod 700 nome/dello/script
</pre>
</pre>


== 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 84: Riga 94:
# 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 131: Riga 141:
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 176: Riga 186:
stop)  echo "Stopping Splunk demon"
stop)  echo "Stopping Splunk demon"
         /opt/splunk/bin/splunk stop
         /opt/splunk/bin/splunk stop
 
        ;;
restart) echo "Non ancora implementato"
restart) echo "Non ancora implementato"
         ;;
         ;;
reload|force-reload) echo "Non ancora implementato"
reload|force-reload) echo "Non ancora implementato"
         ;;
         ;;
*)      echo "Usage: /etc/init.d/splunk {start|stop|restart|reload|force-reload$
*)      echo "Usage: /etc/init.d/splunk {start|stop|restart|reload|force-reload}"
         exit 2
         exit 2
         ;;
         ;;
Riga 194: Riga 204:


== 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 221: Riga 231:
** <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 239: Riga 249:
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 264: Riga 274:
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 285: Riga 295:
* ''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 298: Riga 308:
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 306: Riga 316:
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>
=== Logcheck ===
Logcheck è un piccolo tool che aiuta a focalizzare automaticamente i problemi e le violazioni alla sicurezza nei propri file di log e spedisce i risultati via e-mail.<br/>
L'installazione è semplice:
<pre>
# apt-get install logcheck
</pre>
Il suo file di configurazione è <code>/etc/logcheck/logcheck.conf</code> che dovete modificare per cambiare quantomeno l'indirizzo di posta elettronica a cui spedire le analisi dei log.
=== Altri programmi utili ===
=== Altri programmi utili ===
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 349: Riga 368:
filter(filter_name);
filter(filter_name);
destination(destination_name);
destination(destination_name);
};  
};
</pre>.
</pre>.
Vediamo alcuni esempi.
Vediamo alcuni esempi.
Riga 361: Riga 380:
};
};


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


log
log
Riga 367: Riga 386:
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 378: Riga 397:
};
};


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 387: Riga 406:
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 397: Riga 416:
udp();
udp();
tcp(port(54321));
tcp(port(54321));
};  
};
</pre>
</pre>
=== Client Windows ===
=== Client Windows ===
Riga 408: Riga 427:
# Snare Agent, scaricabile da http://www.intersectalliance.com/projects/SnareWindows/index.html
# Snare Agent, scaricabile da http://www.intersectalliance.com/projects/SnareWindows/index.html
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/>
 
: [[Utente:Ferdybassi|Ferdybassi]]
{{Autori
----
|Autore = [[Utente:Ferdybassi|Ferdybassi]]
}}
 
[[Categoria:Monitoraggio]]
[[Categoria:Monitoraggio]]
[[Categoria:Altri servizi di rete]]
[[Categoria:Altri servizi di rete]]
3 581

contributi