Nel mio ultimo post abbiamo installato Logwatch così come OSSEC. E 'giunto il momento di ottenere Logwatch e OSSEC giocare insieme nella stessa sandbox. In questo post parlerò come raggiungere Logwatch di riassumere le informazioni che vengono generate da OSSEC.
Opzioni di distribuzione
Abbiamo due strade che possiamo seguire per impostare questa funzione:
- Hanno Logwatch analizzare i log OSSEC direttamente.
- Hanno OSSEC inviare le proprie segnalazioni a un server Syslog tipo, quindi eseguire Logwatch sul server Syslog.
Il vantaggio per l'opzione # 1 è che abbiamo bisogno di un solo sistema. Logwatch verrà eseguito sul sistema che ospita il server OSSEC. Il problema che stiamo andando a correre in quanto coinvolge il file OSSEC avviso. Voci di registro non vengono normalizzati. Ciò significa che il formato può cambiare da ingresso ingresso, e può anche distribuite su più righe. Sta andando essere un vero incubo per creare uno script Logwatch che filtrerà e sintetizzare le informazioni di allerta.
Se andiamo con opzione # 2, si richiederà un altro box di agire come i nostri server di registrazione centralizzata. Al fine di avere il server OSSEC accettare voci di registro da non-agente, deve ascoltare il UDP/514. Questa è la stessa porta utilizzata da un server di logging centralizzato, e non è possibile avere due applicazioni condividono la stessa porta (tranne che con Windows, ma l'accesso socket è molto disordinato). Sul lato positivo, le voci di allarme avranno normalizzato quando vengono trasmessi al server Syslog per la creazione di uno script di sintesi Logwatch sarà molto più facile. Inoltre, Logwatch sa già sui file Syslog standard, quindi dovremo lavorare di personalizzazione meno da fare.
Infine, ho accennato in un precedente post che OSSEC non è progettato per essere una SIM. Questo è perché non registrare tutto, solo gli eventi che generano un avviso. Quindi siamo probabilmente vorrà un server centralizzato in ogni caso, e ha senso farlo memorizzare le informazioni che vengono generate da OSSEC.
Quindi, se suona come io vi guida verso la scelta # 2, si è assolutamente corretto. Detto questo, io sto in realtà andando a coprire l'opzione # 1 in quanto è una configurazione molto più complesso.
Dealing With Date / Time Stamps
Date un'occhiata al file di log principale OSSEC e si dovrebbe vedere simile al seguente:
[Root @ fubar log] # tail -3 / var / OSSEC / log / ossec.log
2010/02/18 00:32:05 OSSEC-rootcheck: INFO: Fine scansione rootcheck.
2010/02/18 14:27:06 OSSEC-syscheckd: INFO: Starting syscheck scansione.
2010/02/18 14:39:21 OSSEC-syscheckd: INFO: Fine syscheck scansione.
Notare il modo in cui viene formattato la data / ora. Questo è diverso dalla maggior parte delle applicazioni, quindi la prima cosa avremo bisogno di fare è dire Logwatch come trattare con questo formato. Avremo bisogno di creare uno script che possiamo chiamare in caso di necessità, che comprende il formato sopra indicato.
Avviare muovendo nella directory condivisa script:
cd / usr / share / logwatch / scripts / shared
Utilizzando il vostro editor preferito, creare un file denominato "applylongdate":
vi applylongdate
Ecco che cosa avete bisogno all'interno di quel file. Sentitevi liberi di copia / incolla da questa pagina:
uso Logwatch ': date';
my $ debug = $ ENV {'LOGWATCH_DEBUG'} | | 0;
$ SearchDate = TimeFilter ('% Y /% m /% d% H:% M:% S');
if ($ debug> 5) {
print STDERR "DEBUG: ApplyLongDate Dentro ... \ n";
print "DEBUG: In cerca di:" STDERR. $ SearchDate. "\ N";
}
while (defined ($ questa_riga <STDIN> =)) {
if ($ questa_riga = ~ m / ^ $ SearchDate / o) {
print $ questa_riga = ~ s / ^ .... \ / .. \ / .. ..:..:.. / /;
print $ questa_riga;
}
}
# Vi: shiftwidth = 3 = sintassi perl tabstop = 3 et
Una volta salvato il file, ora abbiamo bisogno di impostare le autorizzazioni appropriate:
chmod 755 applylongdate
Configurazione del file di log
Poi abbiamo bisogno di dire Logwatch in cui i file di log OSSEC si trovano. Ogni volta che si aggiungono nuovi file di log o creare nuovi servizi per il monitoraggio in Logwatch, è necessario posizionare le modifiche sotto la directory / etc / logwatch. Abbiamo intenzione di creare due file di configurazione. Il primo si occuperà messaggi OSSEC, e il secondo si occuperà avvisi OSSEC e cambiamenti risposta attiva.
Cominciamo con la creazione del file di configurazione per le principali file di log OSSEC:
cd / etc / logwatch / conf / logfiles
vi ossec.conf
Il contenuto del file deve essere il più seguito:
LogFile = / var / OSSEC / log / ossec.log
* ApplyLongDate =
È ora possibile salvare e uscire dal file. Successivamente, creeremo il file di configurazione dei file di registro rimanenti:
vi OSSEC-alert.conf
Il contenuto di questo file deve essere il più seguito:
LogFile = / var / OSSEC / log / active-responses.log
LogFile = / var / OSSEC / log / avvisi / alerts.log
LogFile = / var / OSSEC / log / firewall / firewall.log
Una volta completata, salvare ed uscire. I permessi di default dovrebbe essere accettabile per la nostra impostazione.
Configurazione dei servizi OSSEC
Successivamente, è necessario per definire i servizi OSSEC e identificare ciò che vogliamo usare come titolo quando i report vengono generati. Ecco come creare il primo file:
cd / etc / logwatch / conf / servizi
vi ossec.conf
Il contenuto di questo file è molto semplice:
Title = "OSSEC Messaggi"
LogFile = OSSEC
Una volta completato è possibile salvare e uscire. Abbiamo bisogno di creare un file di più in questa directory:
vi OSSEC-alert.conf
Il contenuto di questo file deve essere:
Title = "OSSEC avvisi"
LogFile = OSSEC-alert
Al termine, salvare e uscire come al solito.
L'analisi di voci
Quindi, abbiamo bisogno di dire Logwatch come formattare le voci di registro all'interno del report. Avremo bisogno di creare uno script di personalizzazione per ogni insieme di servizi. Stiamo per iniziare utilizzando uno script di test in dotazione Logwatch, solo per fare verificato che tutto funzioni.
Avviare muovendo nella directory appropriata:
cd / etc / logwatch / scripts / servizi
Usa il tuo editor preferito per creare il tuo primo script:
vi OSSEC
Il contenuto dello script deve essere il più seguito:
#! / Bin / bash
# Questo script come è bello che vi mostrerà le linee si
# Essere l'elaborazione e report. Si visualizzerà prima la
# Variabili d'ambiente standard e poi ci vuole STDIN e
# Fare un dump terzino destro fuori su STDOUT.
# Queste sono le variabili d'ambiente standard. È possibile definire
# Più nel file di configurazione di servizio (vedi sopra).
echo "Intervallo date: $ LOGWATCH_DATE_RANGE"
echo "Livello di dettaglio: $ LOGWATCH_DETAIL_LEVEL"
echo "Temp Dir: $ LOGWATCH_TEMP_DIR"
echo "Livello di debug: $ LOGWATCH_DEBUG"
# Ora prendete STDIN e discarica a STDOUT
gatto
Ora create il vostro secondo script:
vi OSSEC-alert
e includere il contenuto esattamente lo stesso:
#! / Bin / bash
# Questo script come è bello che vi mostrerà le linee si
# Essere l'elaborazione e report. Si visualizzerà prima la
# Variabili d'ambiente standard e poi ci vuole STDIN e
# Fare un dump terzino destro fuori su STDOUT.
# Queste sono le variabili d'ambiente standard. È possibile definire
# Più nel file di configurazione di servizio (vedi sopra).
echo "Intervallo date: $ LOGWATCH_DATE_RANGE"
echo "Livello di dettaglio: $ LOGWATCH_DETAIL_LEVEL"
echo "Temp Dir: $ LOGWATCH_TEMP_DIR"
echo "Livello di debug: $ LOGWATCH_DEBUG"
# Ora prendete STDIN e discarica a STDOUT
gatto
Infine, abbiamo bisogno di impostare le autorizzazioni appropriate:
chmod 755 OSSEC *
L'installazione di prova
Il modo più semplice per testare la nostra nuova configurazione è di lanciare il comando:
logwatch | less
Se si desidera solo per visualizzare le modifiche, è possibile eseguire una relazione su ogni servizio, uno alla volta:
logwatch servizio OSSEC | less
logwatch-service OSSEC-alert | less
Personalizzazione ulteriormente
Una volta arrivati tutto il lavoro di cui sopra, è possibile concentrarsi su come ottenere Logwatch di filtrare e sintetizzare le voci del registro. Logwatch è abbastanza flessibile, e si può personalizzare l'output nel modo desiderato. Una delle cose belle lo script di test è al di sopra che mostra esattamente quello che hai da lavorare. Così con un po 'di magia espressione regolare è possibile riassumere le voci nel modo che ritiene opportuno. Per alcune idee, controllare il file che si trovano sotto:
/ Usr / share / logwatch / scripts / servizi
Questi sono gli script di default fornito con sintesi Logwatch. In particolare, hanno uno sguardo al file "pam" e "sshd". Essi sono grandi esempi sia di una semplice e una complessa serie di filtri di sintesi.
Durante lo sviluppo script, prestare molta attenzione ai $ "variabile LOGWATCH_DETAIL_LEVEL. Questo vi permetterà di personalizzare il livello di uscita del rapporto a seconda di quanto verbosità l'utente sta cercando. Per esempio, mentre siete ancora nella directory sopra servizi, eseguire il seguente comando:
meno sshd
Quando la prima pagina del contenuto del file viene visualizzato, digitare:
/ Dettaglio <Inserisci key>
Il backslash ci permette di cercare il file una stringa di testo particolare. In questo caso siamo alla ricerca del "dettaglio" parola. Una volta premuto Invio la ricerca permette di saltare attraverso il file fino a che trova la prima istanza della stringa di testo. Sarà anche evidenziare la stringa di ricerca. Nella prima partita si nota che l'autore assegnato alla variabile "$ Detail" per essere lo stesso della variabile $ LOGWATCH_DETAIL_LEVEL ". Questo per risparmiare loro un po 'di digitazione.
Ora premete il tasto backslash ancora seguito dal tasto Invio. Questo saltare attraverso il file nella successiva istanza di "Detail". Si dovrebbe vedere:
if ($ Dettaglio> = 20) {
Gli utenti $ {$ user} {$ host}} {$ Metodo + +;
Else {}
if ($ host! ~ / $ IgnoreHost /) {
Gli utenti $ {$ user} {} {$ host "(tutti )"}++;
Nota l'autore fornisce ulteriori informazioni se il livello di dettaglio è impostato a 20 (a metà strada tra la bassa e media) o superiore. Continuare a saltare attraverso il file e vedrete altri esempi in cui l'autore sfruttato questa tecnica.
Ora pagina fino alla fine del file e dovreste vedere questa dichiarazione:
if (keys% OtherList) {
print "\ n ** ** Le voci senza pari \ n";
print "$ _: $ OtherList {$ _} tempo (s) \ n" foreach keys% OtherList;
}
Questa sezione è estremamente importante, in quanto è un ripostiglio finale. Pensate ad una politica del firewall per un momento. La maggior parte di noi di creare una regolamentazione definitiva che dice: "Se non ho specificamente permesso il traffico attraverso un modello, negarla". In altre parole, se succede qualcosa di inaspettato, è così che voglio che tu gestirlo.
La dichiarazione di cui sopra serve allo stesso scopo durante l'analisi del file di log. Tutte le precedenti "if" tentativo di corrispondere una specifica stringa di testo nella voce di registro al fine di formattarlo correttamente. Questa voce dice: "Se non hai trovato e stampato una voce specifica log ancora, stampare in una sezione intitolata" Voci senza precedenti ** ** ". Questa fase è estremamente importante perché senza di essa non riusciremo mai a vedere le voci inaspettate. E 'l'inaspettato voci che sono probabilmente i più importanti e più interessanti.
Executive Summary
Sia OSSEC e Logwatch sono eccellenti strumenti gratuiti. OSSEC eccelle in allarme quando un modello di attacco conosciuto ha luogo. Logwatch è uno strumento formidabile per riassumere un pezzo il tempo dei tronchi così che gli umani possono realmente dare un senso a ciò che sta accadendo. Combinando i due strumenti è possibile creare una difesa molto più solida in profondità postura. Il tutto diventa più grande della somma delle parti.