Archive for the-err '3 'categoria

Sistemi virtualizzati sono più o meno sicuro?

18 MAGGIO 2010

Ho avuto la domanda di cui sopra ha chiesto abbastanza volte che mi è sembrato degno di un post sul blog. Mentre qualche anno fa la risposta potrebbe essere stato "meno sicuri", oggi la risposta è "entrambi". Lo so, suona come Chris è senza impegno, ma che rispondono davvero più accuratamente descrivono lo stato attuale della tecnologia.

Virtualizzazione Everything Changes

Ho sentito una considerazione alcune persone che la virtualizzazione è sul punto di impatto del settore stesso modo in cui Internet ha fatto negli anni 90. Per essere onesto, penso che ci sia merito nel suddetto parere. Nei primi anni '90, la maggior parte gente correva IPX, AppleTalk, NetBUI e una pletora di altri protocolli su reti chiuse. Alla fine degli anni 90, la maggior parte persone correvano IP esclusivamente con connettività a tutto il mondo. Il modo in cui abbiamo fatto di business, così come il modo in cui abbiamo applicato la sicurezza, completamente cambiata nel corso di 10 anni. Sia l'amministrazione della rete e delle competenze di sicurezza che sono state all'avanguardia nel 1990, sono stati tutti inutili, ma entro il 1999.

La virtualizzazione sta cominciando a rampa fino ad avere lo stesso impatto sul settore. Implementazione della virtualizzazione richiede un completo ripensamento delle modalità di applicazione di sicurezza. Torna nel 1990, gli amministratori che semplicemente collegato a Internet, senza preoccuparsi di come questo avrebbe un impatto sulla loro rete, ha bruciato alla grande. Siamo in coda per vedere un risultato simile a quella gente di adottare la virtualizzazione.

Che cosa rende meno sicura la virtualizzazione

Il tallone d'Achille della virtualizzazione è nel software stesso. Speriamo ci si possa fidare del software per mantenere i sistemi guest distanza gli uni dagli altri, così come l'host e / o hypervisor. Ci sono due grossi problemi con questa aspettativa:

  1. Nessun software è privo di bug
  2. Il software può essere configurato

Pochi anni fa la ricerca di base ha dimostrato di poter uscire da un ospite e ottenere il controllo completo del sistema operativo host . Mentre un hypervisor dovrebbe limitare quel tipo di esposizione, abbiamo sicuramente visto casi in cui anche l'hypervisor è stato scavalcato . Abbiamo anche visto casi sono stati il software diventa sfruttabile solo se eseguito in un ambiente virtualizzato . Questi link mostra una piccola sezione trasversale dei problemi di virtualizzazione che sono stati scoperti nel corso degli ultimi anni. Google può darvi una lista più completa, se siete interessati.

Così un prudente sicurezza professionale sta per essere cauti di ciecamente fidarsi di software per essere sicuro. Il problema è che i venditori non sempre tengono questo stesso approccio. Prendere VMware con i loro ESX (che sarà presto ESXi) prodotto come esempio. Molti di noi erano sbalorditi quando un rappresentante VMware ha annunciato al CanSecWest che era teoricamente impossibile per attaccare il hypervisor ESX . Quando abbiamo semplicemente assumere qualcosa è infrangibile, qualcuno più creativo sta andando a trovare un modo di perforare attraverso .

Una delle mie maggiori preoccupazioni con ESX / ESXi VMware è che l'ha progettata per essere modulare (via VMsafe ). Sul lato positivo, questo significa che i fornitori esterni in grado di creare prodotti per migliorare l'hypervisor di funzionalità e sicurezza. L'aspetto negativo questo aumenta notevolmente le probabilità di cattivo codice in fase di introduzione, che può compromettere la sicurezza.

Abbiamo visto un grande esempio di questo in passato. Marcus Ranum creato il firewall Gauntlet, che a quel tempo era uno dei dispositivi culo più sicuro e calci di sicurezza disponibili. Quando tre agenzie lettera voleva il meglio della sicurezza, si è rivolto a Gauntlet. Marcus venduto Gauntlet per Network Associates (in seguito divenne McAfee) che immediatamente iniziato ad aggiungere nelle caratteristiche. Non passò molto tempo prima di una stringa costante di vulnerabilità sono stati scoperti, ciascuno introdotto da queste nuove "features". Da lì, il prodotto ha perso la sua sicurezza cred e scivolò fuori del radar.

Ora è certamente possibile aggiungere funzioni e tenere le cose sicure. Il FreeBSD gente sono un ottimo esempio di come farlo correttamente. Per garantire la sicurezza mantengono un processo di revisione molto rigoroso . E 'perfetto? Assolutamente no, ma il loro processo di revisione contabile ha messo la barra per l'implementazione di software sicuro. Con po 'di fortuna VMware farà simile, ma non ho sentito alcun ronzio di questo essere il caso.

Ottenere la testa dritta

OK, quindi non possiamo ciecamente fidarsi software di virtualizzazione per tenere a bada gli aggressori. Possiamo però ancora prendere precauzioni per ridurre al minimo l'impatto se il peggio si verifica. Uno dei più grandi passi da fare è quello di considerare attentamente quali server si ospitati, e ciò che gli altri sistemi guest sono autorizzati a funzionare sulla stessa macchina. Il concetto di zona di sicurezza utilizzati da architetti di rete è altrettanto applicabile qui.

Una zona di sicurezza è semplicemente un insieme di sistemi che condividono lo stesso livello di rischio relativo. Ad esempio server Web, il nome e SMTP di solito sono tutti situati in una DMZ, perché tutti i rischi quota analoga da attacchi diretti. Sulla parte interna della rete, i desktop sono di solito collocato in una zona di sicurezza diverso da quello dei server. Questo perché i server hanno poco o nessun accesso a Internet, mentre i desktop sono normalmente autorizzati a comunicare direttamente. Questo pone il desktop a più alto rischio di attacco rispetto al server.

Possiamo applicare questa stessa logica in sede di attuazione di virtualizzazione. Un server DMZ e un server interno non dovrebbero essere gli ospiti sullo stesso hardware (CPU e disk array). In questo modo potrebbe consentire a un utente malintenzionato di creare un percorso alternativo nella nostra rete. Piuttosto che dover passare attraverso qualsiasi firewall, NIDS, NIPS, dispositivi ecc che è stato distribuito sul filo, un malintenzionato può essere in grado di accedere alle risorse interne tramite il software di virtualizzazione. E 'un attacco facile? Non da quello che abbiamo visto finora. Sfrutta funzionali sono stati scoperti però, e allora perché introducono rischi inutili se non è necessario.

A proposito, queste stesse regole di zona di sicurezza deve essere applicato l'attrezzatura rete virtualizzata. Ad esempio, è una cattiva idea di utilizzare lo stesso interruttore fisico per VLAN la DMZ e la rete interna. Ho visto un paio di clienti whacked ottenere in questo modo.

Che cosa rende la virtualizzazione più sicuro

Fortunatamente, dal punto di vista della sicurezza, la virtualizzazione non è solo brutte notizie. In realtà ci sono alcune pratiche di sicurezza molto cool è possibile applicare in un ambiente virtualizzato che semplicemente non può farne a meno. Questa fu una delle ragioni per cui abbiamo iniziato a utilizzare la virtualizzazione all'interno del Honeynet già nel 2000.

Una delle questioni più grande sicurezza che abbiamo di fronte oggi è rootkit a livello kernel . Ciò che rende questo ceppo di malware in modo insidioso è si trasforma in modo efficace il sistema operativo in malware. Questo rende estremamente difficile il rilevamento, in quanto tutti i controlli di sicurezza devono passare attraverso il kernel. Se il kernel stesso è compromesso, non possiamo fare affidamento sul kernel di segnalare con precisione le informazioni di sicurezza. Si finisce per dover spegnere il sistema, montare l'unità su un noto per essere pulita del sistema operativo, e l'esecuzione di nostri controlli forense da lì. Oh, naturalmente il problema con questo processo è che non scala bene. Se abbiamo decine o centinaia di server, semplicemente non c'è abbastanza tempo in un giorno per controllare tutti correttamente.

Come accennato in precedenza, VMware è ora permettendo fornitori di terze parti l'accesso ai hypervisor tramite API VMsafe. Questo consente l'accesso alle informazioni sullo stato privilegiate, come la memoria e il traffico di rete, su ciascuno dei sistemi operativi guest. Inserendo nel hypervisor, alcune opzioni di sicurezza estremamente freddo diventano possibili.

Per esempio diciamo che un sistema operativo guest viene attaccato da un rootkit a livello kernel. Analizzando la memoria degli ospiti, il rootkit possono essere rilevati al di fuori del sistema operativo virtuale. Quando si eseguono i controlli attraverso l'hypervisor, c'è molto meno di una possibilità che un rootkit può furtivamente la sua attività 'e passare inosservato. Come già accennato, non esiste alcuna opzione paragonabile a un non-sistema virtualizzato.

La spina API crea anche nuove possibilità per affrontare il traffico crittografato. Quando un capo all'altro la crittografia è impiegato (come una VPN), controlli di rete in base del livello di applicazione possono essere facilmente aggirate. L'unica opzione reale è stato quello di eseguire il software agente sul punto finale, per cui la sicurezza potrebbero essere attuate dopo il processo di decodifica. Naturalmente il problema qui è che se l'agente viene attaccato, tutte le scommesse sono spenti. Ancora una volta, inserendo nel hypervisor siamo in una posizione migliore per esaminare in modo più sicuro di questi dati.

Stiamo iniziando a vedere nuovi prodotti che sfruttano le API VMsafe spina . Dal momento che tutti i prodotti sono relativamente nuovi, la giuria è ancora fuori sulla loro efficacia può essere. Offerte eseguire la mossa di sostituire firewall basato su host e protezione IDS per l'applicazione delle policy pieno. Sarà interessante vedere come questo prodotto di nicchia scuote nel corso dell'anno prossimo.

Riassunto

Così come ho accennato all'inizio di questo post, la virtualizzazione ha la capacità di rendere il vostro ambiente più o meno sicuro, a seconda di come distribuirlo. Se semplicemente iniziare a correre tutto su una singola casella, probabilmente andando ottenere whacked. Se si estende la best practice che sono state sviluppate nel corso degli anni nel regno di virtualizzazione, oltre a sfruttare alcune delle nuove caratteristiche di sicurezza che vengono rilasciate, si può effettivamente creare una postura migliore sicurezza complessiva.

Combinando Logwatch e OSSEC - Parte 4

18 Febbraio 2010

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:

  1. Hanno Logwatch analizzare i log OSSEC direttamente.
  2. 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.

Combinando Logwatch e OSSEC - Parte 3

17 febbraio 2010

Nei miei ultimi due post ho discusso Logwatch e OSSEC, e come essi possono essere sfruttare per aumentare la vostra sicurezza. In questa puntata parlerò come installare entrambi di questi strumenti.

Installazione Logwatch

Logwatch è abbastanza facile da installare. In realtà, è installato di default su molte distribuzioni Linux in modo da avere già una copia sul vostro sistema. Per controllare, l'accesso come root e provare ad eseguire Logwatch con la "-v" interruttore. Se si vede:

[Root @ fubar logwatch] # logwatch-v

Logwatch 7.3.6 (rilasciata 05/19/07)

Logwatch è installato e di avere una copia della versione più recente. Se non si dispone dell'ultima versione, è possibile afferrare dalla pagina di download Logwatch .

Ci sono tre tipi di Logwatch che può essere scaricato; binari in formato RPM, sorgente in formato RPM o sorgenti, in una palla di catrame. Se il sistema supporta la gestione dei pacchetti RPM, l'RPM binario è la scelta migliore. E 'semplice da installare e RPM aggiorna automaticamente il software quando sono disponibili nuove versioni.

Installazione Logwatch Da RPM

Per installare la versione binaria del RPM, semplicemente l'accesso come root e passare alla directory dove avete scaricato il file RPM. Ora eseguire il comando:

rpm-U logwatch-7.3.6-1.noarch.rpm

Non dimenticare è possibile utilizzare il tasto TAB per il completamento automatico del nome del file piuttosto che dover digitare l'intera faccenda.

Installazione Logwatch da sorgenti

L'installazione da sorgenti è un po 'più lunghi. Ricordate che per poter installare il codice sorgente è necessario avere già un compilatore (come gcc) installato sul vostro sistema. Di accesso come root e accedere alla directory in cui avete scaricato la palla Tar. Per estrarre l'archivio, eseguire il comando:

tar xvzf logwatch-7.3.6.tar.gz

Vedrete una struttura di directory sotto la posizione corrente vengono creati e un sacco di file da copiare pollici Abbiamo ora bisogno di spostarsi nella directory di livello superiore che è stato creato:

logwatch cd-7.3.6

Al fine di Logwatch a correre, ci sono un sacco di directory che devono essere creati sul sistema. Questi sono documentate nel file README nella directory corrente. Fortunatamente, Logwatch include uno script di installazione che può fare tutto il lavoro per voi. Sfortunatamente, lo script ha i permessi impostati in modo sbagliato non verrà eseguito di default. Questo è abbastanza facile da risolvere ma con il comando chmod:

chmod 500 install_logwatch.sh

Ora siamo in grado di eseguire lo script per impostare il nostro sistema:

. / Install_logwatch.sh

Non dimenticare il punto all'inizio della riga.

Test Logwatch

Per testare la configurazione Logwatch, eseguire il comando:

logwatch | less

Vedrete il vostro schermo del terminale va in bianco, ma questo è normale. Alla fine vedrete un rapporto Logwatch ottenere stampati a schermo che è possibile navigare attraverso l'utilizzo del "Page Up" e "Page Down". Come accedere ci vuole per il rapporto di mostrare sullo schermo dipende dalla quantità di informazioni di log deve avere analizzato. Si potrebbe richiedere alcuni secondi o un paio di minuti. Ad ogni modo, che vi darà la possibilità di familiarizzare con il formato del report.

Installazione OSSEC

Come ho detto nel mio ultimo post, hai due opzioni di installazione con OSSEC, locale o client / server. In questo post ho intenzione di concentrarsi sul client / server di configurazione, in quanto è un po 'più complessa. Se si sta eseguendo un'installazione locale, è sufficiente selezionare l'opzione "locale" durante il processo di installazione e saltare la sezione su come configurare un canale protetto tra l'agente e il server.

Inizia con il Server

OSSEC utilizza la crittografia Blowfish per proteggere la comunicazione tra il client e il server. Blowfish è la chiave simmetrica basata, in modo da entrambe le parti devono sapere quale valore chiave da utilizzare per comunicare. Il server è responsabile della generazione della chiave simmetrica, quindi dobbiamo installare il software del primo server. Durante il client di installazione ci verrà chiesto, per un valore chiave quindi ovviamente avremo bisogno di avere a portata di mano che prima del tempo.

Ecco un suggerimento risparmio di tempo. Il valore della chiave è lungo e quasi impossibile da ricordare. Il modo più semplice per spostare il valore della chiave dal sistema server al sistema agente è quello di utilizzare SSH. Creare una connessione sicura al server OSSEC, ed estrarre la chiave appropriata (indicazioni fornite di seguito). In una finestra di terminale secondo, creare una sessione SSH al sistema in cui si intende installare l'agente. Quando l'installazione client richiede il valore della chiave, si può semplicemente copia / incolla tra i due terminal.

Installazione del server OSSEC

Il software del server è disponibile come una palla di catrame, in modo da poter prendere una copia della versione più recente dalla pagina di download OSSEC . Sarà quindi necessario per estrarre il contenuto della palla Tar:

tar xvzf OSSEC-HIDS-2.3.tar.gz

Quindi, entrare nella struttura di directory appena creata:

OSSEC cd-HIDS-2.3

OSSEC fornisce uno script di installazione per camminare attraverso il processo di installazione del server. Per avviare l', tipo di script:

. / Install.sh

Non dimenticare il punto all'inizio del comando. Ora verrà richiesto attraverso una serie di opzioni di installazione:

  • Lingua - Il valore di default è l'inglese. Cambiare se necessario.
  • Conferma di installazione - Premete Invio dopo aver letto lo schermo.
  • Installare tipo - Digitare "server" senza le virgolette e premere Invio.
  • Installare posizione - Accettare l'impostazione predefinita.
  • E-mail di notifica - di default è sì, selezionare se si vuole avvisi di posta elettronica. Se si seleziona Sì, verrà richiesto un valido indirizzo e-mail e server di posta.
  • Controllo di integrità - di default è sì. Selezionare se si desidera che il sistema locale periodicamente controllati per le intrusioni.
  • Individuazione del root kit - di default è sì. Buona opzione in quanto abbiamo bisogno di mantenere un alto livello di integrità di questo sistema.
  • Risposta attiva - di default è sì. Selezionare questa opzione se si desidera essere in grado di rispondere agli eventi.
  • Goccia Firewall - permette al server OSSEC a difendere è di per sé un attacco diretto se viene rilevato.
  • Lista bianca - Questo vi permetterà di aggiungere gli indirizzi IP da cui possibili attacchi saranno ignorati. Stare attenti con questa opzione. Se non avrà accesso console al server OSSEC, potrebbe essere saggio per identificare un indirizzo IP che può sempre ottenere in, dovrete solo garantire l'IP di origine è un sistema affidabile.
  • Abilita Syslog - di default è sì. Selezionare questa opzione se si desidera raccogliere i log di sistema che non è possibile eseguire un agente OSSEC (come i firewall, switch, router, access point, ecc.)
  • File di log da monitorare - Questa schermata identifica tutti i file di log OSSEC locale controllerà. E 'puramente informazioni, in modo tutto quello che puoi fare è premere Invio per spostare passato. Se notate uno o più file di registro mancanti dalla lista, è possibile aggiungere in seguito al file ossec.conf.

A questo punto OSSEC accederà al compilatore locale e installare tutti i file necessari al sistema. Una volta completata, è possibile avviare il server OSSEC eseguendo il comando:

/ Var / OSSEC / bin / OSSEC controllo avvio

Definizione agenti OSSEC

Non abbiamo ancora finito con il server OSSEC ancora. Quindi, abbiamo bisogno di pre-definire qualsiasi sistema che sarà in esecuzione l'agente OSSEC (client) del software. Questa operazione viene eseguita utilizzando il comando manage_agents. In primo luogo però, abbiamo bisogno di fare un po 'di compiti a casa. Fate una lista di tutti i sistemi che saranno in esecuzione il software OSSEC agente. Per ogni sistema, è necessario un nome descrittivo e indirizzo IP del sistema.

Ora, eseguire il seguente dalla riga di comando:

/ Var / OSSEC / bin / manage_agents

Questo produrrà il menu principale Gestione Agent. Premere il tasto "A" seguito dal tasto Invio per definire il primo sistema. Inserire un nome descrittivo per il primo sistema, seguito dall'indirizzo IP del sistema. Non preoccuparti per il numero ID agente. Basta accettare le impostazioni predefinite e OSSEC si auto-assegna il successivo numero ID disponibili. Dopo aver confermato le informazioni immesse, si torna al menu principale di Agent Manager. Ripetere la procedura per ogni sistema che sarà in esecuzione un agente OSSEC.

Tasti di Generazione

Dopo aver aggiunto in tutti i sistemi, è tempo di generare chiavi di crittografia. Questa operazione viene eseguita anche con l'utilità manage_agents. Se si chiude lo strumento dopo l'ultimo passaggio, è ora il rilancio.

Premere il tasto "E" seguito da Invio per selezionare il tasto "Estrai per un agente" opzione di menu. Ti verrà chiesto il numero di identificazione della chiave che si desidera estrarre. I nomi descrittivi e gli indirizzi IP sono elencati con ogni numero ID, quindi dovrebbe essere banale per identificare quali quello che si desidera. Inizia con il sistema che si intende installare il software dell'agente sul primo.

OSSEC agente di installazione su Linux

Quando si installa il software agente su un client Linux o UNIX, è possibile utilizzare la palla esattamente Tar stesso che abbiamo usato per installare il software server. Eseguire lo stesso script di installazione, ma questa volta quando viene richiesto per il tipo di installazione che si desidera eseguire, il tipo di "agente", seguito dal tasto Invio.

L'installazione cliente ha molte delle stesse richieste come l'installazione del server. Usare le informazioni qui sopra per guidare l'utente attraverso il processo. Il prompt che varieranno tuttavia è che vi sarà chiesto di fornire l'indirizzo IP del server OSSEC. Una volta completata, sarà OSSEC accedere al compilatore locale e installare tutti i file necessari al sistema.

Poi abbiamo bisogno di importare la chiave Blowfish dal server OSSEC. Mentre ancora sul sistema agente, eseguire il comando:

/ Var / OSSEC / bin / manage_agents

Quando il menu Manager Agent, selezionare "I" per importare la chiave Blowfish.

Quando la richiesta successiva, è necessario immettere manualmente la chiave appropriata Blowfish. Anche in questo caso, se si esegue SSH per entrambi i sistemi al tempo stesso, si può semplicemente copia / incolla tra i due terminal. Assicurarsi che la chiave è corretto, premere il tasto Invio, e poi selezionare "y" per confermare che la chiave sembra corretta. Si ritornerà al menu Agent Manager. Selezionare "q" per tornare alla riga di comando.

Ora non ci resta che avviare l'agente OSSEC. Puoi farlo eseguendo il comando seguente:

/ Var / OSSEC / bin / OSSEC controllo avvio

Si dovrebbe vedere tutti i componenti agente OSSEC start up, seguito da un messaggio "Completed".

OSSEC agente di installare su Windows

OSSEC ha un file eseguibile autoestraente che vi permetterà di installare il software agente su un sistema Windows. È sufficiente fare doppio clic sul file eseguibile per avviare il processo di installazione. Ti verrà richiesto di accettare la licenza e quali componenti si desidera installare. Basta seguire le istruzioni fino alla finestra agente OSSEC Manager.

La finestra di agente OSSEC manager vi chiederà l'indirizzo IP del server OSSEC. Sarà anche richiederà il valore della chiave Blowfish da usare, in modo da estrarre la chiave appropriata sul server e inserire il valore in questo campo. Assicurati di cancellare il messaggio in questo campo prima di incollare nella chiave Blowfish. In caso contrario, la comunicazione con il server potrebbe non riuscire.

Avanti, selezionare "Gestione" dal menu OSSEC Manager Agent, seguita da "Start OSSEC". Ora dovreste vedere il "Stato:" cambiare l'indicatore di "Running ...".

Test OSSEC

Una volta che avete il server e il software agente installato, avviato e configurato i tasti appropriati, è giunto il momento di controllare la nostra impostazione. Eseguire il seguente comando sul server OSSEC:

cd / var / OSSEC / logs

Ed estrarre il file ossec.log:

meno ossec.log

Controllare il file di log per eventuali errori. Un errore comune è che i rapporti OSSEC non è possibile inviare e-mail. Assicurarsi che il server di posta sia in esecuzione e che si tratta di accettare connessioni. Una volta soddisfatti con la configurazione del server, è giunto il momento di controllare gli agenti. Spostare verso il basso nella directory "segnalazioni":

cd avvisi

Ed estrarre il file alerts.log:

meno alerts.log

In particolare, siete alla ricerca di voci simile al seguente:

2010 17 febbraio 16:09:16 (desktop) 192.168.1.10-> OSSEC

Regola: 501 (livello 3) -> 'Nuovo agente OSSEC collegati.'

Src IP: (nessuno)

Utente: (nessuno)

OSSEC: Agente iniziare: 'test_system-> 192.168.1.10'.

Si dovrebbe vedere una voce per ogni sistema su cui è installato il software agente.

Più a venire

Caspita! Che è più che sufficiente per un post! Nel mio prossimo post farò entrare sfruttando Logwatch per analizzare tutte le informazioni di allarme generato da OSSEC.

Combinando Logwatch e OSSEC - Parte 2

16 febbraio 2010

Nel mio ultimo messaggio ho descritto come Logwatch potrebbero essere utilizzati per semplificare il processo di revisione del registro. In questo post vedremo OSSEC e quello che porta in tavola.

Che cosa è OSSEC?

OSSEC , abbreviazione di "Sicurezza Open Source", è un host basato su sistema di rilevamento delle intrusioni (HIDS). In altre parole, è progettato per rilevare attacchi o violazioni delle policy, se e quando si verificano. Anche se non ha la capacità di proteggere contro gli attacchi sconosciuti o 0-Day (che sarebbe la prevenzione delle intrusioni basata su host), che include una vasta gamma di strumenti che consentono di identificare una intrusione quando si verifica, così come la misura del danno che è stato causato.

Le piattaforme supportate

Per sfruttare al meglio tutte le caratteristiche OSSEC ha da offrire, è necessario eseguire un agente sul sistema protetto. Agenti OSSEC può essere eseguito su Windows, Mac OS X, Linux, e una vasta gamma di sistemi UNIX. Se siete interessati solo alla parte di analisi dei log però, una gamma ancora più ampia di sistemi possono essere supportati. Ciò include hardware di Cisco e Juniper. Un certo numero di prodotti specifici sono supportati anche come firewall Checkpoint, Symantec Anti-Virus, Snort, Squid, e Arpwatch, solo per citarne alcuni.

Quando si installa OSSEC si hanno due opzioni di configurazione, locale o client / server. Una installazione locale viene utilizzata quando è necessario eseguire tutto su un unico sistema. Il client / server di installazione consente di eseguire un ambiente distribuito proteggendo i sistemi multipli allo stesso tempo. Mentre la maggior parte delle distribuzioni sono client / server basato, se si vuole dare un giro si può facilmente eseguire tutto in un sistema singolo test utilizzando una installazione locale OSSEC.

Analisi log

OSSEC include un log-based Intrusion Detection System (LIDS). Questa ha la capacità di rivedere i file di log in tempo quasi reale, mentre li scrutando per schemi di attacco conosciuti. Quando un registro viene generato su un sistema protetto, l'agente si occupa di trasmettere in modo sicuro l'(cifratura Blowfish tramite una pre-shared secret) accedere nuovamente al server. Il server si occuperà quindi di eseguire l'analisi.

La maggior parte degli strumenti di analisi log processo le loro regole in un formato lineare. Con questo voglio dire se abbiamo 500 regole, la regola si è selezionata, regola due, poi la regola tre, e così via fino a quando un match è trovato o si arriva alla fine del set di regole. OSSEC funziona un po 'diverso in quanto implementa una struttura ieratica alle regole. Le voci del registro vengono prima classificati e poi verificati solo contro qualsiasi normativa è opportuna. Il risultato è che, piuttosto che dover elaborare tutte le 500 regole, maggior parte degli eventi avrà confrontati con 10 regole o meno. Questo riduce drasticamente la quantità di overhead necessario per elaborare il set di regole.

Verifica integrità

OSSEC include uno strumento denominato Syscheck per eseguire il controllo dell'integrità dei file e delle directory. Se si esegue un agente di Windows, è possibile anche includere i tasti specifici all'interno del registro di Windows per essere controllati sia. Modifiche apportate ai file possono essere rilevati utilizzando sia MD-5 e SHA-1 algoritmi hash. Il sistema è estremamente personalizzabile. È possibile includere o escludere singoli file o intere strutture di directory. È anche possibile impostare un flag per rilevare la creazione di nuovi file.

L'agente software è progettato per utilizzare una minima quantità di CPU durante il controllo di integrità. Anche se questo significa il controllo richiederà più tempo, ma aiuta anche a ridurre al minimo il calo di performance del sistema. Informazioni hash viene trasmessa al server. Il server si occuperà quindi di eseguire il confronto hash per vedere se qualcuno dei file critici del sistema sono state modificate. Il server memorizza anche una copia della politica di controllo di integrità, in modo che se cambia la politica sono fatte per l'agente, possono essere rilevate e segnalate pure.

Rilevamento delle anomalie

OSSEC va ben oltre la verifica del log per verificare l'integrità del sistema. Policy di utilizzo possono essere gestiti centralmente dal server, e poi spinto fuori agli agenti appropriati. Per esempio si potrebbe definire una politica che per quanto riguarda le applicazioni Windows sono accettabili (Office, Firefox, ecc) e quali no (client di messaggistica istantanea, Skype, ecc.) È anche possibile definire le opzioni di configurazione accettabile come verificare che gli hash NT vengono utilizzati per la password memorizzata, ma non gli hash LanMan.

OSSEC include una serie di altre cose interessanti al fine di contribuire a verificare l'integrità di un sistema. Per esempio OSSEC ha la capacità di eseguire comandi da agente e monitorare l'uscita che viene generato. Per esempio si potrebbe avere l'agente Linux eseguire il comando "df" a intervalli regolari e generare un allarme se l'utilizzo del disco supera il 90%. Un esempio Windows potrebbe essere quello di avere OSSEC generare un avviso ogni volta che file di informazioni viene scritto flussi di dati alternativi nell'area di NTFS.

Risposta attivo

Infine, OSSEC include la possibilità di rispondere quando viene rilevata un'attività sospetta. Le risposte possono essere generati dal server o l'agente, che mai si specifica. Le risposte possono essere benigni la generazione di una e-mail di avviso, di essere come proattiva come il blocco di un indirizzo IP remoto per un periodo limitato di tempo. Ci sono una serie di script inclusi risposta attiva è possibile disegnare, oppure si può facilmente scrivere il vostro.

Architettura sicuro

Gli autori OSSEC hanno fatto di tutto per proteggere tutti i componenti all'interno del prodotto. Attività quali il controllo dell'integrità vengono eseguite sul server, piuttosto che l'agente, così l'affidabilità del hash non può essere compromessa durante un attacco. I processi sono gestiti con il più basso livello di autorizzazioni possibili e diversi account utilizzati per eseguire ogni componente OSSEC. Ciò significa che un compromesso di una domanda unica ai OSSEC non immediatamente portare a un compromesso del pacchetto completo. Inoltre, la maggior parte dei componenti sono gestiti all'interno di una prigione chroot così il loro accesso al sistema è ulteriormente ristretta.

Le parole finali

Mentre OSSEC è uno strumento potente, è importante ricordare che si tratta di un HIDS e non una soluzione di gestione dei log. OSSEC possibile rivedere le voci del registro alla ricerca di segnali sospetti, ma sarà solo salvare le informazioni allerta. Così, mentre OSSEC non sostituisce il tuo Information Security Management (SIM) soluzione, può certamente aumentare la. È possibile configurare facilmente OSSEC a inoltrare tutte le segnalazioni che genera a un server centrale di registrazione .

Mentre OSSEC è un software open source, Trend Micro è principalmente lo sviluppo. Se hai bisogno di supporto commerciale, è possibile acquistare un contratto di assistenza attraverso di loro ad un costo ragionevole.

Più a venire

Nella mia prossima puntata vedremo l'installazione OSSEC e Logwatch. Dopo di che, ci sposteremo in integrando le due cose insieme.

Combinando Logwatch e OSSEC

15 febbraio 2010

Recentemente ho avuto uno studente mi chiede una domanda riguardo l'integrazione di Logwatch con OSSEC. Mi sentivo come se questa fosse un'idea complessa e ancora abbastanza fresco che è garantita una serie di post per coprire per intero. Quindi nei prossimi giorni vi parlerò di ciascuno di questi strumenti, come integrare insieme, così come quello che la visibilità di sicurezza aggiuntive possono essere acquisite una volta che il processo è completo.

Che cosa è Logwatch?

Logwatch è un ottimo strumento open source per la generazione di report giornalieri umano log leggibile. Le voci del registro tendono a cadere in una delle tre categorie:

  • Cose che conosci è il male
  • Cose che conosci è normale e può essere ignorato
  • Tutto il resto

Si tratta di quella categoria "tutto il resto" dove Logwatch brilla davvero. Per le cose che sappiamo è male, ci sarà l'installazione una qualche forma di sistema di allarme. Per esempio possiamo scrivere una firma allarme che avverte l'analista di sicurezza quando un account viene attacco a forza bruta. Ma per quanto riguarda gli attacchi che non conoscono o non sono sicuro di quello che aspetto hanno? Questo sarebbe un chiaro esempio di quella categoria "tutto il resto". Il traffico non è normale, ma non abbiamo visto prima di avere una firma in attesa di generare un avviso. Dal momento che non saremo in grado di catturare l'attacco in tempo reale, dovremo catturare durante una revisione registro giornaliero.

Naturalmente il problema facendo recensioni registro giornaliero è che si tratta di un'operazione noiosa e lunga. Voglio dire siamo onesti, chi vuole davvero trascorrere la loro giornata rivedere milione più voci di registro? Anche se hai fatto, sei sicuro che sarebbe in realtà catturare il traffico fuori dal normale?

Come funziona

Cosa Logwatch fa molto bene è permesso di riorganizzare i dati in un formato che è più facile per gli esseri umani da seguire. La sua vera forza è che permette di spostare la roba si capisce dal modo (normale o male), in modo che le voci di registro inaspettato risaltare come un pollice irritato. In altre parole, Logwatch consente di riassumere le voci di registro in modo insolito la roba è più facile da individuare.

Quello che mi piace molto di Logwatch è che non si perde nulla. Molti strumenti di revisione log solo indicarti la roba che è stata pre-definito come il male. Il problema che tutti condividiamo è che quando qualcosa di male, ma imprevisto, vola proprio sotto il filo. Perché Logwatch consente di vedere tutto, non è più perdere l'inaspettato.

Logwatch In Azione

Consente di discutere su come Logwatch funziona utilizzando il SSH servizio server come esempio. Gli script a che fare con SSH sono già stati definiti all'interno Logwatch, quindi non c'è bisogno di fare alcun tweaking per ricevere le caratteristiche ci accingiamo a discutere.

Nel rivedere un file di log, la Logwatch prima cosa che fa è riorganizzare le voci di registro in base al tipo di messaggi. Per esempio tutti gli accessi di successo SSH sono raggruppati insieme, così come gli errori di accesso troppi, si è rifiutato connessioni, account bloccati, conti senza un guscio proprio, protocollo mis-match, ecc ecc ecc Una volta che tutti i messaggi SSH sono raggruppati per il loro tipo, i dati vengono poi riassunti per ridurre la quantità di informazioni che vengono segnalati.

Per esempio, il valore predefinito è quello di riassumere i tentativi di accesso non riuscito per account e IP di origine. Così un tipico fallito sezione del report di accesso potrebbe essere simile a questa:

Accessi non riusciti da questi:

bsmith / password da 1.2.3.4: 637 time (s)

jsmith / password da 1.2.3.5: 2 time (s)

Quindi, piuttosto che dover rivedere le voci di registro 639 segnalare un brutto tentativo di accesso, abbiamo tutte le informazioni pertinenti riassunte in tre linee (se si include il titolo). Continuare questo processo per tutti gli altri messaggi SSH, ed abbiamo drasticamente ridotto la quantità di tempo necessario per rivedere i nostri log.

Ma cosa succede se succede qualcosa che Logwatch non è pre-programmato per riconoscere? Quando una voce del registro inaspettato si trova, Logwatch aggiunge una sezione alla fine del rapporto di servizio denominata "Voci senza pari". Quindi, se vediamo questo titolo nella sezione server SSH, sappiamo che un evento si è verificato che è o anomali o imprevisti per il servizio SSH. Questo potrebbe benissimo essere una qualche forma di attacco che non siamo consapevoli sta facendo il giro.

Da mettere a fuoco la sezione voci senza pari, siamo in grado di identificare rapidamente le attività di inaspettato. Come ho detto prima, questo è davvero l'obiettivo principale di fare recensioni registro giornaliero. Per trovare la roba non ci aspettiamo che furtivamente passato il nostro sistema di allarme. Logwatch rende questo processo più rapido e indolore possibile.

Riepilogo delle caratteristiche

Nell'esempio di cui sopra ho parlato di fare recensioni registro giornaliero, ma ad essere onesti Logwatch è altamente personalizzabile. È possibile specificare qualsiasi intervallo che si desidera utilizzare fino a un intervallo di un secondo. Per esempio, diciamo che sto studiando una intrusione, invece di effettuare una rassegna quotidiana di registro. Ho potuto specificare un intervallo come "2010/02/14 17:05:00 per quell'ora" mettere a fuoco in pieno sulle informazioni che mi interessano. Posso anche concentrarsi su un file di log o servizio specifico.

Il livello di dettaglio del report è anche personalizzabile. In genere quando avete a che fare con la sicurezza si ottiene l'abitudine di volere sempre il massimo livello di dettaglio del report. Per essere onesti, con Logwatch un alto livello di dettaglio è probabilmente più che avrete bisogno di mai. Personalmente io di solito bastone con "med" per le medie e che funziona bene. È inoltre possibile specificare il livello di segnalazione come "basso" o "alta" o usare un intervallo numerico di 0-10 per un più alto livello di granularità (basso = 0, med = 5, alta = 10).

Logwatch può essere eseguito automaticamente o come un processo manuale. Tipicamente si vuole impostare in modo da eseguire automaticamente ogni giorno e vale la pena riassumere una giornata di voci di registro. Se hai bisogno di espandere o concentrare il report, è sempre possibile eseguire Logwatch dalla riga di comando, specificando esattamente quello che vuoi vedere. È quindi possibile utilizzare il "risparmio" per specificare un nome di relazione e directory per l'archiviazione.

Più a venire

Quanto sopra dovrebbe darvi una buona idea per le caratteristiche Logwatch può portare al tavolo. Nel prossimo post parlerò OSSEC nello stesso livello di dettaglio. Dopo di che, finisco su come installare ogni strumento e come integrarli tra loro.

Giorno 2 Keynote

12 GENNAIO 2010

Grazie a tutti quelli che uscivano per la crittografia / summit DLP. Qui ci sono le slide del mio discorso introduttivo il giorno 2.

crittografia DLP-keynote

ICMPv6 Challenge - Risposte

13 dicembre 2009

La sfida è stata: "Scrivere un tcpdump / windump filtro che cattura pacchetti ICMPv6 Multicast Listener." Ho un ampio scrivere su ciò che rende la risposta così complessa. Se conosci IPv6 e vogliono solo la risposta, andare alla fine.

In primo luogo, alcuni di fondo

Steinar fatto alcuni commenti al post precedenti ed è stata del 100% in pista. Se le leggi e pensato "Wow, che suona davvero disordinato", si capisce la portata del problema pure. :)

Protocollo vs. Intestazione campo successivo

Con IPv4 abbiamo avuto il campo delle opzioni. Ciò potrebbe causare l'intestazione IP di crescere da 20 byte a grande come 60 byte di dimensione. With IPv6, there is no longer an options field and the header is fixed at 40 bytes in size. When options are required, we use extension headers to identify them. This throws an interesting curve ball at us because with IPv4 the protocol field (byte 9) would (almost) always identify the upper level transport (TCP, UDP, etc.). With IPv6 the next header field (byte 6) might identify the upper layer transport, or it might identify an extension header which will include some number of options.

Here's a list of some IPv6 extension headers you might run into, as well as the RFCs that define them:

Option # Option Description RFC
0 Hop-by-Hop 2460
6 TCP 793
17 UDP 768
43 Routing 5095
44 Frammentazione 2460
50 ESP 4303
51 AH 4302
58 ICMPv6 4443
59 No next header 2460
60 Destination options 2460
135 Mobilità 3775

IPv6 does not limit the number of extension headers you can use in a single packet.There is however a published “recommended order” as to how the headers should be laid out. The order is:

  • IPv6 Header
  • Hop-by-Hop Options
  • Routing Header
  • Fragment Header
  • AH
  • ESP
  • Destination Options
  • Mobility Header
  • TCP/UDP/ICMPv6

Note this list is “recommended” but not mandatory. An IPv6 host must be able to process the headers in what ever order they were received. This means you will probably find vendors following this list but not attackers. I've personally seen devices start acting really odd when you mess with the header order. In fact I've run across quite a bit of “IPv6 compatible code” which can't deal if the preferred order is not used.

Chasing The Protocol Header

Così, con IPv6 possiamo avere più intestazioni dietro l'intestazione IPv6. Se questo suona come un nuovo concetto, non è in realtà. In realtà probabilmente avete già lavorato con lui. Quando si distribuisce IPSec i due protocolli di sicurezza possibili sono ESP e AH. Questi sono stati effettivamente presi in prestito da IPv6 e massaggiato per lavorare su IPv4. Sia AH ed ESP comprende un campo accanto intestazione per identificare il tipo di pacchetto sono protecting.This viene indicato come concatenamento protocollo, come effettivamente hanno più intestazioni seduto dietro l'intestazione di livello 3 del protocollo.

Quindi, per capire cosa di trasporto di livello superiore (TCP, UDP, ecc) è in uso, potrebbe essere necessario cercare attraverso più intestazioni prima di trovare la risposta. Questo è denominato "inseguire l'intestazione" e tcpdump / windump ci danno un'opzione di filtro per eseguire questa operazione. Si può essere fimiliar con il filtro proto. Nel mondo IPv4, se dico:

ip proto tcp

Che filtrano legge "controllo byte 9 dell'intestazione IPv4 e se il valore è pari a 6 (valore protocollo TCP), incontro sul pacchetto". Questo filtro non è così efficace nel mondo IPv6, naturalmente, perché byte 6 dell'intestazione IPv6 potrebbe identificare il trasporto strato superiore, o potrebbe semplicemente identificare un header opzionale estensione che viene utilizzato. Per risolvere questo problema, il filtro protochain è stato introdotto. Di scrittura:

ip6 protochain tcp

Legge come "Verifica byte 6 dell'intestazione IPv6 per vedere se il valore è uguale a 6. Se invece si trova un valore che identifica un'intestazione opzionale estensione, verificare campo successivo colpo di testa l'intestazione di estensione per un valore di 6. Se si trova più intestazioni di estensione opzionale, continua a ripetere l'ultimo test fino a trovare l'intestazione ultima estensione ".

Abbastanza semplice da scrivere in inglese, ma questo è un incubo per implementare nel codice. Intestazioni di estensione più opzionali sono di lunghezza variabile che aggiunge solo per la complessità. Ho fatto alcuni test con Scapy e si può effettivamente vedere la differenza di prestazioni quando protochain viene invocato. In realtà probabilmente si potrebbe fare un buon lavoro di dosaggio un IDS / IPS, costringendola a processo un sacco di intestazioni di estensione inutile.

Scrittura nostro filtro

Quindi il nostro primo problema per iscritto il filtro sfida è che l'intestazione ICMPv6 potrebbero non apparire subito dopo l'header IPv6. Dobbiamo guardare fuori per le intestazioni di estensione opzionale. Infatti RFC 2710 afferma: "Tutti i messaggi MLD descritte in questo documento vengono inviati con un indirizzo link-local Fonte IPv6, un limite hop IPv6 pari a 1, e una opzione IPv6 Router Alert [RTR-ALERT] in un hop-by-hop Opzioni intestazione. "Questo significa il nostro pacchetto ascoltatore multicast è necessario per avere un hop-by-hop extension header con l'opzione router Alert. Con questo in mente, il nostro primo controllo deve essere:

ip6 protochain icmp6

Per garantire che stiamo solo guardando ICMPv6 pacchetti. Ora è solo una questione di controllo per vedere se il campo di tipo (byte 0) è impostato su 130 (Multicast Listener query) o 131 (Multicast Listener Report). Questo ci porta al nostro secondo problema però. Nel mondo IPv4 che posso fare un:

icmp [0] = valore <tipo di interest>

Se provo questo con icmp6 ottengo:

[Root @ fubar ~] # tcpdump-nn icmp6 [0] = 130
tcpdump: IPv6 protocollo dello strato superiore non è supportata dal proto [x]

In altre parole, non posso utilizzare gli offset con icmp6 per la ricerca di valori specifici. Windump e tcpdump sono pubblicizzati come IPv6 compatibili, ma non aspettatevi di ottenere le stesse funzionalità che hai con IPv4. YUCK!

Allora cosa facciamo? Dovremo ripiegare su riferimento al valore da un ip6 offset. In altre parole, dovremo misurare attraverso l'intestazione IPv6, attraverso la richiesta Hop-by-Hop intestazione, e nell'intestazione ICMPv6 per vedere se il campo tipo è impostato su 130 o 131. Alcune cose da tenere in considerazione:

  • Header IPv6 è fissata a 40 byte di dimensione
  • Hop-by-Hop intestazione è variabile, ma 4 byte con Router Alert set
  • Il campo tipo è 0 byte all'interno dell'intestazione ICMPv6

Ecco quello che finisce con:

ip6 protochain icmp6 e (ip6 [44] = 130 o ip6 [44] = 131)

Caspita! Abbiamo finalmente capito! O abbiamo fatto?

D: Cosa succede se il pacchetto ha intestazioni di estensione aggiuntiva?

R: Il nostro filtro non funziona.

D: Cosa succede se il hop-by-Hop testata ha più possibilità di impostare Router Alert?

R: Il nostro filtro non funziona.

D: Possiamo risolvere questi due problemi?

R: Non fino a tcpdump / windump filtraggio aggiunge IF / THEN supporto del ciclo.

So if we want to capture normal ML traffic, the above filter will work fine. If however we want to insure we catch attacker trickiness as well, the filter is not going to fly.

What if we try something like this:

tcpdump -nn -s 1500 -x ip6 protochain icmp6 | grep -i multicast > multicast.txt

and then just use Wireshark's text2cap tool to convert it to Libpcap format? The problem here is we will only get the header info. Grep will match the summary line which contains the word “Multicast” but then skip all the Hex below it which is the actual contents of the packet.

So the final answer is: “Can't get theya from haya” ;)

So what if you really need to be able to see this traffic? Until support for IPv6 matures, the only 100% method is to grab all ICMPv6 traffic and then manually sort through it.

At least that's my view on this. If anyone can actually come up with a 100% working solution, I would love to hear it.

ICMPv6 Challenge - Suggerimenti

9 Dicembre 2009

OK, ecco un suggerimento per indicarvi la giusta direzione.

La sfida è stata: "Scrivere un tcpdump / windump filtro che cattura pacchetti ICMPv6 Multicast Listener".

Sembra facile, vero?

Con un piccolo aiuto da parte di Google vi accorgerete che il "tipo" per il Multicast Listener è di 130, e il campo di tipo ICMPv6 è il primo byte nell'intestazione. Quindi questo dovrebbe essere facile come:

tcpdump-nn-p-v-s 0 icmp6 [0] = 130

tuttavia se si esegue il comando potrà tornare indietro:

tcpdump: IPv6 protocollo dello strato superiore non è supportata dal proto [x]

In altre parole, è possibile utilizzare "icmp6" per vedere tutti i pacchetti ICMPv6, ma non è possibile utilizzare per filtrare su uno dei campi di intestazione ICMPv6.

Quindi abbiamo bisogno di un "piano B". Capire piano B e hai risolto il problema. :)

ICMPv6 sfida

4 dicembre 2009

Building on the IPv6 challenge from last time, I have a new one for you: Write a tcpdump/windump filter which will capture ICMPv6 Multicast Listener packets.

Questo è tutto! Abbastanza facile, giusto? ;)

Weekend Challenge - Risposte

3 dicembre 2009

Bene ora il suo Giovedi così ho pensato il suo tempo per inviare le risposte alle sfide dello scorso weekend. ;)

In primo luogo, perché dovrebbe anche preoccuparsi IPv6 se non hai iniziato a distribuirlo? Ho sentito più o meno allo stesso modo fino a che ho trovato IPv6 viene utilizzato come canale di comunicazione nascosto all'interno della rete di un cliente. I dati sono stati poi essere spinto fuori a Internet tramite Teredo. Se non si ha familiarità con la tecnica, Scott Hogg ha alcuni post eccellente sull'argomento.

Quindi, anche se non si sta utilizzando IPv6, vale la pena di iniziare a tagliare la cura sulla tecnologia e guardare per esso sulla vostra rete locale.

Quindi, per esame, la sfida è stata:

Scrivi un filtro tcpdump o windump che catturerà tutto il traffico con un indirizzo di origine IPv6 del 2001: db8:: da 10 a 2001: db8:: 20.

Ci sono un paio di avvertimenti con la scrittura di questo filtro. I primi coperto nel post precedente. Quello finale, che io sapevo ma mai veramente pensato fosse un problema finchè ho iniziato a lavorare con IPv6 abbastanza pesante, è che tcpdump / windump solo consente di utilizzare 1, 2 o 4 byte maschere. Così, mentre ci piacerebbe risolvere questo problema con una prima presa di filtro "ip6 [8:14] =", non possiamo perché siamo limitati a 4 byte. Vi è infatti un modo per aggirare il problema, ma tornerò ad esso.

Quindi ecco il filtro che ho lavorato con:

(ip6[8:4]=0x20010db8 and ip6[12:4]=0 and ip6[16:4]=0 and (ip6[20:4]>=0×0010 and ip6[20:4]<=0050))

Po 'lungo, ma funziona. Elisabetta si avvicinò con una soluzione che è molto più elegante di mio:

src net 2001: DB8:: / 122 e ip6 [23]> = 0 × 10 & & ip6 [23] <= 0 × 20

Questo cominciando con il formato libpcap, lei è in grado di coniugare i miei primi tre affermazioni in una sola. Di non essere una regina dimensioni, ma che la rende la soluzione è molto più breve del mio. In questo caso che è una buona cosa. :)

Questo è tutto. Io postare un altro tipo di sfida IPv6 domani.