Con la crescente popolarità della criminalità informatica, è urgente che le aziende dispongano di una migliore protezione contro gli hacker. Un sistema di prevenzione delle intrusioni (IPS) è uno dei modi migliori per difendersi dagli attacchi informatici. Ma prima di cercare un IPS su Internet, prova Suricata.
In questo tutorial imparerai come configurare un Suricata IPS completamente funzionante su un server Linux per proteggere la tua rete dalle minacce online.
Pronto? Continua a leggere e inizia a proteggere la tua rete!
Prerequisiti
Questo tutorial sarà una dimostrazione pratica. Se desideri continuare, assicurati di avere quanto segue:
- Un server Linux:questa demo utilizza Ubuntu 20.04 LTS, ma qualsiasi distribuzione Linux funzionerà.
- Un utente non root con privilegi sudo.
- 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, più traffico prevedi di ispezionare, più risorse assegnerai 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 Archivio PPA
Suricata non viene installato per impostazione predefinita su Ubuntu, ma l'installazione di Suricata è simile a come installi altri pacchetti sul tuo sistema.
1. Esegui apt update
comando per aggiornare i pacchetti disponibili nel tuo sistema.
sudo apt update -y

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

3. Riesegui sudo apt update
comando per caricare il repository Suricata appena aggiunto nell'indice del pacchetto del tuo sistema.
sudo apt update -y
4. Ora esegui sudo apt policy
comando per verificare di aver aggiunto correttamente il Suricata PPA. Assicurati di vedere Suricata PPA nell'elenco come mostrato di seguito prima di installare Suricata
sudo apt policy

5. Esegui il seguente comando su install suricata
sul tuo sistema.
sudo apt install suricata -y

6. Una volta completata l'installazione, eseguire systemctl status
comando qui sotto per controllare il suricata
servizio status
.
sudo systemctl status suricata
Di seguito, puoi vedere che il servizio Suricata è attivo (in esecuzione).

Configurazione di Suricata
Il pacchetto Suricata viene fornito con un file di configurazione denominato suricata.yaml che si trova in /etc/suricata directory. Questo file di configurazione ha molte impostazioni diverse per molti altri casi d'uso. Ma ricorda che ci sono alcune impostazioni nel file di configurazione predefinito che devi modificare prima di utilizzare Suricata.
La modalità predefinita per Suricata è la modalità Intrusion Detection (IDS), che registra, ma non elimina il traffico. Questa modalità viene utilizzata durante la configurazione e la conoscenza di Suricata. Una volta che ti sentirai più a tuo agio con Suricata e avrai compreso meglio i tipi di traffico di cui Suricata ti avviserà, potrai attivare la modalità IPS.
Suricata aggiunge un campo nel suo formato JSON (ID flusso di comunità). L'ID flusso comunità è un campo di 8 byte che consente di correlare i record generati da altri strumenti. Questa funzione è utile quando si utilizza Suricata insieme ad altri strumenti come Bro o Elasticsearch.
1. Apri /etc/suricata/suricata.yaml file nel tuo editor di testo preferito.
2. Trova una riga che riporti community-id:false e cambialo in community-id:true . Salva le modifiche ed esci dall'editor di testo.
Ogni volta che esamini gli eventi, vedrai l'ID del flusso della community nel loro output JSON.

Quindi, esegui il comando seguente per trovare un dispositivo con un percorso predefinito sul tuo sistema (route show default
). Il -p
flag dice al ip
comando per stampare il dispositivo in modo leggibile dall'uomo, mentre il -j
flag stampa l'output JSON.
Suricata è configurato per annusare i pacchetti da qualsiasi interfaccia di rete disponibile per impostazione predefinita. Ma puoi modificare questo comportamento e specificare un'interfaccia per Suricata da ascoltare all'avvio.
ip -p -j route show default
Come puoi vedere di seguito, lo sviluppo Il parametro specifica l'interfaccia che Suricata utilizzerà per lo sniffing dei pacchetti. In questa demo, l'interfaccia è eth0 , ma la tua interfaccia potrebbe essere diversa, come tun0, wlan0 e così via.

4. Infine, apri /etc/suricata/suricata.yaml file di configurazione, individua l'interfaccia parametro nel pacchetto af sezione e modificarlo di conseguenza. In questa demo, eth0 viene utilizzato come interfaccia per lo sniffing dei pacchetti.
Salva le modifiche, ma tieni aperto il tuo editor di testo per ora.

Impostazione della funzione di ricarica delle regole in tempo reale
Ora hai configurato Suricata, ma questo è solo l'inizio della protezione della tua rete. In genere, vorresti aggiungere regole sul posto e ricaricare automaticamente le regole. Come? La funzione di ricarica delle regole in tempo reale di Suricata ti consente di aggiornare le regole al volo. Di conseguenza, non è necessario riavviare Suricata manualmente in modo che le nuove regole abbiano effetto.
Apri /etc/suricata/suricata.yaml file, copia/incolla le seguenti direttive in fondo al contenuto del file e salva le modifiche. Queste direttive ti consentono di abilitare la funzione di ricarica delle regole in tempo reale.
Con questa impostazione attiva, quando modifichi/aggiorni i tuoi set di regole, le modifiche avranno effetto senza riavviare il tuo servizio Suricata.
detect-engine:
- rule-reload: true

Ora esegui il kill
comando seguente per notificare il tuo processo Suricata ($(pidof suricata)
) per aggiornare le regole senza riavviare.
Il comando invia un segnale definito dall'utente (-usr2
) all'ID processo specificato, quindi Suricata esegue automaticamente quanto segue:
- Carica nuova configurazione per aggiornare le variabili ei valori delle regole.
- Carica nuove regole
- Costruisci un nuovo motore di rilevamento
- Scambia i motori di rilevamento vecchi e nuovi
- Assicurati che tutti i thread siano aggiornati
- Libera il vecchio motore di rilevamento
sudo kill -usr2 $(pidof suricata)
Aggiornamento dei set di regole Suricata
La funzione di ricarica delle regole in tempo reale è pronta, ma non servirà a nulla a meno che non aggiorni i set di regole. Per impostazione predefinita, il pacchetto Suricata ha un set di regole limitato che rileva solo i protocolli Internet più comuni che si trovano in /etc/suricata/rules directory.
A questo punto, otterrai un Nessun file di regole corrisponde al modello messaggio di errore, come quello di seguito, ogni volta che si tenta di avviare e utilizzare il servizio Suricata. Questo messaggio di errore indica che non ci sono set di regole da utilizzare per Suricata.

Per correggere questo errore, fornisci i file del set di regole alla tua istanza Suricata. Fortunatamente, Suricata ha uno strumento chiamato suricata-update
che ti aiuterà a recuperare più set di regole da fornitori di terze parti.
1. Esegui il comando seguente per ottenere un aggiornamento per la tua istanza Suricata.
sudo suricata-update
Come puoi vedere di seguito, l'output indica che il suricata-update
comando ha recuperato 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 regole
- Il numero di regole abilitate (24355 )
- Il numero di quanti vengono aggiunti(31737 )/rimosso(0 ).

Quindi, esegui il comando seguente per elencare tutti i fornitori di set di regole (list-sources
).
Il
suricata-update
comando recupera set di regole da molti provider, inclusi provider gratuiti e commerciali.
sudo suricata-update list-sources
Di seguito, puoi vedere una piccola parte dell'elenco. Annota il nome di un set di regole da cui vuoi che Suricata recuperi i set di regole in modo specifico. Questo tutorial recupera et/open set di regole per la dimostrazione (passo tre).

3. Esegui il comando seguente per recuperare e includere (enable-source
) il et/open
set di regole alle regole di Suricata.
sudo suricata-update enable-source et/open

Infine, esegui nuovamente il suricata-update
comando per caricare il set di regole appena selezionato.
sudo suricata-update
Convalida della configurazione di Suricata
Hai configurato Suricata e persino aggiunto set di regole, quindi è il momento di convalidare le modifiche e assicurarti che tutto funzioni come previsto. Il pacchetto Suricata ha un servizio di convalida integrato che ti consente di vedere eventuali deviazioni dalla configurazione corrente.
Esegui il suricata
comando seguente 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 -T
flag dice a Suricata di funzionare in modalità "test mode" e "top down". Entrambe le modalità hanno regole più rigide per la corrispondenza dei pacchetti ed è meno probabile che producano un falso positivo.
sudo suricata -T -c /etc/suricata/suricata.yaml -v
Poiché Suricata è un firewall altamente configurabile, il completamento del test potrebbe richiedere diversi minuti. Se non ci sono errori, vedrai un output simile a quello qui sotto che mostra un completo messaggio.

Se il tuo file di configurazione presenta errori simili a quello riportato di seguito, Suricata stamperà ogni errore, indicando linee specifiche che causano problemi. Se ricevi questi errori, risolvi ogni problema di configurazione uno per uno fino a quando la convalida ha esito positivo.

Testare le regole di Suricata
Ora che i tuoi file di configurazione di Suricata sono stati convalidati, puoi eseguire Suricata per vedere che funzionano correttamente. Utilizzerai Suricata per testare ET Open (2100498) con il curl
comando per rilevare attività/traffico sospetto.
Al momento, la tua istanza Suricata ha 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 si adatta a questo tutorial.
1. Esegui curl
comando seguente per generare alcune richieste/attività di traffico/HTTP dal sito Web TestMyNIDS. TestMyNIDS è un progetto di e-learning dedicato al supporto di test, validazione e confronto 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 per vedere se il set di regole configurato funziona come previsto.
curl http://testmynids.org/uid/index.html
I dati di risposta sono progettati per attivare un falso avviso che finge di essere un root Linux/Unix utente. E questa radice l'utente si trova su un sistema che potrebbe essere compromesso.

Quindi, esegui grep
comando seguente per esaminare il fast.log
nel file /var/log/suricata/ directory per un messaggio di avviso corrispondente 2100498
. Questo comando controlla il file di registro per l'avviso dell'utente.
Oltre al file fast.log, un altro file di registro a cui prestare attenzione è eve.log nella stessa directory.
grep 2100498 /var/log/suricata/fast.log
Vedrai un output simile a quello qui sotto che mostra l'indirizzo IPv4 pubblico del tuo sistema.

3. Ora esegui jq
comando seguente per esaminare eve.log file. Il eve.log viene utilizzato anche per la registrazione di eventi ma in formato JSON (/var/log/suricata/eve.json
). È il eve.json e fast.log file a cui farete riferimento per traffico sospetto e tentativi bloccati. Una volta trovato, agire se necessario.
jq 'select(.alert .signature_id==2100498)' /var/log/suricata/eve.json
Di seguito puoi vedere “signature_id”:2100498 nell'output, che è l'ID della firma di avviso specificato nel comando.
Puoi anche vedere il "community_id":"1:ETRbv54GHTVCayHTUR5OIovK4gh2=" nell'output, che è l'ID di flusso della comunità che hai impostato in /etc/suricata/suricata.yaml file.
Questo ID_comunità è utile quando usi Suricata insieme ad altri strumenti come Elasticsearch per ottenere uno "stack di monitoraggio della sicurezza" completo a un costo ragionevolmente basso.

Conclusione
Durante questo tutorial, hai imparato come installare e configurare Suricata con set di regole per proteggere la tua rete. Hai anche testato se i set di regole funzionano generando traffico sulla tua rete.
A questo punto, Suricata funziona perfettamente con il tuo set di regole personalizzato per rilevare attività/traffico sospetti sulla tua rete.
Ora, perché non basarsi su questa nuova conoscenza? Forse iniziare con l'installazione e la configurazione di Suricata, Zeek, lo stack Elasticsearch per impostare uno "stack di monitoraggio della sicurezza" completo?