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:
- Un server Centos 8 Stream con 2 o più CPU, un utente non-root sudo e un firewall abilitato. Per configurare questo, puoi seguire il nostro tutorial Configurazione Iniziale del Server con CentOS Linux 8.
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:
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:
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:
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
:
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:
Dovresti ricevere un output simile al seguente che indica che il servizio è abilitato:
OutputCreated 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
:
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:
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:
. . .
# 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:
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:
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:
# 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:
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:
. . .
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:
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:
Dovresti ricevere un output simile al seguente:
Output19/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:
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:
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:
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:
Output21/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:
Output21/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
:
Puoi esaminare lo stato del servizio utilizzando il comando systemctl status
:
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:
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:
Output19/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:
Il comando curl
restituirà una risposta simile alla seguente:
Outputuid=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:
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:
Output10/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:
Output10/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
:
Una volta installato jq
, puoi filtrare gli eventi nel registro EVE cercando la firma 2100498
con il seguente comando:
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