Il Ruolo Cruciale di un sistema come Suricata nella Sicurezza dei Server

Parole
Marco Bellomo
Immagini
Francesca Uguzzoni
Tempo di lettura
5

Un potente sistema open-source di rilevazione delle intrusioni di rete (IDS) e di prevenzione delle intrusioni di rete (IPS)

N

L'Importanza della Sicurezza dei Server

I server sono il cuore pulsante delle reti informatiche. Gestiscono il flusso di dati, ospitano siti web, applicazioni e database critici. Questi sono spesso il bersaglio di attacchi informatici mirati, che possono compromettere la privacy dei dati, causare danni finanziari e interrompere operazioni aziendali. Pertanto, è fondamentale adottare misure proattive per rilevare e prevenire le intrusioni.

Suricata: Ottimo per la rilevazione delle Intrusioni

Suricata è un potente sistema open-source di rilevazione delle intrusioni di rete (IDS) e di prevenzione delle intrusioni di rete (IPS) progettato per individuare attività sospette o dannose all'interno di una rete. Questo strumento è stato sviluppato per operare in tempo reale e proteggere i server da una vasta gamma di minacce, tra cui malware, attacchi DDoS, tentativi di exploit e altro ancora.

Le caratteristiche chiave di Suricata includono:

  1. Analisi del Traffico di Rete: Suricata ispeziona il traffico di rete in ingresso ed in uscita, analizzando i pacchetti di dati alla ricerca di comportamenti anomali o firme di attacchi noti.
  2. Regole Personalizzabili: Gli amministratori possono definire regole personalizzate per adattare Suricata alle specifiche esigenze della loro rete e alle minacce specifiche che desiderano rilevare.
  3. Archiviazione di Log: Suricata registra dettagliati log di attività, consentendo agli amministratori di analizzare e investigare eventi sospetti e incidenti di sicurezza.
  4. Elevata Scalabilità: Suricata è in grado di gestire volumi di traffico elevati e può essere utilizzato su server di varie dimensioni per adattarsi alle esigenze specifiche.
  5. Comunità Attiva: Grazie alla sua natura open-source, Suricata è supportato da una comunità di sviluppatori e utenti che contribuiscono a mantenerlo aggiornato e sicuro.

Non solo log

Suricata non si limita solo a rilevare le intrusioni; può anche intraprendere azioni preventive per bloccare le minacce in tempo reale. Questa capacità lo rende uno strumento molto efficace per proteggere i server da attacchi noti e sconosciuti.

Un caso concreto

Iniziamo a installare suricata su una macchina ubuntu 22.04

Per iniziare, è necessario aggiungere le informazioni sul repository software della Open Information Security Foundation (OISF) su Ubuntu

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

una volta dato consenso alla cosa ( premendo invio) possiamo finalmente installare suricata

sudo apt install suricata

e assicurarci che suricata sia tra i servizi che ripartono automaticamente al riavvio del server 

sudo systemctl enable suricata.service

a questo punto possiamo stoppare un attimo il servizio, per passare alla configurazione 

sudo systemctl stop suricata.service

Il pacchetto Suricata dai repository OISF include un file di configurazione che copre una vasta gamma di casi d'uso. La modalità predefinita per Suricata è la modalità IDS, quindi non verrà bloccato o eliminato alcun traffico, ma verrà solo registrato. Meglio lasciare questa modalità all’inizio, prima di aver preso dimestichezza con il sistema. Una volta chiari i concetti e data un’occhiata agli avvisi, si può anche pensare di abilitare cautamente il blocco del traffico sospetto

Per controllare e cambiare il file di configurazione di suricata, basterà fare 

sudo nano /etc/suricata/suricata.yaml


Potremmo voler sovrascrivere l'interfaccia di rete predefinita o specificare le interfacce che si desidera che Suricata monitori per il traffico. Il file di configurazione incluso nel pacchetto OISF Suricata predefinisce l'ispezione del traffico su un dispositivo denominato eth0. Se il nostro sistema utilizza un'altra interfaccia di rete predefinita o se si desidera monitorare il traffico su più di un'interfaccia, sarà necessario modificare questo valore.

Per determinare il nome del dispositivo della nostra interfaccia di rete predefinita, possiamo utilizzare il comando "ip" nel seguente modo:

ip -p -j route show default

per sicurezza, basterà controllare questa sezione

# Linux high speed capture support

af-packet:

- interface: eth0

# Number of receive threads. "auto" uses the number of cores

#threads: auto

# Default clusterid. AF_PACKET will load balance packets based on flow.

cluster-id: 99

. . .

e controllare che l’interfaccia controllata sia quella nostra. 

Infine, volendo, si possono aggiungere queste due righe in fondo al file

detect-engine:

- rule-reload: true

per attivare il reload automatico di suricata al cambio delle regole, sfruttando per esempio questo comando 

sudo kill -usr2 $(pidof suricata)

Suricata all’inizio include un insieme limitato di regole di rilevamento (nella directory /etc/suricata/rules), quindi Suricata a questo stadio dell’installazione rileverebbe solo una quantità limitata di traffico anomalo.

lanciando suricata-update si potrò scaricare set di regole da provider esterni. 

sudo suricata-update

facciamo attenzione al fatto che verranno messe su 

/var/lib/suricata/rules/suricata.rules

facciamo quindi: 

sudo suricata-update list-sources

volendo controllare la configurazione, potremo fare 

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

possiamo a questo punto startare di nuovo suricata

sudo systemctl start suricata.service

Il primo test per controllare se suricata funziona, è di default: 

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

e controllando il log 

tail /var/log/suricata/fast.log

si potrà verificare l’allarme

per iniziare a testare le nostre regole, potremo creare il nostro file, quindi 

nano /etc/suricata/rules/local.rules

dentro possiamo mettere le nostre specifiche regole

eccone un paio divertenti

alert tcp any any -> METTIIPSERVER 8080 (msg:"Tentativo di connessione alla porta 8080 first rule"; sid:1000003;)

alert tcp any any -> METTIIPSERVER 3306 (msg:"Tentativo di connessione alla porta 3306"; sid:1000003;)



Mettiamo un nginx di test con porta 80, 8080 e 3306 che mostra un semplice messaggio e non fa assolutamente nulla.

Mettiamoci a guardare i log 

tail -f /var/log/suricata/fast.log

Osserviamo i vari tentativi di scan di quelle porte , e di tentativo di accesso, ad un server su cui non c’è assolutamente nulla.

La riprova in più, per ricordarsi di abilitare firewall su un server e che comunque non è male sapere sempre esattamente le porte abilitate e di non tenere servizi zombie su delle macchine. 

Sicuramente da non trascurare anche il controllo del traffico in uscita

Su macchine su cui abbiamo installato plesk per esempio o strumenti similari, su cui però non mandiamo email, può essere una chicca inserire una regola che controlli o mandi alert sui tentativi di utilizzo della porta 25. 

Naturalmente analizzando un po’ di tentativi di intrusione, la documentazione di Suricata, e perchè no, con l’aiuto di ChatGpt, non sarà difficile sperimentare e trovare il setting più adatto alle nostre esigenze, alla ricerca di un sistema sempre più sicuro.

Analizza la tua presenza online.

Scrivici per una consulenza gratuita



Richiedi consulenza

Marco Bellomo

Chairman

A diciott'anni pensavo che sarei diventato uno scrittore di fama mondiale e che avrei dominato le classifiche con il mio oscuro ciclo fantasy. A ventiquattr'anni pensavo che il PHP fosse immortale. Oggi mi piace non dare nulla per scontato, forse perché ...