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. Ciò comporta un aumento del carico tecnico e, in particolare, incrementa i requisiti di prestazione degli IDS/IPS. È possibile acquistare hardware specializzato costoso, ma c'è un'opzione più economica: l'implementazione di uno dei sistemi open source. Molti amministratori principianti ritengono che installare e configurare un IPS gratuito sia piuttosto complicato. Nel caso di Suricata, questo non è del tutto vero: è possibile installarla e iniziare a contrastare attacchi tipici con un set di regole gratuite in pochi minuti.

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

A cosa serve un altro IPS open source?

Per molto tempo, il sistema Snort, considerato standard, è stato sviluppato dalla fine degli anni '90, quindi inizialmente era monothread. Negli anni, ha acquisito tutte le funzionalità moderne, come il supporto per IPv6, la capacità di analizzare i protocolli di livello applicativo o un modulo di accesso universale ai dati.

Il motore base Snort 2.X ha imparato a lavorare con più core, ma è rimasto monothread e quindi non può sfruttare in modo ottimale i vantaggi delle attuali piattaforme hardware.

Il problema è stato risolto nella terza versione del sistema, ma ci è voluto così tanto tempo per prepararla che è emersa sul mercato Suricata, scritta da zero. Nel 2009 è stata sviluppata proprio come un'alternativa multithread a Snort, dotata di funzioni IPS out of the box. 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 si sono verificati, ma sono stati risolti piuttosto rapidamente.

Perché Suricata?

In Suricata ci sono diversi moduli (come in Snort): cattura, raccolta, decodifica, rilevamento e output. Per impostazione predefinita, il traffico catturato viene inviato alla decodifica in un unico stream, anche se questo carica di più il sistema. Se necessario, gli stream possono essere divisi nelle impostazioni e distribuiti su processori diversi: Suricata è molto ben ottimizzata per hardware specifico, anche se questo non è più a livello HOWTO per principianti. Vale anche la pena notare la presenza in Suricata di strumenti avanzati per l'ispezione HTTP basati sulla libreria HTP. Questi possono essere utilizzati anche per il logging del traffico senza rilevamento. Il sistema supporta anche la decodifica IPv6, inclusi i tunnel IPv4-in-IPv6, IPv6-in-IPv6 e altri.

Per la cattura del traffico possono essere utilizzate diverse interfacce (NFQueue, IPFRing, LibPcap, IPFW, AF_PACKET, PF_RING), e in modalità Unix Socket è possibile analizzare automaticamente i file PCAP catturati da un altro sniffer. Inoltre, l'architettura modulare di Suricata facilita l'aggiunta di nuovi elementi per la cattura, decodifica, analisi e elaborazione dei pacchetti di rete. È importante notare che in Suricata il blocco del traffico avviene tramite i mezzi del filtro nativo del sistema operativo. In GNU/Linux sono disponibili due modalità di lavoro IPS: attraverso 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 esamina secondo le proprie regole e emette uno dei tre verdetti: NF_ACCEPT, NF_DROP e NF_REPEAT. I primi due non richiedono spiegazioni, mentre l'ultimo consente di etichettare i pacchetti e reinviarli all'inizio della tabella iptables attuale. La modalità AF_PACKET offre prestazioni più elevate, ma implica una serie di limitazioni per il sistema: deve avere due interfacce di rete e funzionare come gateway. Il pacchetto bloccato semplicemente non viene inoltrato alla seconda interfaccia.

Una caratteristica importante di Suricata è la possibilità di utilizzare le regole di Snort. L'amministratore ha accesso, in particolare, ai set di regole Sourcefire VRT e OpenSource Emerging Threats, così come a Emerging Threats Pro commerciali. L'output unificato può essere analizzato utilizzando backend popolari, ed è supportato anche l'output in PCAP e Syslog. Le configurazioni di sistema e le regole sono memorizzate in file in formato YAML, che è facilmente leggibile e può essere elaborato automaticamente. Il motore di Suricata riconosce numerosi protocolli, quindi non è necessario legare le regole a un numero di porta specifico. Inoltre, nelle regole Suricata è attivamente praticata la concezione di flowbits. Per monitorare le attivazioni, si utilizzano variabili di sessione che consentono di creare e applicare diversi contatori e flag. Molti IDS considerano diverse connessioni TCP come entità separate e potrebbero non vedere il legame tra di esse, indicativo dell'inizio di un attacco. Suricata cerca di vedere il quadro complessivo e, in molti casi, riconosce il traffico malevolo distribuito su diverse connessioni. Si potrebbe discutere a lungo sui suoi vantaggi, meglio passare all'installazione e configurazione.

Come installare?

Installeremo Suricata su un server virtuale che esegue Ubuntu 18.04 LTS. Tutti i comandi devono essere eseguiti con i privilegi di amministratore (root). L'opzione più sicura è connettersi al server tramite SSH come utente normale, quindi utilizzare il comando sudo per aumentare i privilegi. Innanzitutto, dobbiamo installare 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 l'interface eth0 predefinita con il reale nome 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 è in gran parte limitata alla modifica di questo file di configurazione. Contiene molti parametri che per nome e scopo corrispondono agli equivalenti di Snort. Tuttavia, la sintassi è completamente diversa, ma il file è molto più facile da leggere rispetto ai file di configurazione 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 procedere è importante controllare i valori delle variabili nella sezione vars.

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

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

Dopo dobbiamo eseguire il comando suricata-update per installare il pacchetto 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 di nuovo le fonti aggiornate:

sudo suricata-update list-sources

Se necessario, è possibile abilitare 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 di nuovo le regole:

sudo suricata-update

A questo punto, l'installazione e la configurazione iniziale di Suricata su Ubuntu 18.04 LTS possono dirsi completate. Ora inizia la parte 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. Presteremo particolare attenzione al blocco degli attacchi DDoS, all'attività del malware e ai tentativi di sfruttare 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, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS - ProHoster