Con la crescente popolarità dei crimini informatici, c’è un urgente bisogno che le aziende abbiano una migliore protezione contro gli hacker. Un Sistema di Prevenzione delle Intrusioni (IPS) è uno dei migliori modi per difendersi dagli attacchi informatici. Ma prima di cercare su internet un IPS, prova Suricata.
In questo tutorial, imparerai come configurare un IPS Suricata completamente funzionale su un server Linux per proteggere la tua rete da minacce online.
Pronto? Continua a leggere e inizia a proteggere la tua rete!
Prerequisiti
Questo tutorial sarà una dimostrazione pratica. Se desideri seguire il procedimento, assicurati di avere quanto segue:
- A Linux server – This demo uses Ubuntu 20.04 LTS, but any Linux distribution will work.
- A non-root user with sudo privileges.
- A seconda della configurazione della tua rete e del modo in cui intendi utilizzare Suricata, potresti aver bisogno di più o meno CPU e RAM per il tuo server. In generale, più traffico hai intenzione di ispezionare, più risorse allocerai a Suricata. In un ambiente di sviluppo, pianifica di utilizzare almeno 2 CPU e 8 GB di RAM per iniziare, in modo che Suricata possa svolgere le sue attività senza compromettere la qualità del servizio per tutti gli utenti.
Installazione di Suricata e Aggiunta del Repository PPA
Suricata non viene installato di default su Ubuntu, ma l’installazione di Suricata è simile all’installazione di altri pacchetti nel sistema.
1. Esegui il comando apt update
per aggiornare i pacchetti disponibili nel sistema.

2. Successivamente, esegui il comando add-apt-repository
per aggiungere il repository PPA mantenuto dall’Open Information Security Foundation (OISF). Aggiungendo il repository PPA, otterrai la versione più recente e stabile di Suricata (ppa:oisf/suricata-stable
).

3. Esegui nuovamente il comando sudo apt update
per caricare il repository Suricata appena aggiunto nell’indice dei pacchetti del tuo sistema.
4. Ora, esegui il comando sudo apt policy
per verificare di aver aggiunto correttamente il repository Suricata PPA. Assicurati di vedere il PPA di Suricata nell’elenco come mostrato di seguito prima di installare Suricata

5. Esegui il seguente comando per installare suricata
nel tuo sistema.

6. Una volta completata l’installazione, esegui il comando systemctl status
di seguito per verificare lo stato
del servizio suricata
.
Sotto, puoi vedere che il servizio Suricata è attivo (in esecuzione).

Configurazione di Suricata
Il pacchetto Suricata viene fornito con un file di configurazione chiamato suricata.yaml situato nella directory /etc/suricata. Questo file di configurazione contiene molte impostazioni diverse per molti altri casi d’uso. Ma tieni presente che ci sono alcune impostazioni nel file di configurazione predefinito che devi modificare prima di utilizzare Suricata.
La modalità predefinita per Suricata è la modalità di rilevamento delle intrusioni (IDS), che registra, ma non elimina il traffico. Questa modalità viene utilizzata durante la configurazione e la familiarizzazione con Suricata. Una volta che ti senti più a tuo agio con Suricata e comprendi meglio i tipi di traffico di cui Suricata ti avviserà, puoi optare per attivare la modalità IPS.
Suricata aggiunge un campo nel suo formato JSON (ID di flusso della comunità). L’ID di flusso della comunità è un campo di 8 byte che ti consente di correlare i record generati da altre strumenti. Questa funzionalità è utile quando si utilizza Suricata in combinazione con altri strumenti come Bro o Elasticsearch.
1. Apri il file /etc/suricata/suricata.yaml nel tuo editor di testo preferito.
2. Trova una riga che contiene community-id: false e cambiala in community-id: true. Salva le modifiche ed esci dall’editor di testo.
Ogni volta che esaminerai gli eventi, vedrai l’ID del flusso della comunità nel loro output JSON.

In seguito, esegui il seguente comando per trovare un dispositivo con una route predefinita nel tuo sistema (route show default
). Il flag -p
indica al comando ip
di stampare il dispositivo in un formato leggibile dall’utente, mentre il flag -j
stampa l’output in formato JSON.
Di default, Suricata è configurato per intercettare pacchetti da qualsiasi interfaccia di rete disponibile. Tuttavia, puoi modificare questo comportamento e specificare un’interfaccia su cui Suricata dovrà ascoltare all’avvio.
Come puoi vedere di seguito, il parametro dev specifica l’interfaccia che Suricata utilizzerà per intercettare i pacchetti. In questa demo, l’interfaccia è eth0, ma la tua interfaccia potrebbe essere diversa, ad esempio tun0, wlan0 e così via.

4. Infine, apri il file di configurazione /etc/suricata/suricata.yaml, individua il parametro interface sotto la sezione af-packet e modificalo di conseguenza. In questa demo, viene utilizzata eth0 come interfaccia per intercettare i pacchetti.
Salva le modifiche, ma mantieni aperto l’editor di testo per ora.

Configurazione della funzione di ricarica delle regole in tempo reale.
Hai configurato Suricata, ma questo è solo l’inizio della protezione della tua rete. Di solito, vorresti aggiungere regole all’istante e ricaricare automaticamente le regole. Come? La funzione di ricarica delle regole live di Suricata ti consente di aggiornare le regole al volo. Di conseguenza, non è necessario riavviare manualmente Suricata affinché le nuove regole abbiano effetto.
Apri il file /etc/suricata/suricata.yaml, copia/incolla le seguenti direttive alla fine del contenuto del file e salva le modifiche. Queste direttive ti consentono di abilitare la funzione di ricarica delle regole live.
Con questa impostazione in atto, quando modifichi/aggiorni i tuoi set di regole, le modifiche avranno effetto senza riavviare il servizio Suricata.

Ora esegui il comando kill
riportato di seguito per notificare al tuo processo Suricata ($(pidof suricata)
) di aggiornare le regole senza riavviare.
Il comando invia un segnale definito dall’utente (-usr2
) all’ID del processo specificato, quindi Suricata esegue automaticamente le seguenti operazioni:
- Carica la nuova configurazione per aggiornare le variabili e i valori delle regole.
- Carica le nuove regole.
- Costruisci un nuovo motore di rilevamento.
- Scambia i vecchi e i nuovi motori di rilevamento.
- Assicurati che tutti i thread siano aggiornati.
- Rilascia il vecchio motore di rilevamento.
Aggiornamento dei set di regole di Suricata.
La funzione di ricarica delle regole live è pronta, ma non avrà uno scopo se non aggiorni i tuoi set di regole. Per impostazione predefinita, il pacchetto Suricata ha un set di regole limitato che rileva solo i protocolli Internet più comuni presenti nella directory /etc/suricata/rules.
A questo punto, riceverai un messaggio di errore Nessun file di regole corrisponde al pattern, come quello riportato di seguito, ogni volta che provi a avviare e utilizzare il tuo servizio Suricata. Questo messaggio di errore indica che non ci sono set di regole da utilizzare con Suricata.

Per risolvere questo errore, fornisci file di set di regole alla tua istanza di Suricata. Fortunatamente, Suricata dispone di uno strumento chiamato suricata-update
che ti aiuterà a ottenere ulteriori set di regole da fornitori terzi.
1. Esegui il comando seguente per ottenere un aggiornamento per la tua istanza di Suricata.
Come puoi vedere di seguito, l’output indica che il comando suricata-update
ha scaricato le regole connettendosi a https://rules.emergingthreats.net/open/. Il comando salva quindi le nuove regole nella directory /var/lib/suricata/rules/.
L’output stampa anche quanto segue:
- Il numero totale (31737) di set di regole
- Il numero di regole abilitate (24355)
- Il numero di regole aggiunte (31737)/rimosse (0).

Successivamente, esegui il comando seguente per elencare tutti i fornitori di set di regole (list-sources
).
Il comando
suricata-update
scarica set di regole da molti fornitori, inclusi fornitori gratuiti e commerciali.
Di seguito, puoi vedere una piccola parte della lista. Fai attenzione al nome del set di regole da cui desideri che Suricata scarichi specificamente i set di regole. In questo tutorial, verranno scaricati i set di regole et/open per dimostrazione (passaggio tre).

3. Esegui il comando di seguito per recuperare e includere (enable-source
) i set di regole et/open
alle tue regole di Suricata.

Infine, esegui nuovamente il comando suricata-update
per caricare il nuovo set di regole selezionato.
Convalida della configurazione di Suricata
Hai configurato Suricata e aggiunto set di regole, quindi è ora di convalidare le tue modifiche ed assicurarti che tutto funzioni come previsto. Il pacchetto Suricata dispone di un servizio di convalida integrato che consente di visualizzare eventuali deviazioni dalla configurazione corrente.
Esegui il comando suricata
di seguito per convalidare le modifiche nel file di configurazione di Suricata (-c /etc/suricata/suricata.yaml
). Il comando visualizza anche tutti i messaggi di convalida (-v
).
Il flag -T
indica a Suricata di eseguire in modalità “test” e “top down”. Entrambe le modalità hanno regole più rigorose per il matching dei pacchetti e sono meno inclini a generare falsi positivi.
Dato che Suricata è un firewall altamente configurabile, il test potrebbe richiedere diversi minuti per essere completato. Se non ci sono errori, vedrai un output simile a quello riportato di seguito che mostra un messaggio completo.

Se il tuo file di configurazione presenta errori simili a quello riportato di seguito, Suricata stamperà ogni errore, indicando le linee specifiche che causano problemi. Se si ricevono questi errori, correggere ogni problema di configurazione uno per uno fino a quando la convalida avrà successo.

Test delle regole di Suricata
Ora che i file di configurazione di Suricata sono stati convalidati, puoi eseguire Suricata per verificare che funzionino correttamente. Utilizzerai Suricata per testare l’ET Open (2100498) con il comando curl
per rilevare attività/traffico sospetto.
Al momento, la tua istanza di Suricata dispone di oltre 30.000 regole che Suricata ha recuperato da vari set di regole. Quindi un test completo di tutte le regole con la loro spiegazione non rientrerà in questo tutorial.
1. Esegui il comando curl
di seguito per generare del traffico/richieste HTTP/attività dal sito web TestMyNIDS. TestMyNIDS è un progetto di e-learning dedicato al supporto dei test, alla convalida e al confronto di NIDS. Il sito web fornisce una piattaforma unica per l’analisi comparativa di NIDS e strumenti correlati.
Puoi utilizzare questo sito web per testare qualsiasi attività/traffico sospetto al fine di verificare se il tuo set di regole configurato funziona come previsto.
I dati di risposta sono progettati per generare un falso allarme, fingendo di essere un utente root Linux/Unix. E questo utente root si trova su un sistema che potrebbe essere compromesso.

In seguito, esegui il comando grep
di seguito per esaminare il file fast.log
nella directory /var/log/suricata/ alla ricerca di un messaggio di allarme corrispondente 2100498
. Questo comando controlla il file di log per l’allerta dell’utente.
Oltre al file fast.log, un altro file di registro da tenere d’occhio è il file eve.log nella stessa directory.
Vedrai un output simile a quello di seguito che mostra l’indirizzo IPv4 pubblico del tuo sistema.

3. Ora, esegui il comando jq
di seguito per esaminare il file eve.log. Il file eve.log viene utilizzato anche per registrare eventi, ma in formato JSON (/var/log/suricata/eve.json
). Sono i file eve.json e fast.log a cui farai riferimento per il traffico sospetto e i tentativi bloccati. Una volta trovati, agisci di conseguenza.
Sotto, puoi vedere “signature_id”: 2100498 nell’output, che è l’ID di firma di allarme specificato nel comando.
Puoi anche vedere il “community_id”: “1:ETRbv54GHTVCayHTUR5OIovK4gh2=” nell’output, che è l’ID di flusso della comunità che hai configurato nel file /etc/suricata/suricata.yaml.
Questo community_id è utile quando si utilizza Suricata in combinazione con altri strumenti come Elasticsearch per ottenere una “stacca di monitoraggio della sicurezza” completa a un costo ragionevolmente basso.

Conclusione
In questo tutorial, hai imparato come installare e configurare Suricata con i set di regole per proteggere la tua rete. Hai anche eseguito il test dei set di regole verificando se funzionano generando traffico sulla tua rete.
A questo punto, Suricata sta funzionando perfettamente con il tuo set di regole personalizzato per rilevare attività/traffico sospetti sulla tua rete.
Ora, perché non costruire su questa nuova conoscenza? Forse inizia con l’installazione e configurazione di Suricata, Zeek, lo stack Elasticsearch per creare un completo “stack per il monitoraggio della sicurezza”?