Come Costruire un SIEM con Suricata ed Elastic Stack su Rocky Linux 8

Introduzione

I tutorial precedenti di questa serie ti hanno guidato nell’installazione, configurazione ed esecuzione di Suricata come sistema di rilevamento delle intrusioni (IDS) e di prevenzione delle intrusioni (IPS). Hai anche imparato le regole di Suricata e come crearne di nuove.

In questo tutorial esplorerai come integrare Suricata con Elasticsearch, Kibana e Filebeat per iniziare a creare il tuo strumento di gestione delle informazioni e degli eventi di sicurezza (SIEM) utilizzando l’insieme Elastic e Rocky Linux 8. Gli strumenti SIEM vengono utilizzati per raccogliere, aggregare, archiviare e analizzare i dati degli eventi per cercare minacce alla sicurezza e attività sospette sulle tue reti e server.

I componenti che utilizzerai per creare il tuo SIEM sono:

  • Elasticsearch per archiviare, indicizzare, correlare e cercare gli eventi di sicurezza che provengono dal tuo server Suricata.
  • Kibana per visualizzare e navigare tra i log degli eventi di sicurezza archiviati in Elasticsearch.
  • Filebeat per analizzare il file di log eve.json di Suricata e inviare ciascun evento a Elasticsearch per l’elaborazione.
  • Suricata per analizzare il traffico di rete alla ricerca di eventi sospetti e, eventualmente, registrare o eliminare i pacchetti non validi.

Prima installerai e configurerai Elasticsearch e Kibana con alcune impostazioni di autenticazione specifiche. Successivamente aggiungerai Filebeat al tuo sistema Suricata per inviare i suoi registri eve.json a Elasticsearch.

Infine, imparerai come connetterti a Kibana usando SSH e il tuo browser web, e quindi caricare e interagire con i dashboard di Kibana che mostrano gli eventi e gli avvisi di Suricata.

Prerequisiti

Se hai seguito questa serie di tutorial, dovresti già avere Suricata in esecuzione su un server Rocky Linux. Questo server sarà indicato come il tuo server Suricata.

Avrai anche bisogno di un secondo server per ospitare Elasticsearch e Kibana. Questo server sarà indicato come il tuo server Elasticsearch. Dovrebbe essere un server Rocky Linux 8 con:

Ai fini di questo tutorial, entrambi i server dovrebbero essere in grado di comunicare utilizzando indirizzi IP privati. Puoi utilizzare una VPN come WireGuard per connettere i tuoi server, oppure utilizzare un fornitore di servizi cloud che abbia una rete privata tra gli host. Puoi anche scegliere di eseguire Elasticsearch, Kibana, Filebeat e Suricata sullo stesso server per sperimentare.

Passaggio 1 — Installazione di Elasticsearch e Kibana

Il primo passaggio in questo tutorial è installare Elasticsearch e Kibana sul tuo server Elasticsearch. Per iniziare, aggiungi la chiave GPG di Elastic al tuo server con il seguente comando:

  1. sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Successivamente, crea un file elasticsearch.repo nella directory /etc/yum/yum.repos.d con i seguenti contenuti, utilizzando vi o il tuo editor preferito. Ciò garantisce che verranno utilizzati i repository Elasticsearch upstream durante l’installazione di nuovi pacchetti tramite yum:

  1. sudo vi /etc/yum.repos.d/elasticsearch.repo
/etc/yum.repos.d/elasticsearch.repo
[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md

Se stai utilizzando vi, quando hai finito di apportare modifiche, premi ESC e quindi :x per scrivere le modifiche nel file e uscire.

Ora installa Elasticsearch e Kibana utilizzando il comando dnf. Premi Y per accettare eventuali prompt relativi alle impronte digitali delle chiavi GPG:

  1. sudo dnf install --enablerepo=elasticsearch elasticsearch kibana

L’opzione --enablerepo viene utilizzata per sovrascrivere l’impostazione predefinita disabilitata nel file /etc/yum.repos.d/elasticsearch.repo. Questo approccio garantisce che i pacchetti Elasticsearch e Kibana non vengano aggiornati accidentalmente quando si installano altri aggiornamenti dei pacchetti sul server.

Una volta completata l’installazione dei pacchetti, trova e registra l’indirizzo IP privato del tuo server utilizzando il comando ip address show:

  1. ip -brief address show

Riceverai un output simile al seguente:

Output
lo UNKNOWN 127.0.0.1/8 ::1/128 eth0 UP 159.89.122.115/20 10.20.0.8/16 2604:a880:cad:d0::e56:8001/64 fe80::b832:69ff:fe46:7e5d/64 eth1 UP 10.137.0.5/16 fe80::b883:5bff:fe19:43f3/64

L’interfaccia di rete privata in questo output è il dispositivo eth1 evidenziato, con l’indirizzo IPv4 10.137.0.5. Il nome del dispositivo e gli indirizzi IP saranno diversi. Indipendentemente dal nome del dispositivo e dall’indirizzo IP privato, l’indirizzo sarà tratto dai seguenti blocchi riservati:

  • 10.0.0.0 a 10.255.255.255 (prefisso 10/8)
  • 172.16.0.0 a 172.31.255.255 (prefisso 172.16/12)
  • 192.168.0.0 a 192.168.255.255 (prefisso 192.168/16)

Se desideri saperne di più su come sono allocati questi blocchi, visita la specifica RFC 1918.

Registra l’indirizzo IP privato del tuo server Elasticsearch (in questo caso 10.137.0.5). Questo indirizzo sarà chiamato your_private_ip nel resto di questo tutorial. Nota anche il nome dell’interfaccia di rete, in questo caso eth1. Nella prossima parte di questo tutorial configurerai Elasticsearch e Kibana per ascoltare le connessioni sull’indirizzo IP privato proveniente dal tuo server Suricata.

Passaggio 2 — Configurazione di Elasticsearch

Elasticsearch è configurato per accettare solo connessioni locali per impostazione predefinita. Inoltre, non ha abilitata alcuna autenticazione, quindi strumenti come Filebeat non saranno in grado di inviare log ad esso. In questa sezione del tutorial configurerai le impostazioni di rete per Elasticsearch e abiliterai il modulo di sicurezza xpack integrato in Elasticsearch.

Configurazione della rete Elasticsearch

Dato che i tuoi server Elasticsearch e Suricata sono separati, dovrai configurare Elasticsearch per ascoltare le connessioni sulla sua interfaccia di rete privata.

Apri il file /etc/elasticsearch/elasticsearch.yml utilizzando vi o il tuo editor preferito:

  1. sudo vi /etc/elasticsearch/elasticsearch.yml

Trova la riga commentata #network.host: 192.168.0.1 tra le righe 50 e 60 e aggiungi una nuova riga dopo di essa che configura l’impostazione network.bind_host, come evidenziato di seguito:

# Per impostazione predefinita, Elasticsearch è accessibile solo su localhost. Imposta un diverso
# indirizzo qui per esporre questo nodo sulla rete:
#
#network.host: 192.168.0.1
network.bind_host: ["127.0.0.1", "your_private_ip"]
#
# Per impostazione predefinita, Elasticsearch ascolta il traffico HTTP sulla prima porta libera che
# trova a partire dalla porta 9200. Imposta qui una porta HTTP specifica:

Sostituisci il tuo indirizzo IP privato al posto dell’indirizzo your_private_ip. Questa riga garantirà che Elasticsearch sia ancora disponibile sul suo indirizzo locale in modo che Kibana possa raggiungerlo, oltre che sull’indirizzo IP privato per il tuo server.

Successivamente, vai alla fine del file utilizzando il comando vi SHIFT+G.

Aggiungi le seguenti righe evidenziate alla fine del file:

. . .
discovery.type: single-node
xpack.security.enabled: true

Impostando il valore di discovery.type è possibile far funzionare Elasticsearch come singolo nodo, invece che in un cluster di altri server Elasticsearch. Impostando xpack.security.enabled si attivano alcune delle funzionalità di sicurezza incluse con Elasticsearch.

Salva e chiudi il file quando hai finito di modificarlo.

Infine, aggiungi regole del firewall per garantire che il tuo server Elasticsearch sia raggiungibile sulla sua interfaccia di rete privata. Se hai seguito i tutorial preliminari e stai utilizzando firewalld, esegui i seguenti comandi:

  1. sudo firewall-cmd --permanent --zone=internal --change-interface=eth1
  2. sudo firewall-cmd --permanent --zone=internal --add-service=elasticsearch
  3. sudo firewall-cmd --permanent --zone=internal --add-service=kibana
  4. sudo systemctl reload firewalld.service

Sostituisci il nome dell’interfaccia della tua rete privata al posto di eth1 nel primo comando se il tuo è diverso. Quel comando cambia le regole dell’interfaccia per utilizzare la zona internal di Firewalld, che è più permissiva rispetto alla zona predefinita public.

I comandi successivi aggiungono regole per consentire il traffico di Elasticsearch sulla porta 9200 e 9300, insieme al traffico di Kibana sulla porta 5601.

Il comando finale ricarica il servizio Firewalld con le nuove regole permanenti in atto.

Successivamente avvierai il demone Elasticsearch e quindi configurerai le password per l’uso del modulo di sicurezza xpack.

Avvio di Elasticsearch

Ora che hai configurato la rete e le impostazioni di sicurezza xpack per Elasticsearch, devi avviarlo affinché le modifiche abbiano effetto.

Esegui il seguente comando systemctl per avviare Elasticsearch:

  1. sudo systemctl start elasticsearch.service

Una volta che Elasticsearch ha finito di avviarsi, puoi procedere alla sezione successiva di questo tutorial dove genererai le password per gli utenti predefiniti integrati in Elasticsearch.

Configurazione delle Password di Elasticsearch

Ora che hai abilitato l’impostazione xpack.security.enabled, devi generare le password per gli utenti predefiniti di Elasticsearch. Elasticsearch include un’utilità nella directory /usr/share/elasticsearch/bin che può generare automaticamente password casuali per questi utenti.

Esegui il seguente comando per cd alla directory e poi genera password casuali per tutti gli utenti predefiniti:

  1. cd /usr/share/elasticsearch/bin
  2. sudo ./elasticsearch-setup-passwords auto

Riceverai un output simile al seguente. Quando ti verrà chiesto di continuare, premi y e poi RETURN o ENTER:

Initiating the setup of passwords for reserved users elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.
The passwords will be randomly generated and printed to the console.
Please confirm that you would like to continue [y/N]y


Changed password for user apm_system
PASSWORD apm_system = eWqzd0asAmxZ0gcJpOvn

Changed password for user kibana_system
PASSWORD kibana_system = 1HLVxfqZMd7aFQS6Uabl

Changed password for user kibana
PASSWORD kibana = 1HLVxfqZMd7aFQS6Uabl

Changed password for user logstash_system
PASSWORD logstash_system = wUjY59H91WGvGaN8uFLc

Changed password for user beats_system
PASSWORD beats_system = 2p81hIdAzWKknhzA992m

Changed password for user remote_monitoring_user
PASSWORD remote_monitoring_user = 85HF85Fl6cPslJlA8wPG

Changed password for user elastic
PASSWORD elastic = 6kNbsxQGYZ2EQJiqJpgl

Non sarai in grado di eseguire nuovamente l’utilità, quindi assicurati di registrare queste password in un luogo sicuro. Avrai bisogno di utilizzare la password dell’utente kibana_system nella prossima sezione di questo tutorial e la password dell’utente elastic nel passaggio Configurazione di Filebeat di questo tutorial.

A questo punto nel tutorial hai finito di configurare Elasticsearch. La prossima sezione spiega come configurare le impostazioni di rete di Kibana e il suo modulo di sicurezza xpack.

Passaggio 3 — Configurazione di Kibana

Nella sezione precedente di questo tutorial, hai configurato Elasticsearch per ascoltare le connessioni sull’indirizzo IP privato del tuo server Elasticsearch. Dovrai fare lo stesso per Kibana in modo che Filebeats sul tuo server Suricata possano raggiungerlo.

Prima attiverai la funzionalità di sicurezza xpack di Kibana generando alcuni segreti che Kibana utilizzerà per memorizzare i dati in Elasticsearch. Successivamente, configurerai le impostazioni di rete e le informazioni di autenticazione di Kibana per connettersi a Elasticsearch.

Abilitare xpack.security in Kibana

Per iniziare con le impostazioni di sicurezza xpack in Kibana, è necessario generare alcune chiavi di crittografia. Kibana utilizza queste chiavi per memorizzare i dati di sessione (come i cookie), nonché vari dashboard salvati e visualizzazioni dei dati in Elasticsearch.

È possibile generare le chiavi di crittografia richieste utilizzando l’utilità kibana-encryption-keys inclusa nella directory /usr/share/kibana/bin. Esegui quanto segue per cd nella directory e quindi generare le chiavi:

  1. cd /usr/share/kibana/bin/
  2. sudo ./kibana-encryption-keys generate -q --force

Il flag -q sopprime le istruzioni del tool, e il flag --force assicurerà che tu crei nuove chiavi. Dovresti ricevere un output simile al seguente:

Output
xpack.encryptedSavedObjects.encryptionKey: 66fbd85ceb3cba51c0e939fb2526f585 xpack.reporting.encryptionKey: 9358f4bc7189ae0ade1b8deeec7f38ef xpack.security.encryptionKey: 8f847a594e4a813c4187fa93c884e92b

Copia queste tre chiavi in un luogo sicuro. Ora le aggiungerai al file di configurazione /etc/kibana/kibana.yml di Kibana.

Apri il file utilizzando vi o il tuo editor preferito:

  1. sudo vi /etc/kibana/kibana.yml

Vai alla fine del file utilizzando la scorciatoia SHIFT+G di vi. Incolla le tre righe xpack che hai copiato alla fine del file:

/etc/kibana/kibana.yml
. . .

# Specifica la localizzazione da utilizzare per tutte le stringhe localizzabili, le date e i formati numerici.
# Le lingue supportate sono le seguenti: Inglese - en, di default, Cinese - zh-CN.
#i18n.locale: "en"

xpack.encryptedSavedObjects.encryptionKey: 66fbd85ceb3cba51c0e939fb2526f585
xpack.reporting.encryptionKey: 9358f4bc7189ae0ade1b8deeec7f38ef
xpack.security.encryptionKey: 8f847a594e4a813c4187fa93c884e92b

Mantieni il file aperto e procedi alla sezione successiva dove configurerai le impostazioni di rete di Kibana.

Configurazione della rete di Kibana

Per configurare la rete di Kibana in modo che sia disponibile sull’indirizzo IP privato del tuo server Elasticsearch, trova la linea commentata #server.host: "localhost" in /etc/kibana/kibana.yml. La linea si trova all’inizio del file. Aggiungi una nuova linea dopo di essa con l’indirizzo IP privato del tuo server, come evidenziato di seguito:

/etc/kibana/kibana.yml
# Kibana è servita da un server back-end. Questa impostazione specifica la porta da utilizzare.
#server.port: 5601

# Specifica l'indirizzo a cui il server Kibana si legherà. Sia gli indirizzi IP che i nomi host sono valori validi.
# Il valore predefinito è 'localhost', che di solito significa che le macchine remote non saranno in grado di connettersi.
# Per consentire le connessioni dagli utenti remoti, imposta questo parametro su un indirizzo non di loopback.
#server.host: "localhost"
server.host: "your_private_ip"

Sostituisci il tuo IP privato al posto dell’indirizzo your_private_ip.

Salva e chiudi il file quando hai finito di modificarlo. Successivamente, dovrai configurare il nome utente e la password che Kibana utilizza per connettersi a Elasticsearch.

Configurazione delle credenziali di Kibana

Ci sono due modi per impostare il nome utente e la password che Kibana utilizza per autenticarsi su Elasticsearch. Il primo è modificare il file di configurazione /etc/kibana/kibana.yml e aggiungere i valori lì. Il secondo metodo è memorizzare i valori nel keystore di Kibana, che è un file oscurato che Kibana può utilizzare per memorizzare i segreti.

Useremo il metodo keystore in questo tutorial poiché evita di modificare direttamente il file di configurazione di Kibana.

Se preferisci modificare il file invece, le impostazioni da configurare in esso sono elasticsearch.username e elasticsearch.password.

Se scegli di modificare il file di configurazione, salta il resto dei passaggi in questa sezione.

Per aggiungere un segreto al keystore utilizzando l’utilità kibana-keystore, prima cd nella directory /usr/share/kibana/bin. Successivamente, esegui il seguente comando per impostare il nome utente per Kibana:

  1. cd /usr/share/kibana/bin
  2. sudo ./kibana-keystore add elasticsearch.username

Riceverai un prompt simile al seguente:

Username Entry
Enter value for elasticsearch.username: *************

Inserisci kibana_system quando richiesto, sia copiando e incollando che digitando attentamente il nome utente. Ogni carattere che digiti verrà mascherato con un carattere asterisco *. Premi ENTER o RETURN quando hai finito di inserire il nome utente.

Adesso ripeti il processo, questa volta per salvare la password. Assicurati di copiare la password per l’utente kibana_system che hai generato nella sezione precedente di questo tutorial. Per riferimento, in questo tutorial l’esempio di password è 1HLVxfqZMd7aFQS6Uabl.

Esegui il seguente comando per impostare la password:

  1. sudo ./kibana-keystore add elasticsearch.password

Quando richiesto, incolla la password per evitare errori di trascrizione:

Password Entry
Enter value for elasticsearch.password: ********************

Avvio di Kibana

Ora che hai configurato la rete e le impostazioni di sicurezza xpack per Kibana, e hai aggiunto le credenziali allo store di chiavi, devi avviarlo affinché le modifiche abbiano effetto.

Esegui il seguente comando systemctl per riavviare Kibana:

  1. sudo systemctl start kibana.service

Una volta avviato Kibana, puoi continuare alla prossima sezione di questo tutorial dove configurerai Filebeat sul tuo server Suricata per inviare i suoi log a Elasticsearch.

Passaggio 4 — Installazione di Filebeat

Ora che i tuoi processi Elasticsearch e Kibana sono configurati con le impostazioni di rete e autenticazione corrette, il passaggio successivo è installare e configurare Filebeat sul tuo server Suricata.

Per iniziare l’installazione di Filebeat, aggiungi la chiave GPG di Elastic al tuo server Suricata con il seguente comando:

  1. sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Successivamente, crea un file elasticsearch.repo nella directory /etc/yum/yum.repos.d con il seguente contenuto, utilizzando vi o il tuo editor preferito:

  1. sudo vi /etc/yum.repos.d/elasticsearch.repo
/etc/yum.repos.d/elasticsearch.repo
[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md

Quando hai finito di apportare le modifiche, salva e esci dal file. Ora installa il pacchetto Filebeat utilizzando il comando dnf:

  1. sudo dnf install --enablerepo=elasticsearch filebeat

Successivamente, dovrai configurare Filebeat per connettersi sia a Elasticsearch che a Kibana. Apri il file di configurazione /etc/filebeat/filebeat.yml utilizzando vi o il tuo editor preferito:

  1. sudo vi /etc/filebeat/filebeat.yml

Trova la sezione Kibana del file intorno alla riga 100. Aggiungi una riga dopo la riga commentata #host: "localhost:5601" che punta all’indirizzo IP privato e alla porta dell’istanza Kibana:

/etc/filebeat/filebeat.yml
. . .
# A partire dalla versione 6.0.0 di Beats, i dashboard vengono caricati tramite l'API di Kibana.
# Questo richiede una configurazione dell'endpoint Kibana.
setup.kibana:

  # Host Kibana
  # Lo schema e la porta possono essere omessi e verranno impostati sul valore predefinito (http e 5601)
  # Nel caso in cui specifichi un percorso aggiuntivo, è richiesto lo schema: http://localhost:5601/percorso
  # Gli indirizzi IPv6 devono sempre essere definiti come: https://[2001:db8::1]:5601
  #host: "localhost:5601"
  host: "your_private_ip:5601"

. . .

Questo cambiamento garantirà che Filebeat possa connettersi a Kibana per creare i vari indici SIEM, dashboard e pipeline di elaborazione in Elasticsearch per gestire i log di Suricata.

Successivamente, trova la sezione Output Elasticsearch del file circa alla riga 130 e modifica le impostazioni hosts, username e password in modo che corrispondano ai valori del tuo server Elasticsearch:

output.elasticsearch:
  # Array degli host a cui connettersi.
  hosts: ["your_private_ip:9200"]

  # Protocollo - o `http` (predefinito) o `https`.
  #protocol: "https"

  # Credenziali di autenticazione - API key o nome utente/password.
  #api_key: "id:api_key"
  username: "elastic"
password: "6kNbsxQGYZ2EQJiqJpgl"

. . .

Sostituisci con l’indirizzo IP privato del tuo server Elasticsearch sulla riga hosts. Rimuovi il commento dal campo username e lascialo impostato sull’utente elastic. Cambia il valore del campo password da changeme alla password per l’utente elastic che hai generato nella sezione Configurazione delle Password di Elasticsearch di questo tutorial.

Salva e chiudi il file quando hai finito di modificarlo. Successivamente, abilita il modulo Suricata integrato di Filebeat con il seguente comando:

  1. sudo filebeat modules enable suricata

Ora che Filebeat è configurato per connettersi a Elasticsearch e Kibana, con il modulo Suricata abilitato, il prossimo passo è caricare le dashboard e le pipeline SIEM in Elasticsearch.

Esegui il comando filebeat setup. Potrebbe richiedere alcuni minuti per caricare tutto:

  1. sudo filebeat setup

Una volta che il comando è terminato, dovresti ricevere un output simile al seguente:

Output
Overwriting ILM policy is disabled. Set `setup.ilm.overwrite: true` for enabling. Index setup finished. Loading dashboards (Kibana must be running and reachable) Loaded dashboards Setting up ML using setup --machine-learning is going to be removed in 8.0.0. Please use the ML app instead. See more: https://www.elastic.co/guide/en/machine-learning/current/index.html It is not possble to load ML jobs into an Elasticsearch 8.0.0 or newer using the Beat. Loaded machine learning job configurations Loaded Ingest pipelines

Se non ci sono errori, utilizza il comando systemctl per avviare Filebeat. Inizierà a inviare eventi dal registro eve.json di Suricata a Elasticsearch una volta che sarà in esecuzione.

  1. sudo systemctl start filebeat.service

Ora che hai configurato Filebeat, Kibana ed Elasticsearch per elaborare i tuoi log di Suricata, l’ultimo passaggio di questo tutorial è quello di connettersi a Kibana ed esplorare i pannelli SIEM.

Passaggio 5 — Navigare nei pannelli SIEM di Kibana

Kibana è il componente grafico dello stack Elastic. Utilizzerai Kibana con il tuo browser per esplorare i dati sugli eventi e gli alert di Suricata. Poiché hai configurato Kibana per essere disponibile solo tramite l’indirizzo IP privato del tuo server Elasticsearch, dovrai utilizzare un tunnel SSH per connetterti a Kibana.

Connessione a Kibana con SSH

SSH ha un’opzione -L che ti consente di inoltrare il traffico di rete su una porta locale sulla sua connessione a un indirizzo IP e una porta remoti su un server. Utilizzerai questa opzione per inoltrare il traffico dal tuo browser alla tua istanza di Kibana.

Su Linux, macOS e versioni aggiornate di Windows 10 e superiori, puoi utilizzare il client SSH integrato per creare il tunnel. Utilizzerai questo comando ogni volta che desideri connetterti a Kibana. Puoi chiudere questa connessione in qualsiasi momento e quindi eseguire nuovamente il comando SSH per ristabilire il tunnel.

Esegui il seguente comando in un terminale sul tuo computer desktop o laptop locale per creare il tunnel SSH verso Kibana:

  1. ssh -L 5601:your_private_ip:5601 sammy@203.0.113.5 -N

I vari argomenti per SSH sono:

  • Il flag -L inoltra il traffico al tuo sistema locale sulla porta 5601 al server remoto.
  • La parte your_private_ip:5601 del comando specifica il servizio sul tuo server Elasticsearch dove verrà inoltrato il traffico. In questo caso quel servizio è Kibana. Assicurati di sostituire l’indirizzo IP privato del tuo server Elasticsearch al posto di your_private_ip.
  • L’indirizzo 203.0.113.5 è l’indirizzo IP pubblico che utilizzi per connetterti e amministrare il tuo server. Sostituisci l’indirizzo IP pubblico del tuo server Elasticsearch al suo posto.
  • Il flag -N istruisce SSH a non eseguire un comando come una shell interattiva /bin/bash, e invece mantenere aperta solo la connessione. Viene generalmente utilizzato quando si inoltrano porte come in questo esempio.

Se desideri chiudere il tunnel in qualsiasi momento, premi CTRL+C.

Su Windows, il tuo terminale dovrebbe assomigliare alla seguente schermata:

Nota: Potresti essere invitato a inserire una password se non stai utilizzando una chiave SSH. Digita o incolla la password nel prompt e premi INVIO o RITORNO.

Su macOS e Linux, il tuo terminale sarà simile allo screenshot seguente:

Una volta connesso al tuo server Elasticsearch tramite SSH con il port forwarding attivo, apri il browser e visita http://127.0.0.1:5601. Sarai reindirizzato alla pagina di accesso di Kibana:

Se il tuo browser non può connettersi a Kibana, riceverai un messaggio simile al seguente nel tuo terminale:

Output
channel 3: open failed: connect failed: No route to host

Questo errore indica che il tunnel SSH non riesce a raggiungere il servizio Kibana sul tuo server. Assicurati di aver specificato l’indirizzo IP privato corretto per il tuo server Elasticsearch e ricarica la pagina nel tuo browser.

Accedi al tuo server Kibana utilizzando elastic come Nome utente e la password che hai copiato in precedenza in questo tutorial per l’utente.

Esplorazione dei dashboard SIEM di Kibana

Una volta effettuato l’accesso a Kibana, puoi esplorare i dashboard Suricata che Filebeat ha configurato per te.

Nel campo di ricerca nella parte superiore della pagina di benvenuto di Kibana, inserisci i termini di ricerca type:dashboard suricata. Questa ricerca restituirà due risultati: i dashboard Eventi Suricata e Allarmi Suricata come nello screenshot seguente:

Clicca sul risultato [Filebeat Suricata] Panoramica degli eventi per visitare il cruscotto Kibana che mostra una panoramica di tutti gli eventi Suricata registrati:

Per visitare il cruscotto degli Allarmi Suricata, ripeti la ricerca o clicca sul link Allarmi incluso nel cruscotto degli Eventi. La tua pagina dovrebbe assomigliare alla seguente schermata:

Se desideri ispezionare gli eventi e gli allarmi visualizzati da ciascun cruscotto, scorri fino in fondo alla pagina dove troverai una tabella che elenca ogni evento e allarme. Puoi espandere ogni voce per visualizzare l’ingresso di registro originale da Suricata e esaminare in dettaglio i vari campi come indirizzi IP di origine e destinazione per un allarme, il tipo di attacco, l’ID della firma di Suricata e altri.

Kibana ha anche un insieme integrato di cruscotti di sicurezza a cui puoi accedere utilizzando il menu sul lato sinistro della finestra del browser. Naviga fino al cruscotto Rete per una panoramica degli eventi visualizzati su una mappa, oltre a dati aggregati sugli eventi sulla tua rete. Il tuo cruscotto dovrebbe assomigliare alla seguente schermata:

Puoi scorrere fino in fondo al cruscotto di Rete per una tabella che elenca tutti gli eventi che corrispondono al tuo periodo di ricerca specificato. Puoi anche esaminare ogni evento in dettaglio o selezionare un evento per generare una timeline di Kibana, che puoi poi utilizzare per investigare flussi di traffico specifici, allarmi o ID della comunità.

Conclusion

In questo tutorial hai installato e configurato Elasticsearch e Kibana su un server autonomo. Hai configurato entrambi gli strumenti per essere disponibili su un indirizzo IP privato. Hai inoltre configurato le impostazioni di autenticazione di Elasticsearch e Kibana utilizzando il modulo di sicurezza xpack incluso in ciascuno strumento.

Dopo aver completato i passaggi di configurazione di Elasticsearch e Kibana, hai anche installato e configurato Filebeat sul tuo server Suricata. Hai utilizzato Filebeat per popolare i dashboard di Kibana e iniziare a inviare i log di Suricata a Elasticsearch.

Infine, hai creato un tunnel SSH verso il tuo server Elasticsearch e ti sei connesso a Kibana. Hai individuato i nuovi dashboard Eventi e Allarmi di Suricata, oltre al dashboard di Rete.

L’ultimo tutorial di questa serie ti guiderà nell’uso della funzionalità SIEM di Kibana per elaborare gli allarmi di Suricata. Esplorerai come creare casi per monitorare specifici allarmi, timeline per correlare i flussi di rete e regole per corrispondere a eventi specifici di Suricata che desideri monitorare o analizzare in modo più dettagliato.

Source:
https://www.digitalocean.com/community/tutorials/how-to-build-a-siem-with-suricata-and-elastic-stack-on-rocky-linux-8