Ricerca nel sito web

Suricata: strumento di sicurezza per il rilevamento e la prevenzione delle intrusioni


Suricata è un motore di rilevamento delle minacce potente, versatile e open source che fornisce funzionalità per il rilevamento delle intrusioni (IDS), la prevenzione delle intrusioni (IPS) e il monitoraggio della sicurezza della rete. Esegue un'ispezione approfondita dei pacchetti insieme alla corrispondenza dei modelli, una combinazione incredibilmente potente nel rilevamento delle minacce.

Al momento della stesura di questa guida, l'ultima versione di Suricata è 6.0.5.

Caratteristiche di Suricata

  • IDS/IPS – Suricata è un motore di rilevamento e prevenzione delle intrusioni basato su regole che sfrutta set di regole sviluppate esternamente come Talos Ruleset e Emerging Threats Suricata. per monitorare il traffico di rete per eventuali attività dannose, violazioni delle policy e minacce.
  • Rilevamento automatico dei protocolli: il motore Suricata rileva automaticamente protocolli come HTTP e HTTPS. FTP e SMB su qualsiasi porta e applicare la corretta logica di rilevamento e registrazione. Ciò è utile per rilevare malware e canali CnC.
  • Lua Scripting: Suricata può richiamare script Lua che forniscono un rilevamento avanzato del malware per rilevare e decodificare il traffico malware che altrimenti sarebbe difficile da rilevare.
  • Multi-threading: Suricata fornisce velocità e importanza nella determinazione del traffico di rete. Il motore è sviluppato per applicare la maggiore potenza di elaborazione offerta dai moderni chipset hardware multi-core.

Installazione dello strumento di rilevamento delle intrusioni Suricata in Linux

In questa sezione, dimostreremo come installare Suricata su distribuzioni basate su Debian e RHEL.

Installa Suricata su Debian/Ubuntu e Mint

Suricata è fornito dai repository Debian/Ubuntu e può essere facilmente installato utilizzando il gestore pacchetti apt. Tuttavia, vale la pena notare che questo non installa l’ultima versione di Suricata. Per installare la versione più recente, è necessario installarla da una fonte di cui parleremo più avanti in questa guida.

Per installare Suricata utilizzando il gestore pacchetti apt, esegui il comando:

sudo apt install suricata -y

Suricata si avvia automaticamente una volta installato. Puoi confermarlo come segue.

sudo systemctl status suricata

Installa Suricata su RHEL, Rocky, Almalinux e Fedora

Per installare Suricata su distribuzioni RHEL come CentOS Stream, Rocky Linux, AlmaLinux, Fedora e RHEL, devi prima abilitare il repository EPEL.

dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm  [RHEL 9]
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm  [RHEL 8]
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm  [RHEL 7]

Una volta abilitato EPEL, installa i seguenti pacchetti richiesti e aggiungi il repository OISF al tuo sistema.

----------- On Fedora Systems ----------- 
sudo dnf install dnf-plugins-core
sudo  dnf copr enable @oisf/suricata-6.0

----------- On RHEL Systems ----------- 
sudo dnf install yum-plugin-copr
sudo dnf copr enable @oisf/suricata-6.0

Successivamente, installa Suricata utilizzando il gestore pacchetti dnf o il gestore pacchetti yum come mostrato.

sudo dnf install suricata -y
Or
sudo yum install suricata -y

Una volta installato Suricata, avvia e verificane lo stato.

sudo systemctl start suricata
sudo systemctl status suricata

Installa Suricata dal sorgente in Linux

I repository del sistema operativo predefiniti non forniscono la versione più recente di Suricata. Se il tuo obiettivo è installare l'ultima versione di Suricata, devi installarla dalla fonte.

Al momento della stesura di questa guida, l'ultima versione di Suricata è la 6.0.5. Per installare Suricata dall'origine sulle distribuzioni Ubuntu/Debian e RHEL, installa le seguenti librerie, strumenti di compilazione e dipendenze.

----------- On Debian Systems ----------- 
sudo apt install rustc build-essential cargo libpcre3 libpcre3-dbg libpcre3-dev make autoconf automake libtool libcap-ng0 make libmagic-dev libjansson-dev libjansson4 libpcap-dev libnet1-dev libyaml-0-2 libyaml-dev zlib1g zlib1g-dev libcap-ng-dev pkg-config libnetfilter-queue1 libnfnetlink0 libnetfilter-queue-dev libnfnetlink-dev -y

----------- On RHEL Systems ----------- 
sudo yum install gcc libpcap-devel pcre-devel libyaml-devel file-devel zlib-devel jansson-devel nss-devel libcap-ng-devel libnet-devel tar make libnetfilter_queue-devel lua-devel PyYAML libmaxminddb-devel rustc cargo lz4-devel -y

Successivamente, installa lo strumento suricata-update per aggiornare le regole Suricata.

sudo apt install python3-pip           [On Debian]
sudo yum install python3-pip           [On RHEL]
pip3 install --upgrade suricata-update

Quindi crea un collegamento simbolico a /usr/bin/suricata-update.

sudo ln -s /usr/local/bin/suricata-update /usr/bin/suricata-update

Ora vai alla pagina di download ufficiale di Suricata e scarica l'ultimo file tarball per Linux utilizzando il comando wget.

wget https://www.openinfosecfoundation.org/download/suricata-6.0.6.tar.gz

Una volta scaricato, estrai il file tarball e installalo.

sudo tar -xvf suricata-6.0.6.tar.gz
cd suricata-6.0.6
./configure --enable-nfqueue --prefix=/usr --sysconfdir=/etc --localstatedir=/var
make
make install-full

Configurazione di Suricata in Linux

Per iniziare a configurare Suricata, dobbiamo specificare l'IP interno e la rete esterna. Per fare ciò, accedi al file di configurazione.

sudo vim /etc/suricata/suricata.yaml

Per la direttiva HOME_NET, specifica l'indirizzo IP del tuo sistema Linux.

HOME_NET: "[173.82.235.7]"

Successivamente, imposta la direttiva EXTERNAL_NET su "!$HOME_NET".

EXTERNAL_NET: "!$HOME_NET"

Successivamente, specifica l'interfaccia di rete su cui Suricata ispezionerà il traffico di rete. Nel nostro caso si tratta dell'interfaccia eth0.

Puoi verificare la tua interfaccia di rete attiva utilizzando il comando ip:

ip a

Nel file di configurazione, aggiorna la direttiva dell'interfaccia con il nome dell'interfaccia di rete.

- interface: eth0

Successivamente, assicurati che l'attributo default-rule-path sia impostato su /etc/suricata/rules.

Quindi salva le modifiche e chiudi il file di configurazione. Quindi riavvia Suricata per applicare le modifiche.

sudo systemctl status suricata

Aggiornamento dei set di regole Suricata in Linux

Per impostazione predefinita, Suricata viene fornito con un set limitato di regole di rilevamento situate nella directory /etc/suricata/rules. Tuttavia, questi sono considerati deboli e inefficaci nel rilevare le intrusioni. È necessario caricare le regole Minacce emergenti (ET) che sono considerate le serie di regole più complete per Suricata.

Suricata fornisce uno strumento noto come suricata-update che recupera set di regole da fornitori esterni. Per ottenere un set di regole aggiornato per il tuo server, esegui il comando seguente.

sudo suricata-update -o /etc/suricata/rules

Dall'output, puoi vedere l'suricata-update che recupera le Emerging Threats ET Open Rules gratuite e le salva nel file /etc/suricata/rules/suricata< di Suricata. file delle regole. Inoltre, indica il numero di regole elaborate. In questo esempio sono stati aggiunti in totale 35941. Di questi, 28221 sono stati abilitati, 18 sono stati rimossi e 1249 sono stati modificati.

Aggiunta di set di regole Suricata in Linux

Lo strumento suricata-update ti consente di recuperare regole dai fornitori di set di regole. Alcuni sono gratuiti, come il set ET Open, mentre altri richiedono un abbonamento a pagamento.

Per elencare il set predefinito di fornitori di regole, esegui il comando suricata-update come mostrato.

sudo suricata-update list-sources

Per aggiungere un set di regole, ad esempio il tgreen/hunting ruleset, esegui il comando seguente.

sudo suricata-update enable-source tgreen/hunting

Una volta aggiunto il set di regole, esegui nuovamente il comando suricata-update con il flag -o /etc/suricata/rules.

sudo suricata-update -o /etc/suricata/rules

Testare le regole Suricata in Linux

Prima di iniziare a testare Suricata, è consigliabile verificare se la configurazione è corretta. Per fare ciò, esegui il seguente comando:

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

Assicurarsi che non vengano segnalati errori. Se utilizzi RHEL, CentOS Stream, Fedora e Rocky Linux, avvia e abilita Suricata.

sudo systemctl start suricata 
sudo systemctl enable suricata 

Finora abbiamo installato e configurato con successo Suricata e aggiornato le regole. Il set di regole ET Open contiene oltre 30.000 regole per il rilevamento del traffico dannoso. In questa sezione metteremo alla prova Suricata e controlleremo se è in grado di rilevare traffico di rete sospetto.

Testeremo il set di regole ET Open simulando un'intrusione come raccomandato dalla guida Quickstart di Suricata.

La funzionalità IDS verrà testata con un ID firma 2100498 inviando una richiesta HTTP al sito Web testmynids.org che è un framework NIDS (Network Intrusion and Detection System).

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

Dovresti ottenere il seguente output.

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

La richiesta HTTP inviata è progettata per attivare un avviso imitando l'output del comando id che potrebbe essere eseguito su un sistema remoto compromesso tramite una shell.

Ora esaminiamo i registri di Suricata per individuare un avviso corrispondente. Suricata viene fornito con due file di registro abilitati per impostazione predefinita.

/var/log/suricata/fast.log
/var/log/suricata/eve.log

Verificheremo la presenza di una voce di registro nel file di registro /var/log/suricata/fast.log che corrisponde alla richiesta curl utilizzando il comando grep. Cercheremo le voci di registro utilizzando l'identificatore di regola 2100498 dalla documentazione Quickstart.

grep 2100948 /var/log/suricata/fast.log

Otterrai il seguente output che indica un'intrusione. Qui, 173.82.235.7 è l'indirizzo IP pubblico del server.

09/09/2022-22:17:06.796434  [**] [1:2100498:7] GPL ATTACK_RESPONSE id check returned root [**] [Classification: Potentially Bad Traffic] [Priority: 2] {TCP} 13.226.210.123:80 -> 173.82.235.7:33822

In alternativa, puoi controllare il file di registro /var/log/suricata/eve.log per l'ID firma 2100498 come mostrato.

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

Questa era una guida completa su come installare e configurare Suricata su Linux. Abbiamo esaminato vari metodi di installazione, come configurare Suricata e aggiornare le regole di Suricata, nonché come gestire il servizio systemd Suricata ed eseguire test di intrusione di rete.

La nostra speranza è che ora tu possa installare e utilizzare comodamente Suricata per proteggere il tuo sistema da intrusioni di rete o traffico dannoso.