Snort o Suricata. Parte 2: installazione e configurazione iniziale di Suricata

Se si crede alla statistica, il volume del traffico di rete aumenta di circa il 50% ogni anno. Questo comporta un aumento del carico sull'hardware e, in particolare, aumenta le esigenze prestazionali degli IDS/IPS. Si possono acquistare costosi hardware specializzati, ma c'è un'opzione più economica: l'implementazione di uno dei sistemi open source. Molti amministratori alle prime armi pensano che installare e configurare un IPS gratuito sia piuttosto complesso. Tuttavia, nel caso di Suricata, non è del tutto vero: è possibile installarla e iniziare a difendersi dagli attacchi comuni con un insieme di regole gratuite in pochi minuti.

Snort o Suricata. Parte 2: installazione e configurazione iniziale di Suricata
Snort o Suricata. Parte 1: scegliamo un IDS/IPS gratuito per proteggere la rete aziendale

Perché un'altra IPS open source?

Il sistema Snort, a lungo considerato uno standard, è stato sviluppato dalla fine degli anni '90, quindi inizialmente era a thread singolo. Nel corso degli anni, ha acquisito tutte le funzionalità moderne, come il supporto per IPv6, la capacità di analizzare protocolli di livello applicativo e un modulo di accesso ai dati universale.

Il motore di base Snort 2.X ha imparato a lavorare con più processori, ma è rimasto monofilo e quindi non riesce a sfruttare al meglio i vantaggi delle moderne piattaforme hardware.

Il problema è stato risolto con la terza versione del sistema, ma è stata preparata così a lungo che sul mercato è riuscita a emergere Suricata, scritta da zero. Nel 2009, è stata sviluppata specificamente come un'alternativa multi-thread a Snort, con funzionalità IPS pronte all'uso. Il codice è distribuito sotto licenza GPLv2, ma i partner finanziari del progetto hanno accesso a una versione chiusa del motore. Alcuni problemi di scalabilità nelle prime versioni del sistema sono emersi, ma sono stati risolti piuttosto rapidamente.

Perché Suricata?

In Suricata ci sono diversi moduli (proprio come in Snort): acquisizione, raccolta, decodifica, rilevamento e output. Per impostazione predefinita, il traffico acquisito viene elaborato da un singolo thread prima della decodifica, anche se questo carica di più il sistema. Se necessario, i thread possono essere separati nelle impostazioni e distribuiti sui processori: Suricata è molto ben ottimizzata per l'hardware specifico, anche se questo esula dal livello di base per i principianti. È inoltre importante notare la presenza in Suricata di avanzati strumenti di ispezione HTTP basati sulla libreria HTP. Questi possono anche essere utilizzati per il protocollo del traffico senza rilevamento. Il sistema supporta anche la decodifica IPv6, inclusi i tunnel IPv4-in-IPv6, IPv6-in-IPv6 e altri.

Diverse interfacce possono essere utilizzate per l'intercettazione del traffico (NFQueue, IPFRing, LibPcap, IPFW, AF_PACKET, PF_RING), e in modalità Unix Socket è possibile analizzare automaticamente i file PCAP catturati da un altro sniffers. Inoltre, l'architettura modulare di Suricata facilita l'integrazione di nuovi elementi per la cattura, decodifica, analisi e gestione dei pacchetti di rete. È importante notare che in Suricata il blocco del traffico viene effettuato tramite il filtro nativo del sistema operativo. In GNU/Linux sono disponibili due modalità di funzionamento dell'IPS: tramite la coda NFQUEUE (modalità NFQ) e tramite zero copy (modalità AF_PACKET). Nel primo caso, il pacchetto che entra in iptables viene inviato alla coda NFQUEUE, dove può essere elaborato a livello utente. Suricata lo elabora secondo le proprie regole e fornisce uno dei tre giudizi: NF_ACCEPT, NF_DROP e NF_REPEAT. I primi due non necessitano di spiegazioni, mentre l'ultimo consente di contrassegnare i pacchetti e reinviarli all'inizio dell'attuale tabella iptables. La modalità AF_PACKET offre prestazioni più elevate, ma impone alcuni vincoli al sistema: deve avere due interfacce di rete e funzionare come gateway. Un pacchetto bloccato non viene semplicemente inoltrato alla seconda interfaccia.

Una caratteristica fondamentale di Suricata è la possibilità di utilizzare regole sviluppate per Snort. Gli amministratori hanno accesso, in particolare, ai set di regole Sourcefire VRT e OpenSource Emerging Threats, così come a quelli commerciali di Emerging Threats Pro. I risultati unificati possono essere analizzati utilizzando backend popolari, con supporto anche per l'output in PCAP e Syslog. Le impostazioni del sistema e le regole sono memorizzate in file nel formato YAML, che è facilmente leggibile e può essere elaborato automaticamente. Il motore Suricata riconosce numerosi protocolli, quindi non è necessario collegarsi a un numero di porta nelle regole. Inoltre, nelle regole di Suricata è ampiamente adottata la concezione dei flowbits. Per monitorare le attivazioni, vengono utilizzate variabili di sessione che permettono di creare e applicare diversi contatori e flag. Molti IDS considerano connessioni TCP diverse come entità separate e potrebbero non vedere le relazioni tra di esse, che indicano l'inizio di un attacco. Suricata cerca di vedere il quadro complessivo e, in molti casi, riconosce il traffico dannoso distribuito su diverse connessioni. Si potrebbe parlare a lungo dei suoi vantaggi, ma passiamo all'installazione e alla configurazione.

Come installare?

Installeremo Suricata su un server virtuale con Ubuntu 18.04 LTS. Tutti i comandi devono essere eseguiti come super utente (root). La soluzione più sicura è connettersi al server via SSH come utente normale e poi utilizzare il comando sudo per ottenere i privilegi elevati. Iniziamo installando i pacchetti necessari:

sudo apt -y install libpcre3 libpcre3-dev build-essential autoconf automake libtool libpcap-dev libnet1-dev libyaml-0-2 libyaml-dev zlib1g zlib1g-dev libmagic-dev libcap-ng-dev libjansson-dev pkg-config libnetfilter-queue-dev geoip-bin geoip-database geoipupdate apt-transport-https

Colleghiamo il repository esterno:

sudo add-apt-repository ppa:oisf/suricata-stable
sudo apt-get update

Installiamo l'ultima versione stabile di Suricata:

sudo apt-get install suricata

Se necessario, modifichiamo i file di configurazione del nome, sostituendo eth0, che viene utilizzato per impostazione predefinita, con il nome effettivo dell'interfaccia esterna del server. Le impostazioni predefinite sono memorizzate nel file /etc/default/suricata, mentre quelle personalizzate si trovano in /etc/suricata/suricata.yaml. La configurazione dell'IDS si limita principalmente alla modifica di questo file di configurazione. Al suo interno troviamo numerosi parametri che corrispondono, sia nel nome che nella funzione, agli analoghi di Snort. Il sintassi è comunque completamente diversa, ma il file è molto più facile da leggere rispetto ai configurazioni di Snort, inoltre è ben commentato.

sudo nano /etc/default/suricata

Snort o Suricata. Parte 2: installazione e configurazione iniziale di Suricata

e

sudo nano /etc/suricata/suricata.yaml

Snort o Suricata. Parte 2: installazione e configurazione iniziale di Suricata

Attenzione! Prima di avviare, è opportuno controllare i valori delle variabili nella sezione vars.

Per completare la configurazione, sarà necessario installare suricata-update per aggiornare e caricare le regole. È abbastanza semplice farlo:

sudo apt install python-pip
sudo pip install pyyaml
sudo pip install <a href="https://github.com/OISF/suricata-update/archive/master.zip">https://github.com/OISF/suricata-update/archive/master.zip</a>
sudo pip install --pre --upgrade suricata-update

Dobbiamo quindi eseguire il comando suricata-update per installare il set di regole Emerging Threats Open:

sudo suricata-update

Snort o Suricata. Parte 2: installazione e configurazione iniziale di Suricata

Per visualizzare l'elenco delle fonti delle regole, eseguiamo il seguente comando:

sudo suricata-update list-sources

Snort o Suricata. Parte 2: installazione e configurazione iniziale di Suricata

Aggiorniamo le fonti delle regole:

sudo suricata-update update-sources

Snort o Suricata. Parte 2: installazione e configurazione iniziale di Suricata

Controlliamo nuovamente le fonti aggiornate:

sudo suricata-update list-sources

Se necessario, puoi attivare le fonti gratuite disponibili:

sudo suricata-update enable-source ptresearch/attackdetection
sudo suricata-update enable-source oisf/trafficid
sudo suricata-update enable-source sslbl/ssl-fp-blacklist

Dopo di che, è necessario aggiornare nuovamente le regole:

sudo suricata-update

Con questo, si può considerare conclusa l'installazione e la configurazione iniziale di Suricata su Ubuntu 18.04 LTS. Ora inizia la parte più interessante: nel prossimo articolo collegheremo il server virtuale alla rete dell'ufficio tramite VPN e inizieremo ad analizzare tutto il traffico in entrata e in uscita. Prestando particolare attenzione al blocco degli attacchi DDoS, all'attività di malware e ai tentativi di sfruttamento delle vulnerabilità nei servizi accessibili dalle reti pubbliche. Per chiarezza, simuleremo attacchi dei tipi più comuni.

Snort o Suricata. Parte 2: installazione e configurazione iniziale di Suricata

Snort o Suricata. Parte 2: installazione e configurazione iniziale di Suricata

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster