Come creare regole, cronologie e casi dagli eventi di Suricata utilizzando le app SIEM di Kibana

Introduzione

I tutorial precedenti in questa serie ti hanno guidato su come installare e configurare Suricata. Hanno anche spiegato come utilizzare Filebeat per inviare avvisi dal tuo server Suricata a un server Elastic Stack, da utilizzare con la sua funzionalità integrata di Gestione delle informazioni e degli eventi di sicurezza (SIEM).

In questo ultimo tutorial della serie, creerai regole personalizzate di Kibana e genererai avvisi all’interno dei dashboard SIEM di Kibana. Una volta che avrai regole in atto e comprenderai dove e come filtrare i log di Suricata utilizzando Kibana, esplorerai come creare e gestire casi utilizzando gli strumenti di analisi della timeline di Kibana.

Al termine di questo tutorial avrai un sistema SIEM che potrai utilizzare per tracciare e investigare sugli eventi di sicurezza su tutti i server della tua rete.

Prerequisiti

Se hai seguito questa serie di tutorial, dovresti già avere un server con almeno 4 GB di RAM e 2 CPU, e un utente non root configurato. Per gli scopi di questa guida, puoi configurare questo seguendo le nostre guide iniziali per la configurazione del server per Ubuntu 20.04, Debian 11, o Rocky Linux 8, a seconda del tuo sistema operativo preferito.

Avrai anche bisogno di Suricata installato e in esecuzione sul tuo server. Se devi installare Suricata sul tuo server, puoi farlo seguendo uno dei seguenti tutorial a seconda del tuo sistema operativo:

Avrai anche bisogno di un server in esecuzione su Elastic Stack e configurato in modo che Filebeat possa inviare i log dal tuo server Suricata a Elasticsearch. Se devi creare un server Elastic Stack, utilizza uno dei tutorial dalla seguente lista che corrisponde al tuo sistema operativo:

Assicurati di poter accedere a Kibana sul tuo server Elasticsearch e che ci siano eventi nei vari dashboard di Avvisi ed Eventi di Suricata.

Una volta che hai tutti i prerequisiti in atto, apri un tunnel SSH verso il tuo server Kibana e accedi a Kibana con il tuo browser utilizzando le credenziali che hai generato nel tutorial precedente.

Passaggio 1 — Abilitazione delle Chiavi API in Elasticsearch

Prima di poter creare regole, avvisi e timeline in Kibana, è necessario abilitare un’impostazione del modulo di sicurezza xpack.

Apri il tuo file /etc/elasticsearch/elasticsearch.yml con nano o il tuo editor preferito.

  1. sudo nano /etc/elasticsearch/elasticsearch.yml

Aggiungi la seguente linea evidenziata alla fine del file:

/etc/elasticsearch/elasticsearch.yml
. . .
discovery.type: single-node
xpack.security.enabled: true
xpack.security.authc.api_key.enabled: true

Salva e chiudi il file quando hai finito di modificare. Se stai utilizzando nano, puoi farlo con CTRL+X, poi Y e INVIO per confermare.

Ora riavvia Elasticsearch affinché la nuova impostazione abbia effetto.

  1. sudo systemctl restart elasticsearch.service

Ora sei pronto per configurare regole, esaminare avvisi e creare timeline e casi in Kibana.

Passaggio 2 — Aggiunta di Regole a Kibana

Per utilizzare la funzionalità SIEM di Kibana con i dati degli eventi Suricata, è necessario creare regole che genereranno avvisi sugli eventi in arrivo. Visita il Pannello Regole nella pagina dell’applicazione di sicurezza di Kibana per creare o importare regole.

A fini illustrativi, utilizzeremo le seguenti firme per rilevare il traffico diretto a un server su porte non corrispondenti (traffico SSH, HTTP e TLS rispettivamente):

Example Suricata Signature
alert ssh any any -> 203.0.113.5 !22 (msg:"SSH TRAFFIC on non-SSH port"; classtype: misc-attack; target: dest_ip; sid:1000000;)
alert ssh any any -> 2001:DB8::1/32 !22 (msg:"SSH TRAFFIC on non-SSH port"; classtype: misc-attack; target: dest_ip; sid:1000001;)

alert http any any -> 203.0.113.5 !80 (msg:"HTTP REQUEST on non-HTTP port"; classtype:misc-activity; sid:1000002;)
alert http any any -> 2001:DB8::1/32 !80 (msg:"HTTP REQUEST on non-HTTP port"; classtype:misc-activity; sid:1000003;)

alert tls any any -> 203.0.113.5 !443 (msg:"TLS TRAFFIC on non-TLS HTTP port"; classtype:misc-activity; sid:1000004;)
alert tls any any -> 2001:DB8::1/32 !443 (msg:"TLS TRAFFIC on non-TLS HTTP port"; classtype:misc-activity; sid:1000005;)

Se stai utilizzando firme personalizzate o quelle da un set di regole, assicurati di poter generare avvisi e di poter accedere agli eventi corrispondenti nei pannelli di controllo predefiniti di Suricata in Kibana.

Ora visita la pagina delle regole nell’applicazione Sicurezza di Kibana http://localhost:5601/app/security/rules/. Clicca sul pulsante Crea nuova regola in alto a destra della pagina.

Assicurati che sia selezionata la scheda del tipo di regola Query personalizzata. Scorri fino al campo di input Query personalizzata e incolla quanto segue:

Kibana Query Language Input
rule.id: "1000000" or rule.id :"1000001"

Assicurati che i valori del tuo rule.id corrispondano al valore sid di Suricata per l’attacco o gli attacchi su cui desideri ricevere un avviso.

Cambia il menu a discesa Anteprima rapida della query su Ultimo mese e poi clicca su Anteprima risultati. Se hai eventi corrispondenti nei tuoi registri di Suricata, la pagina si aggiornerà mostrando un grafico che indica gli avvisi dell’ultimo mese. La tua pagina dovrebbe assomigliare allo screenshot seguente:

Clicca su Continua per procedere aggiungendo un nome nel campo Nome regola, che è richiesto per ogni regola che aggiungi. Aggiungi un nome nel campo Nome regola. In questo esempio useremo la descrizione del messaggio della regola di Suricata TRAFICO SSH su porta non-SSH. Aggiungi anche una descrizione per la regola. In questo esempio useremo Controlla i tentativi di connessione SSH su porte non standard.

Puoi anche espandere la sezione Impostazioni avanzate e aggiungere dettagli sulla regola. Ad esempio, potresti aggiungere una spiegazione su come gestire un avviso generato dalla regola o collegare ad articoli di ricercatori di sicurezza su un particolare tipo di attacco.

Quando hai finito di aggiungere il nome della regola, la descrizione e i campi extra opzionali, clicca su Continua per procedere al Passaggio 3 della creazione della regola.

Lascia le impostazioni della sezione successiva Programma regola con i valori predefiniti e clicca su Continua.

Infine, sul passaggio Azioni della regola, clicca su Crea e attiva la regola.

Verrai reindirizzato a una nuova pagina che mostra i dettagli della regola:

Nota: Potrebbe volerci qualche minuto perché i dati di avviso vengano popolati inizialmente. Questo ritardo è dovuto al fatto che la pianificazione predefinita della regola è di eseguire ogni 5 minuti.

Se ci sono altre regole Suricata di cui desideri ricevere avvisi, ripeti i passaggi sopra, sostituendo il sid della firma nel campo di query personalizzato rule.id di Kibana.

Una volta che hai una o più regole in atto, sei pronto a procedere al passaggio successivo, dove esaminerai gli avvisi e creerai uno o più casi per gestirli.

Ora che hai configurato una regola o regole per generare avvisi nell’applicazione SIEM di Kibana, avrai bisogno di un modo per raggruppare e gestire ulteriormente gli avvisi. Per iniziare, visita il cruscotto degli avvisi di Kibana: http://127.0.0.1:5601/app/security/alerts.

Assicurati di aver generato qualche traffico non valido che corrisponda alla firma o alle firme Suricata che stai utilizzando. Ad esempio, potresti attivare la regola Suricata di esempio sid:1000000 eseguendo un comando simile al seguente dal tuo computer locale:

  1. ssh -p 80 your_server_ip

Questo comando cercherà di connettersi al tuo server utilizzando SSH sulla porta 80, anziché sulla porta predefinita 22 e dovrebbe attivare un avviso. Potrebbero passare alcuni minuti perché l’avviso compaia in Kibana, poiché deve essere elaborato da Elasticsearch e dalla regola che hai creato in Kibana.

Successivamente, aggiungerai il campo comnunity_id alla tabella degli avvisi visualizzata nella parte inferiore della pagina. Ricorda dal primo tutorial che questo campo è generato da Suricata e rappresenta gli indirizzi IP unici e le porte contenute in un flusso di rete. Fai clic sul pulsante Fields e nella finestra modale che compare, inserisci network.community_id e poi spunta la casella accanto al nome del campo:

Chiudi la finestra modale e il campo verrà aggiunto alla tabella degli avvisi. Ora passa sopra a uno qualsiasi degli avvisi con lo stesso valore di community_id e fai clic sull’icona Add to timeline investigation. Questo garantirà che tutti gli avvisi che condividono il community_id che Suricata ha aggiunto all’evento vengano aggiunti a una timeline per ulteriori indagini:

Successivo clicca sul link Cronologia senza titolo in basso a sinistra del tuo browser. Questo link ti porterà a una pagina che mostra solo gli avvisi con il campo community_id di Suricata che desideri investigare.

La pagina della cronologia ti mostra più dettagli sui singoli pacchetti associati a un avviso o flusso di rete. Puoi utilizzare la cronologia per avere un’idea migliore di quando è iniziato un flusso di rete sospetto, da dove è originato e quanto è durato.

Clicca sul pulsante Tutte le fonti di dati sul lato destro della pagina e seleziona il pulsante Avvisi di rilevamento, poi clicca su Salva. Questa opzione limiterà la cronologia a mostrare solo gli avvisi generati da Kibana. Senza questa opzione, gli avvisi di Suricata saranno inclusi anche nella cronologia.

Per salvare la tua nuova cronologia, clicca sull’icona matita in alto a sinistra della pagina della cronologia. La seguente schermata evidenzia dove trovare l’icona matita e il pulsante Tutte le fonti di dati:

Puoi aggiungere del testo al campo descrizione se ci sono informazioni aggiuntive che desideri aggiungere alla cronologia. Una volta terminata la modifica del nome e della descrizione della cronologia, clicca sul pulsante Salva in basso a destra della finestra modale.

Ripeti i passaggi sopra per creare delle cronologie per altri avvisi che desideri esaminare più approfonditamente in seguito.

Nel prossimo passaggio, utilizzerai le tue visualizzazioni della cronologia degli eventi per collegare gli avvisi all’app Casi di Kibana nella suite di strumenti SIEM.

Passo 4 — Creazione e Gestione dei Casi SIEM

Nel passo precedente, hai creato una timeline per raggruppare singoli avvisi e pacchetti in base al campo community_id di Suricata. In questa sezione del tutorial, creerai un Caso per tracciare e gestire gli avvisi nella tua timeline.

Per creare un nuovo caso dalla tua timeline, assicurati di essere su una pagina della timeline nel tuo browser. Fai clic sul pulsante Allega al caso in alto a destra della pagina della timeline, e poi sul pulsante Allega a nuovo caso dalla lista che appare.

Sarai reindirizzato a una pagina dove puoi inserire informazioni sull’incidente che stai investigando. Nella seguente immagine di esempio, il caso è relativo agli avvisi di Traffico SSH di esempio su una porta non-SSH:

Compila i campi con un nome descrittivo e un tag o tag opzionale. In questo esempio, il nome del caso è TRAFICO SSH su porta non-SSH da 203.0.113.5 poiché si tratta del tipo specifico di traffico e host che stiamo investigando. Con molti eventi da investigare nel sistema SIEM, uno schema di denominazione come questo ti aiuterà a tenere traccia dei casi, delle timeline e degli avvisi poiché il nome corrisponderà all’avviso di Kibana e al campo di messaggio della firma di Suricata.

Vai in fondo alla pagina e clicca sul pulsante Crea caso. Il tuo browser sarà su una pagina che mostra il caso salvato. Puoi aggiungere commenti in formato Markdown con informazioni aggiuntive, così come modificare il caso da questa pagina.

Successivamente, clicca sul link nella descrizione per andare alla timeline del caso che hai aggiunto nel passaggio precedente di questo tutorial.

Per ogni avviso che desideri includere nel caso, clicca sull’icona Altre azioni sull’avviso. Clicca su Aggiungi a caso esistente.

Clicca sul nome del caso nel modal che appare per aggiungere l’avviso al caso. Assicurati di selezionare il caso che corrisponde alla timeline e agli avvisi che stai investigando. Ripeti l’aggiunta di ciascun avviso nella lista al caso esistente.

Ora visita nuovamente l’app Casi in Kibana](http://localhost:5601/app/security/cases) utilizzando il menu di navigazione sul lato sinistro della pagina. Clicca sul tuo caso e nota come gli avvisi che hai aggiunto sono elencati nei dettagli del caso:

Da qui puoi scorrere fino in fondo al caso e aggiungere qualsiasi informazione aggiuntiva desideri. Ad esempio, qualsiasi passo che hai compiuto per investigare un avviso o avvisi, modifiche alla configurazione di Suricata come una nuova regola o regola modificata, escalation a un altro membro del team o qualsiasi altra cosa rilevante per il caso.

Una volta che ti senti a tuo agio nel creare casi per i vari tipi di avvisi che desideri monitorare, puoi ora utilizzare gli strumenti SIEM di Kibana per organizzare e coordinare l’indagine su qualsiasi avviso in un’unica posizione centrale.

Conclusione

In questo tutorial hai ampliato il tuo sistema SIEM Suricata ed Elastic Stack esistente aggiungendo regole a Kibana che generano avvisi riguardo a specifici flussi di traffico di interesse. Hai anche creato una timeline o più timeline per raggruppare insiemi di avvisi basati sul loro community_id. Infine, hai creato un caso e collegato la tua timeline ad esso, insieme agli avvisi individuali di interesse.

Con questo sistema SIEM in atto, puoi ora tracciare eventi di sicurezza attraverso i tuoi sistemi praticamente a qualsiasi scala. Man mano che diventi più familiare con Suricata e tracci gli avvisi che genera nel tuo SIEM Kibana, sarai in grado di personalizzare gli avvisi di Suricata e le azioni predefinite che prende per adattarle alla tua rete particolare.

Per ulteriori informazioni sugli strumenti SIEM di Kibana, visita la Documentazione Ufficiale di Sicurezza Elastic. Le guide lì spiegano come utilizzare Regole, Avvisi, Timelines e Casi in modo molto più dettagliato.

Per un’interfaccia SIEM più leggera, potresti anche essere interessato a EveBox, che presenta tutti i dati degli eventi di Suricata e la funzionalità SIEM su una singola pagina.

Source:
https://www.digitalocean.com/community/tutorials/how-to-create-rules-timelines-and-cases-from-suricata-events-using-kibana-s-siem-apps