Una soluzione generale semplice ed efficace è utilizzare il logcheck .
sudo apt-get install logcheck
[edit /etc/logcheck/logcheck.conf to your liking]
logcheck esegue periodicamente la scansione di tutti i log in modo efficiente (iniziando da dove era stata interrotta l'ultima volta), filtra ciò che vede per eliminare qualsiasi cosa considerata normale e facoltativamente invia e-mail di avviso con tutto ciò che non corrisponde ai modelli normali / di routine.
L'idea principale è quello di guardare-out per l'aspetto di tutte le voci gravi nei file di log, tutti loro, per tutto il tempo, in modo da voi non dovete.
logcheck è altamente configurabile (man logcheck
). Puoi configurare tutto, incluso:
- frequenza dei controlli
- quali file di registro sono controllati
- ciò che è considerato normale vs no
- dove inviare via e-mail gli avvisi (eventi anomali)
e altro ancora I tuoi schemi ignore (normali / di routine) risiedono in più file in /etc/logcheck/ignore.d.* e puoi personalizzarli in base alle tue esigenze; principalmente potresti voler aggiungere i tuoi schemi da ignorare. Il pacchetto Ubuntu predefinito viene fornito con un ampio set di file con modelli di ignore per molti servizi già, quindi non c'è molto da aggiungere a meno che il tuo sistema non sia insolito in ciò che esegue. Esistono 3 set di profili di file ignorati preconfigurati: ignore.d.workstation , ignore.d.server e ignore.d.paranoid che è possibile selezionare.
L'idea principale dietro logcheck è che i vari servizi in esecuzione su un sistema registrano già eventi anomali. Ad esempio sshd o pam registrano già errori di autenticazione. Quindi i principali componenti mancanti sono:
- filtrando ciò che è normale
- Il servizio di allerta
Entrambi sono forniti da logcheck in un pacchetto conveniente. È possibile combinare il controllo del registro con qualsiasi altra registrazione. Ad esempio iptables può essere configurato per syslog qualsiasi tentativo di connessione di rete che non sia esplicitamente consentito aggiungendo le regole:
iptables -A input -j LOG
iptables -A input -j DROP
subito dopo tutte le regole di autorizzazione.
Trovo che logcheck sia molto più utile di logwatch (suggerito in altre risposte) perché è preconfezionato con un numero molto elevato di regole per ignorare ciò che è considerato attività normale. Il risultato è un rapporto segnale / rumore molto più elevato negli avvisi che invia. YMMV.
Un altro vantaggio di logcheck è che è ortogonale a qualsiasi servizio che registra, quindi non c'è duplicazione di funzioni. Ogni volta che aggiungi un nuovo servizio che utilizza syslog
per registrare eventi, anormali o meno, in qualsiasi file sotto di /var/log
te inizi a ricevere automaticamente avvisi per esso.
COME:
Poiché logcheck
già viene preconfigurato, due righe all'inizio di questa risposta coprono essenzialmente tutto ciò che serve per iniziare. Basta installarlo e andare sul file di configurazione principale:
/etc/logcheck/logcheck.conf
per cambiare il tuo indirizzo e-mail in modo da logcheck
ricevere avvisi via e- mail.
Ecco un riferimento amichevole andando oltre il secondo passo in modo più dettagliato . Poiché Ubuntu si basa su Debian, anche queste istruzioni dovrebbero funzionare su Ubuntu.
Ecco un altro buon riferimento .
Una volta installato, inizia il processo di miglioramento continuo. Nel corso del tempo, perfezionerai le tue regole per ignorare tutto ciò che già conosci e che ritieni non debba destare preoccupazione. Questo processo di perfezionamento è semplice come aggiungere righe di testo a un file nel tuo editor di testo preferito.
Ogni riga in un file ignore è un'espressione regolare estesa (vedere man 7 regex
), ma è possibile utilizzare stringhe semplici purché corrispondano alla riga di registro che si desidera ignorare. Basta ricordare che personaggi come *
, ?
, '+', []
, ()
sono speciali in un'espressione regolare, quindi se appaiono in realtà nelle linee di registro, si dovrebbe sfuggire loro con un backslash \
nella ignorare i file.
In altre parole: se ricevi un avviso che non desideri ricevere, osserva la riga di registro che ti è stata inviata per e-mail e aggiungi un modello che lo corrisponda, come una riga a qualsiasi file ignorato di tua scelta. Suggerisco di utilizzare
/etc/logcheck/ignore.d.<yourloglevel>/my-ignores
come file personale da ignorare. Dov'è <yourloglevel>
uno di paranoid
, server
o
workstation
((come hai già selezionato nel file di configurazione principale:) /etc/logcheck/logcheck.conf
. Guarda gli esempi in altri file ignorati per vedere come tenere conto del testo che cambia continuamente come ID processo o timestamp. Ci sono molti esempi esistenti da cui imparare.
Un ultimo consiglio: logcheck
viene fornito con una piccola utility utile logcheck-test
che è molto utile per testare nuove regole. man logcheck-test
per dettagli.