GNU/Linux >> Linux Esercitazione >  >> Linux

Configurazione di Suricata come sistema di prevenzione delle intrusioni (IPS)

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?


Linux
  1. Installazione e configurazione di php 7x su Centos 8

  2. Come installare denyhosts su Ubuntu Linux 17.04 (strumento di sicurezza per la prevenzione delle intrusioni per SSH e altro)

  3. Concedi l'accesso a sudo in Debian e nel sistema operativo Ubuntu

  4. Configurazione di sudo per abilitare i comandi per utenti non root in Linux

  5. sudo -k contro sudo -K

Come installare Xfce Desktop su AlmaLinux 8

Come installare Suricata su CentOS 8

Come installare Suricata su Ubuntu 20.04 LTS

Tutorial Tripwire:Sistema di rilevamento delle intrusioni basato su host Linux

Come aggiungere o creare un utente sudo nel sistema Linux [Quickstart]

L'unico utente di un sistema *nix dovrebbe avere due account?