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:
- 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.
- Regole Personalizzabili: Gli amministratori possono definire regole personalizzate per adattare Suricata alle specifiche esigenze della loro rete e alle minacce specifiche che desiderano rilevare.
- Archiviazione di Log: Suricata registra dettagliati log di attività, consentendo agli amministratori di analizzare e investigare eventi sospetti e incidenti di sicurezza.
- 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.
- 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.