Come installare Suricata su CentOS 8 Stream

Introduzione

Suricata è uno strumento di Monitoraggio della Sicurezza di Rete (NSM) che utilizza insiemi di firme create dalla comunità e definite dall’utente (anche dette regole) per esaminare e elaborare il traffico di rete. Suricata può generare eventi di registro, attivare allarmi e bloccare il traffico quando rileva pacchetti sospetti o richieste verso un qualsiasi numero di servizi diversi in esecuzione su un server.

Per impostazione predefinita, Suricata funziona come un Sistema di Rilevamento delle Intrusioni (IDS) passivo per esaminare il traffico sospetto su un server o una rete. Genererà e registrerà allarmi per ulteriori indagini. Può anche essere configurato come un Sistema di Prevenzione delle Intrusioni (IPS) attivo per registrare, allertare e bloccare completamente il traffico di rete che corrisponde a regole specifiche.

È possibile distribuire Suricata su un host gateway in una rete per esaminare tutto il traffico di rete in entrata e in uscita da altri sistemi, oppure è possibile eseguirlo in locale su singole macchine in uno dei due modi.

In questo tutorial imparerai come installare Suricata e come personalizzare alcune delle sue impostazioni predefinite su Centos 8 Stream per adattarle alle tue esigenze. Imparerai anche come scaricare insiemi di firme esistenti (solitamente chiamati insiemi di regole) che Suricata utilizza per esaminare il traffico di rete. Infine imparerai come testare se Suricata funziona correttamente quando rileva richieste sospette e dati in una risposta.

Prerequisiti

A seconda della configurazione della tua rete e di come intendi utilizzare Suricata, potresti aver bisogno di più o meno CPU e RAM per il tuo server. In generale, maggiore è il traffico che prevedi di ispezionare, più risorse dovresti allocare a Suricata. In un ambiente di produzione pianifica di utilizzare almeno 2 CPU e 4 o 8 GB di RAM per iniziare. Da lì puoi aumentare le risorse in base alle prestazioni di Suricata e alla quantità di traffico che devi elaborare.

Se prevedi di utilizzare Suricata per proteggere il server su cui è in esecuzione, avrai bisogno di:

In caso contrario, se prevedi di utilizzare Suricata su un host gateway per monitorare e proteggere più server, dovrai assicurarti che la configurazione di rete dell’host sia corretta.

Se stai utilizzando DigitalOcean, puoi seguire questa guida su Come Configurare un Droplet come Gateway VPC. Queste istruzioni dovrebbero funzionare anche per la maggior parte dei server CentOS, Fedora e altri server derivati da RedHat.

Passo 1 — Installazione di Suricata

Per iniziare l’installazione di Suricata, sarà necessario aggiungere le informazioni del repository software della Open Information Security Foundation (OISF) al tuo sistema CentOS. Puoi utilizzare il comando dnf copr enable per farlo. Sarà inoltre necessario aggiungere il repository Extra Packages for Enterprise Linux (EPEL).

Per abilitare il sottocomando Community Projects (copr) per lo strumento di gestione pacchetti dnf, esegui il seguente:

  1. sudo dnf install 'dnf-command(copr)'

Ti verrà chiesto di installare alcune dipendenze aggiuntive, nonché di accettare la chiave GPG per la distribuzione Linux CentOS. Premi y e INVIO ogni volta per completare l’installazione del pacchetto copr.

Successivamente, esegui il seguente comando per aggiungere il repository OISF al tuo sistema e aggiornare l’elenco dei pacchetti disponibili:

  1. sudo dnf copr enable @oisf/suricata-6.0

Premi y e INVIO quando ti viene chiesto di confermare che desideri aggiungere il repository.

Ora aggiungi il pacchetto epel-release, che renderà disponibili alcuni pacchetti di dipendenza aggiuntivi per Suricata:

  1. sudo dnf install epel-release

Quando ti viene chiesto di importare la chiave GPG, premi y e INVIO per accettare.

Ora che hai abilitato i repository software necessari, puoi installare il pacchetto suricata utilizzando il comando dnf:

  1. sudo dnf install suricata

Quando ti viene richiesto di aggiungere la chiave GPG per il repository OISF, premi y e INVIO. Il pacchetto e le sue dipendenze saranno ora scaricati e installati.

Successivamente, abilita il servizio suricata in modo che venga eseguito quando il sistema si riavvia. Usa il comando systemctl per abilitarlo:

  1. sudo systemctl enable suricata.service

Dovresti ricevere un output simile al seguente che indica che il servizio è abilitato:

Output
Created symlink /etc/systemd/system/multi-user.target.wants/suricata.service → /usr/lib/systemd/system/suricata.service.

Prima di passare alla sezione successiva di questo tutorial, che spiega come configurare Suricata, arresta il servizio usando systemctl:

  1. sudo systemctl stop suricata.service

Arrestare Suricata garantisce che quando modifichi e testi il file di configurazione, le modifiche apportate verranno validate e caricate quando Suricata si avvierà di nuovo.

Passaggio 2 — Configurazione di Suricata Per La Prima Volta

Il pacchetto Suricata dai repository OISF include un file di configurazione che copre una vasta gamma di casi d’uso. La modalità predefinita per Suricata è la modalità IDS, quindi nessun traffico verrà eliminato, solo registrato. Lasciare questa modalità impostata su predefinito è una buona idea mentre impari Suricata. Una volta configurato Suricata e integrato nel tuo ambiente, e avere un’idea chiara dei tipi di traffico su cui ti avviserà, puoi optare per attivare la modalità IPS.

Tuttavia, la configurazione predefinita ha ancora alcune impostazioni che potresti dover modificare a seconda del tuo ambiente e delle tue esigenze.

(Opzionale) Abilitazione dell’ID di flusso della comunità

Suricata può includere un campo ID della comunità nel suo output JSON per rendere più facile abbinare i singoli record di eventi ai record nei set di dati generati da altri strumenti.

Se prevedi di utilizzare Suricata con altri strumenti come Zeek o Elasticsearch, aggiungere ora l’ID della comunità è una buona idea.

Per abilitare l’opzione, apri /etc/suricata/suricata.yaml utilizzando vi o il tuo editor preferito:

  1. sudo vi /etc/suricata/suricata.yaml

Trova la riga 120 che recita # ID del flusso della comunità. Se stai utilizzando vi, digita 120gg per andare direttamente alla riga. Sotto quella riga si trova la chiave community-id. Impostala su true per abilitare l’impostazione:

/etc/suricata/suricata.yaml
. . .
      # ID del flusso della comunità
      # Aggiunge un campo 'community_id' ai record EVE. Questi sono destinati a dare
      # ai record un ID di flusso prevedibile che può essere utilizzato per abbinare i record a
      # output di altri strumenti come Zeek (Bro).
      #
      # Richiede un 'seed' che deve essere lo stesso tra sensori e strumenti
      # per rendere l'ID meno prevedibile.

      # abilita/disabilita la funzione di ID della comunità.
      community-id: true
. . .

Ora, quando esamini gli eventi, avranno un ID come 1:S+3BA2UmrHK0Pk+u3XH78GAFTtQ= che puoi usare per correlare i record tra diversi strumenti NMS.

Salva e chiudi il file /etc/suricata/suricata.yaml. Se stai utilizzando vi, puoi farlo con ESC e poi :x quindi INVIO per salvare ed uscire dal file.

Determinazione delle Interfacce di Rete da Utilizzare

Potresti dover sovrascrivere l’interfaccia di rete predefinita o le interfacce che desideri che Suricata ispezioni per il traffico. Il file di configurazione fornito con il pacchetto OISF Suricata predefinisce l’ispezione del traffico su un dispositivo chiamato eth0. Se il tuo sistema utilizza un’altra interfaccia di rete predefinita, o se desideri ispezionare il traffico su più di un’interfaccia, allora dovrai cambiare questo valore.

Per determinare il nome del dispositivo della tua interfaccia di rete predefinita, puoi utilizzare il comando ip come segue:

  1. ip -p -j route show default

Il flag -p formatta l’output in modo più leggibile, e il flag -j stampa l’output come JSON.

Dovresti ricevere un output simile al seguente:

Output
[ { "dst": "default", "gateway": "203.0.113.254", "dev": "eth0", "protocol": "static", "metric": 100, "flags": [ ] } ]

La riga dev indica il dispositivo predefinito. In questo esempio di output, il dispositivo è l’interfaccia eth0 evidenziata. Il tuo output potrebbe mostrare un nome di dispositivo come ens... o eno.... Qualunque sia il nome, prendine nota.

Ora puoi modificare la configurazione di Suricata e verificare o cambiare il nome dell’interfaccia. Apri il file di configurazione /etc/suricata/suricata.yaml usando vi o il tuo editor preferito:

  1. sudo vi /etc/suricata/suricata.yaml

Scorri attraverso il file fino a quando non arrivi a una riga che recita af-packet: intorno alla linea 580. Se stai utilizzando vi, puoi anche andare direttamente alla riga inserendo 580gg. Sotto quella riga si trova l’interfaccia predefinita che Suricata utilizzerà per ispezionare il traffico. Modifica la riga in modo che corrisponda alla tua interfaccia come nell’esempio evidenziato che segue:

/etc/suriata/suricata.yaml
# Supporto di acquisizione ad alta velocità di Linux
af-packet:
  - interface: eth0
    # Numero di thread di ricezione. "auto" utilizza il numero di core
    #threads: auto
    # ID del cluster predefinito. AF_PACKET distribuirà il bilanciamento del carico dei pacchetti in base al flusso.
    cluster-id: 99
. . .

Se desideri ispezionare il traffico su interfacce aggiuntive, puoi aggiungere ulteriori oggetti YAML - interfaccia: eth.... Ad esempio, per aggiungere un dispositivo chiamato enp0s1, scorri fino in fondo alla sezione af-packet intorno alla linea 650. Per aggiungere una nuova interfaccia, inseriscila prima della sezione - interfaccia: default come nell’esempio evidenziato seguente:

/ec/suricata/suricata.yaml
    Per la configurazione di eBPF e XDP, inclusa la derivazione, il filtro e il bilanciamento del carico, si prega di 
    vedere doc/userguide/capture-hardware/ebpf-xdp.rst per ulteriori informazioni.

  - interface: enp0s1
cluster-id: 98

  - interface: default
    threads: auto
    use-mmap: no
    tpacket-v3: yes

Assicurarsi di scegliere un valore univoco cluster-id per ciascun oggetto - interface.

Tieni aperto il tuo editor e procedi alla sezione successiva dove configurerai il riavvio delle regole in tempo reale. Se non si desidera abilitare tale impostazione, è possibile salvare e chiudere il file /etc/suricata/suricata.yaml. Se si utilizza vi, è possibile farlo con ESC, quindi :x e INVIO per salvare e uscire.

Configurazione del riavvio delle regole in tempo reale

Suricata supporta il riavvio delle regole in tempo reale, il che significa che è possibile aggiungere, rimuovere ed editare le regole senza la necessità di riavviare il processo Suricata in esecuzione. Per abilitare l’opzione di riavvio live, scorrere fino alla fine del file di configurazione ed aggiungere le seguenti righe:

/etc/suricata/suricata.yaml
. . .

detect-engine:
  - rule-reload: true

Con questo setting in atto, sarà possibile inviare il segnale di sistema SIGUSR2 al processo in esecuzione, e Suricata ricaricherà eventuali regole modificate in memoria.

A command like the following will notify the Suricata process to reload its rulesets, without restarting the process:

  1. sudo kill -usr2 $(pidof suricata)

La porzione $(pidof suricata) del comando richiama un sottoshell e trova l’ID del processo del demone Suricata in esecuzione. La parte iniziale del comando sudo kill -usr2 utilizza l’utilità kill per inviare il segnale SIGUSR2 all’ID del processo restituito dal sottoshell.

Puoi utilizzare questo comando ogni volta che esegui suricata-update o quando aggiungi o modifichi le tue regole personalizzate.

Salva e chiudi il file /etc/suricata/suricata.yaml. Se stai utilizzando vi, puoi farlo con ESC, quindi :x e INVIO per confermare.

Passaggio 3 — Aggiornamento dei set di regole di Suricata

A questo punto nel tutorial, se dovessi avviare Suricata, riceveresti un messaggio di avviso come il seguente nei log che non ci sono regole caricate:

Output
<Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /var/lib/suricata/rules/suricata.rules

Per impostazione predefinita, il pacchetto Suricata include un set limitato di regole di rilevamento (nella directory /etc/suricata/rules), quindi avviare Suricata in questo momento rileverebbe solo una quantità limitata di traffico malevolo.

Suricata include uno strumento chiamato suricata-update che può recuperare set di regole da fornitori esterni. Esegui il seguente comando per scaricare un set di regole aggiornate per il tuo server Suricata:

  1. sudo suricata-update

Dovresti ricevere un output simile al seguente:

Output
19/10/2021 -- 19:31:03 - <Info> -- Using data-directory /var/lib/suricata. 19/10/2021 -- 19:31:03 - <Info> -- Using Suricata configuration /etc/suricata/suricata.yaml 19/10/2021 -- 19:31:03 - <Info> -- Using /usr/share/suricata/rules for Suricata provided rules. . . . 19/10/2021 -- 19:31:03 - <Info> -- No sources configured, will use Emerging Threats Open 19/10/2021 -- 19:31:03 - <Info> -- Fetching https://rules.emergingthreats.net/open/suricata-6.0.3/emerging.rules.tar.gz. 100% - 3062850/3062850 . . . 19/10/2021 -- 19:31:06 - <Info> -- Writing rules to /var/lib/suricata/rules/suricata.rules: total: 31011; enabled: 23649; added: 31011; removed 0; modified: 0 19/10/2021 -- 19:31:07 - <Info> -- Writing /var/lib/suricata/rules/classification.config 19/10/2021 -- 19:31:07 - <Info> -- Testing with suricata -T. 19/10/2021 -- 19:31:32 - <Info> -- Done.

Le righe evidenziate indicano che suricata-update ha recuperato le regole gratuite di Emerging Threats ET Open Rules, e le ha salvate nel file /var/lib/suricata/rules/suricata.rules di Suricata. Indica anche il numero di regole elaborate, in questo esempio, sono state aggiunte 31011 regole e di queste 23649 sono state abilitate.

Aggiunta dei Fornitori di Ruleset

Lo strumento suricata-update può recuperare regole da una varietà di fornitori di ruleset gratuiti e commerciali. Alcuni ruleset come quello di ET Open che hai già aggiunto sono disponibili gratuitamente, mentre altri richiedono un abbonamento a pagamento.

Puoi elencare l’insieme predefinito di fornitori di regole usando il flag list-sources per suricata-update in questo modo:

  1. sudo suricata-update list-sources

Riceverai un elenco di fonti come il seguente:

Output
. . . 19/10/2021 -- 19:27:34 - <Info> -- Adding all sources 19/10/2021 -- 19:27:34 - <Info> -- Saved /var/lib/suricata/update/cache/index.yaml Name: et/open Vendor: Proofpoint Summary: Emerging Threats Open Ruleset License: MIT . . .

Ad esempio, se volessi includere il ruleset tgreen/hunting, potresti abilitarlo usando il seguente comando:

  1. sudo suricata-update enable-source tgreen/hunting

Poi esegui nuovamente suricata-update e il nuovo insieme di regole sarà aggiunto, oltre alle regole ET Open esistenti e a qualsiasi altra che hai scaricato.

Passo 4 — Convalida della configurazione di Suricata

Ora che hai modificato il file di configurazione di Suricata per includere l’opzionale ID della community, specificare l’interfaccia di rete predefinita e abilitato il ricaricamento delle regole live, è una buona idea testare la configurazione.

Suricata ha una modalità di test integrata che controllerà il file di configurazione e qualsiasi regola inclusa per la validità. Convalida le tue modifiche dalla sezione precedente utilizzando il flag -T per eseguire Suricata in modalità di test. Il flag -v stamperà alcune informazioni aggiuntive e il flag -c indicherà a Suricata dove trovare il suo file di configurazione:

  1. sudo suricata -T -c /etc/suricata/suricata.yaml -v

Il test può richiedere del tempo a seconda della quantità di CPU che hai allocato a Suricata e del numero di regole che hai aggiunto, quindi preparati a attendere uno o due minuti per completarlo.

Con l’insieme predefinito di regole ET Open dovresti ricevere un output come il seguente:

Output
21/10/2021 -- 15:00:40 - <Info> - Running suricata under test mode 21/10/2021 -- 15:00:40 - <Notice> - This is Suricata version 6.0.3 RELEASE running in SYSTEM mode 21/10/2021 -- 15:00:40 - <Info> - CPUs/cores online: 2 21/10/2021 -- 15:00:40 - <Info> - fast output device (regular) initialized: fast.log 21/10/2021 -- 15:00:40 - <Info> - eve-log output device (regular) initialized: eve.json 21/10/2021 -- 15:00:40 - <Info> - stats output device (regular) initialized: stats.log 21/10/2021 -- 15:00:46 - <Info> - 1 rule files processed. 23879 rules successfully loaded, 0 rules failed 21/10/2021 -- 15:00:46 - <Info> - Threshold config parsed: 0 rule(s) found 21/10/2021 -- 15:00:47 - <Info> - 23882 signatures processed. 1183 are IP-only rules, 4043 are inspecting packet payload, 18453 inspect application layer, 107 are decoder event only 21/10/2021 -- 15:01:13 - <Notice> - Configuration provided was successfully loaded. Exiting. 21/10/2021 -- 15:01:13 - <Info> - cleaning up signature grouping structure... complete

Se c’è un errore nel tuo file di configurazione, la modalità di test genererà un codice di errore specifico e un messaggio che puoi utilizzare per aiutare nella risoluzione dei problemi. Ad esempio, includere un file di regole che non esiste chiamato test.rules genererebbe un errore come il seguente:

Output
21/10/2021 -- 15:10:15 - <Info> - Running suricata under test mode 21/10/2021 -- 15:10:15 - <Notice> - This is Suricata version 6.0.3 RELEASE running in SYSTEM mode 21/10/2021 -- 15:10:15 - <Info> - CPUs/cores online: 2 21/10/2021 -- 15:10:15 - <Info> - eve-log output device (regular) initialized: eve.json 21/10/2021 -- 15:10:15 - <Info> - stats output device (regular) initialized: stats.log 21/10/2021 -- 15:10:21 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /var/lib/suricata/rules/test.rules

Con quell’errore potresti quindi modificare il tuo file di configurazione per includere il percorso corretto, o correggere variabili non valide e opzioni di configurazione.

Una volta completata con successo l’esecuzione della modalità di test di Suricata, puoi passare al passo successivo, che consiste nell’avviare Suricata in modalità daemon.

Passaggio 5 — Esecuzione di Suricata

Ora che hai una configurazione Suricata valida e un insieme di regole, puoi avviare il server Suricata. Esegui il seguente comando systemctl:

  1. sudo systemctl start suricata.service

Puoi esaminare lo stato del servizio utilizzando il comando systemctl status:

  1. sudo systemctl status suricata.service

Dovresti ricevere un output simile al seguente:

Output
● suricata.service - Suricata Intrusion Detection Service Loaded: loaded (/usr/lib/systemd/system/suricata.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2021-10-21 18:22:56 UTC; 1min 57s ago Docs: man:suricata(1) Process: 24588 ExecStartPre=/bin/rm -f /var/run/suricata.pid (code=exited, status=0/SUCCESS) Main PID: 24590 (Suricata-Main) Tasks: 1 (limit: 23473) Memory: 80.2M CGroup: /system.slice/suricata.service └─24590 /sbin/suricata -c /etc/suricata/suricata.yaml --pidfile /var/run/suricata.pid -i eth0 --user suricata Oct 21 18:22:56 suricata systemd[1]: Starting Suricata Intrusion Detection Service.. Oct 21 18:22:56 suricata systemd[1]: Started Suricata Intrusion Detection Service. . . .

Come per il comando della modalità di test, Suricata impiegherà uno o due minuti per caricare e analizzare tutte le regole. Puoi utilizzare il comando tail per controllare un messaggio specifico nei log di Suricata che indica che ha terminato l’avvio:

  1. sudo tail -f /var/log/suricata/suricata.log

Riceverai diverse righe di output e il terminale potrebbe sembrare bloccato mentre Suricata si carica. Continua ad attendere l’output fino a quando non ricevi una riga come la seguente:

Output
19/10/2021 -- 19:22:39 - <Info> - All AFP capture threads are running.

Questa riga indica che Suricata è in esecuzione e pronto per ispezionare il traffico. Puoi uscire dal comando tail usando CTRL+C.

Ora che hai verificato che Suricata sia in esecuzione, il prossimo passo in questo tutorial è verificare se Suricata rileva una richiesta a un URL di test progettato per generare un avviso.

Passo 6 — Test delle regole di Suricata

Il set di regole ET Open che hai scaricato contiene oltre 30000 regole. Una spiegazione completa di come funzionano le regole di Suricata e come costruirle è al di là dello scopo di questo tutorial introduttivo. Un tutorial successivo in questa serie spiegherà come funzionano le regole e come crearne di proprie.

Per gli scopi di questo tutorial, è sufficiente testare se Suricata rileva traffico sospetto con la configurazione che hai generato. La Guida rapida di Suricata consiglia di testare la regola ET Open con il numero 2100498 utilizzando il comando curl.

Esegui quanto segue per generare una richiesta HTTP, che restituirà una risposta che corrisponde alla regola di allerta di Suricata:

  1. curl http://testmynids.org/uid/index.html

Il comando curl restituirà una risposta simile alla seguente:

Output
uid=0(root) gid=0(root) groups=0(root)

Questi dati di risposta di esempio sono progettati per innescare un’allerta, fingendo di restituire l’output di un comando come id che potrebbe essere eseguito su un sistema remoto compromesso tramite una shell web.

Ora puoi controllare i registri di Suricata per un’allerta corrispondente. Ci sono due registri abilitati con la configurazione predefinita di Suricata. Il primo si trova in /var/log/suricata/fast.log e il secondo è un registro leggibile dalle macchine in /var/log/suricata/eve.log.

Esaminando /var/log/suricata/fast.log

Per controllare una voce di registro in /var/log/suricata/fast.log che corrisponde alla tua richiesta curl, usa il comando grep. Utilizzando l’identificatore della regola 2100498 dalla documentazione di avvio rapido, cerca voci che corrispondano utilizzando il seguente comando:

  1. grep 2100498 /var/log/suricata/fast.log

Se la tua richiesta ha utilizzato IPv6, allora dovresti ricevere un output simile al seguente, dove 2001:DB8::1 è l’indirizzo IPv6 pubblico del tuo sistema:

Output
10/21/2021-18:35:54.950106 [**] [1:2100498:7] GPL ATTACK_RESPONSE id check returned root [**] [Classification: Potentially Bad Traffic] [Priority: 2] {TCP} 2600:9000:2000:4400:0018:30b3:e400:93a1:80 -> 2001:DB8::1:34628

Se la tua richiesta ha utilizzato IPv4, allora il tuo registro dovrebbe avere un messaggio come questo, dove 203.0.113.1 è l’indirizzo IPv4 pubblico del tuo sistema:

Output
10/21/2021-18:35:57.247239 [**] [1:2100498:7] GPL ATTACK_RESPONSE id check returned root [**] [Classification: Potentially Bad Traffic] [Priority: 2] {TCP} 204.246.178.81:80 -> 203.0.113.1:36364

Nota il valore evidenziato 2100498 nell’output, che è l’ID della firma (sid) che Suricata utilizza per identificare una regola.

Esaminando /var/log/suricata/eve.log

Suricata registra anche eventi in /var/log/suricata/eve.log (chiamato registro EVE) utilizzando il formato JSON per formattare le voci.

La documentazione di Suricata consiglia di utilizzare l’utilità jq per leggere e filtrare le voci in questo file. Installa jq se non lo hai nel tuo sistema usando il seguente comando dnf:

  1. sudo dnf install jq

Una volta installato jq, puoi filtrare gli eventi nel registro EVE cercando la firma 2100498 con il seguente comando:

  1. jq 'select(.alert .signature_id==2100498)' /var/log/suricata/eve.json

Il comando esamina ogni voce JSON e stampa quelle che hanno un oggetto alert, con una chiave signature_id che corrisponde al valore 2100498 che stai cercando. L’output sarà simile al seguente:

Output
{ "timestamp": "2021-10-21T19:42:47.368856+0000", "flow_id": 775889108832281, "in_iface": "eth0", "event_type": "alert", "src_ip": "203.0.113.1", "src_port": 80, "dest_ip": "147.182.148.159", "dest_port": 38920, "proto": "TCP", "community_id": "1:vuSfAFyy7oUq0LQC5+KNTBSuPxg=", "alert": { "action": "allowed", "gid": 1, "signature_id": 2100498, "rev": 7, "signature": "GPL ATTACK_RESPONSE id check returned root", "category": "Potentially Bad Traffic", . . . }

Nota la riga "signature_id": 2100498, evidenziata, che è la chiave che jq sta cercando. Nota anche la riga evidenziata "community_id": "1:vuSfAFyy7oUq0LQC5+KNTBSuPxg=", nell’output JSON. Questa chiave è l’identificatore di flusso della comunità generato che hai abilitato nel file di configurazione di Suricata.

Ogni avviso genererà un identificatore di flusso della comunità univoco. Altri strumenti NMS possono anche generare lo stesso identificatore per consentire il riferimento incrociato di un avviso Suricata con l’output di altri strumenti.

A matching log entry in either log file means that Suricata successfully inspected the network traffic, matched it against a detection rule, and generated an alert for subsequent analysis or logging. A future tutorial in this series will explore how to send Suricata alerts to a Security Information Event Management (SIEM) system for further processing.

Passaggio 7 — Gestione degli Avvisi di Suricata

Una volta impostati e testati gli allarmi, puoi scegliere come gestirli. Per alcuni casi d’uso, registrare gli allarmi per fini di audit potrebbe essere sufficiente; oppure potresti preferire adottare un approccio più attivo per bloccare il traffico proveniente da sistemi che generano allarmi ripetuti.

Se desideri bloccare il traffico in base agli allarmi generati da Suricata, un approccio è utilizzare voci dal registro EVE e quindi aggiungere regole del firewall per limitare l’accesso al tuo sistema o ai sistemi. Puoi utilizzare lo strumento jq per estrarre campi specifici da un allarme, e quindi aggiungere regole UFW o IPtables per bloccare le richieste.

Di nuovo, questo esempio è uno scenario ipotetico che utilizza dati di richiesta e risposta appositamente creati. La tua conoscenza dei sistemi e dei protocolli ai quali il tuo ambiente dovrebbe essere in grado di accedere è essenziale per determinare quale traffico è legittimo e quale può essere bloccato.

Conclusione

In questo tutorial hai installato Suricata dai repository software OISF. Installare Suricata in questo modo garantisce che tu possa ricevere aggiornamenti ogni volta che viene rilasciata una nuova versione di Suricata. Dopo aver installato Suricata, hai modificato la configurazione predefinita per aggiungere un ID di flusso della comunità da utilizzare con altri strumenti di sicurezza. Hai inoltre abilitato il ricaricamento dinamico delle regole e scaricato un set iniziale di regole.

Una volta validata la configurazione di Suricata, hai avviato il processo e generato del traffico HTTP di test. Hai verificato che Suricata potesse rilevare il traffico sospetto esaminando entrambi i log predefiniti per assicurarti che contenessero un avviso corrispondente alla regola che stavate testando.

Per ulteriori informazioni su Suricata, visita il sito ufficiale Suricata. Per maggiori dettagli su una qualsiasi delle opzioni di configurazione che hai impostato in questo tutorial, consulta la Guida per l’utente di Suricata.

Ora che hai installato e configurato Suricata, puoi procedere al prossimo tutorial di questa serie Comprendere le firme di Suricata dove esplorerai come scrivere le tue regole personalizzate per Suricata. Imparerai diverse modalità per creare avvisi, o anche come bloccare completamente il traffico, basandoti su criteri come pacchetti TCP/IP non validi, contenuti delle query DNS, richieste e risposte HTTP, e persino handshake TLS.

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-suricata-on-centos-8-stream