Suricata IDS: Intrusion Detection System

wwww

 

Buongiorno a tutti!
Come anticipato in uno scorso post, oggi andremo ad aumentare la sicurezza del nostro web server grazie a un fantastico software chiamato Suricata IDS, ossia: Intrusion Detecting System.

 

 

CHE COSA È SURICATA
Suricata è uno dei migliori programmi di Intrusion Detecting System disponibili sulla piazza. È un programma che analizza tutto il traffico di rete su un server e notifica all'amministratore del sistema tutti gli errori e/o gli eventi sospetti.
Una caratteristica molto importante di Suricata è la sua scalabilità. Infatti ha un meccanismo di multi-threading, in modo da essere eseguito in parallelo su più cpu.

 

 

INSTALLAZIONE
Per prima cosa ci occupiamo di installare le dipendenze necessarie alla compilazione del software. Apriamo il terminale e digitiamo:

sudo apt-get install wget build-essential libpcre3-dev libpcre3-dbg automake autoconf libtool libpcap-dev libnet1-dev libyaml-dev zlib1g-dev libcap-ng-dev libjansson-dev magic libmagic-dev pkg-config

Al termine dell'installazione ci spostiamo all'interno della partizione temporanea del nostro sistema operativo con:

cd /tmp

Scarichiamo i sorgenti dal sito ufficiale con il comando:

wget http://www.openinfosecfoundation.org/download/suricata-2.0.9.tar.gz

Una volta completato il download, andiamo a decomprimere l'archivio con:

tar -xvf suricata-2.0.9.tar.gz

Ci spostiamo nella cartella di Suricata con:

cd suricata-2.0.9

A questo punto avviamo lo script per la configurazione con il comando:

./configure --prefix=/usr/ --sysconfdir=/etc --localstatedir=/var

Dove:

  • --prefix=/usr/ - Impone di installare Suricata all'interno di /usr/bin
  • --sysconfdir=/etc - Indica di installare tutti i file di configurazione in /etc/suricata
  • --localstatedir=/var - Significa che Suricata andrà' a scrivere i file di log in /var/log/suricata

ora andiamo a compilare i sorgenti del software con:

make

e successivamente:

sudo make install

e ancora

sudo make install-full

 

 

CONFIGURAZIONE DI SURICATA
A questo punto apriamo il file di configurazione con:

sudo nano /etc/suricata/suricata.yaml

 

Utenti e gruppi:
E' possibile impostare a Suricata un user e un group sotto il quale venga eseguito. Andiamo a decommentare la parte del file con:

 run-as:
   user: suri
   group: suri

 

Directory di log:
Andando a editare la seguente stringa possiamo impostare la cartella in cui il programma andrà a scrivere i file di log:

default-log-dir: /var/log/suricata

 

Suddividere i log:
Spesso e' utile tenere separati i file di log che Suricata andrà inevitabilmente a creare, a seconda degli eventi che sono gestiti.
Troviamo questa sezione sotto la stringa:

outputs:

 

Numero di thread creati:
Suricata lavora a thread, quindi per spalare meglio il carico di lavoro possiamo impostare il numero massimo di thread per ogni core della nostra cpu. Lo facciamo andando a editare:

detect-thread-ratio: 1.5

 

Thread da gestire:
Suricata crea numerosi tipi di thread differenti, ognuno con un compito specifico:

  • management
  • receive
  • decode
  • stream
  • detect
  • verdict
  • reject
  • output

Per ogni tipo di thread e' possibile impostare da uno a tre opzioni:

  • cpu: il numero della cpu in cui eseguire il thread (attenzione: si parte a contare da 0), si possono utilizzare anche i range con (0-n) o separarli con la virgola.
  • mode: troviamo due modalità:
    • balanced: in cui il thread può essere processato da qualunque cpu impostata.
    • exclusive: in cui una cpu esegue il thread.
  • prio: ogni thread ha una priorità di esecuzione. Si distingue in:
    • low
    • medium
    • high
    • default
cpu-affinity:
    - management-cpu-set:
        cpu: [ 0 ]  # include only these cpus in affinity settings
    - receive-cpu-set:
        cpu: [ 0 ]  # include only these cpus in affinity settings
    - decode-cpu-set:
        cpu: [ 0, 1 ]
        mode: "balanced" 
    - stream-cpu-set:
        cpu: [ "0-1" ]
    - detect-cpu-set:
        cpu: [ "all" ]
        mode: "exclusive" # run detect threads in these cpus
        # Use explicitely 3 threads and don't compute number by using
        # detect-thread-ratio variable:
        # threads: 3
        prio:
          low: [ 0 ]
          medium: [ "1-2" ]
          high: [ 3 ]
          default: "medium" 
    - verdict-cpu-set:
        cpu: [ 0 ]
        prio:
          default: "high" 
    - reject-cpu-set:
        cpu: [ 0 ]
        prio:
          default: "low" 
    - output-cpu-set:
        cpu: [ "all" ]
        prio:
           default: "medium"

 

 

IMPOSTIAMO LE REGOLE DI SURICATA
Come molti software di sicurezza, anche Suricata per garantire l'integrità' del sistema ha bisogno di seguire determinate regole. Per gestirle meglio andiamo ad utilizzare il software Oinkmaster. Lo installiamo con:

sudo apt-get install oinkmaster

Grazie a questo programma possiamo installare politiche diverse. Le principali sono:

  • Emerging Threats (ET)
  • Emerging Threats Pro
  • VRT

Noi all'inizio utilizzeremo Emerging Threats (ET). Apriamo il file di configurazione di Oinkmaster con:

sudo nano /etc/oinkmaster.conf

e inseriamo la stringa:

url=http://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz

a questo punto creiamo la cartella per le regole (se non già' presente) con:

sudo mkdir /etc/suricata/rules/old-rules

e diamo:

sudo oinkmaster -C /etc/oinkmaster.conf -b /etc/suricata/rules/old-rules -o /etc/suricata/rules

In questo modo andremo a scrivere in /etc/suricata/rules il nuovo file di configurazione delle regole. Oinkmaster e' molto utile per installare le nuove regole o per aggiornarle.

 

 

UPDATE AUTOMATICO DELLE REGOLE
Dato che le varie regole vengono aggiornate spesso, anche ogni giorno, e' bene farlo. Ovviamente possiamo dare il comando noi ogni volta che vogliamo, oppure possiamo farlo fare al computer per noi grazie all'utilizzo di Cron.

Per imporre al sistema di eseguire questo comando, diamo da terminale:

sudo crontab -e

e inseriamo la seguente stringa:

0 1 * * * nomeutente oinkmaster -C /etc/oinkmaster.conf -b /etc/suricata/rules/old-rules -o /etc/suricata/rules

Salviamo con ctrl+x e il gioco e' fatto.

 

 

CONCLUSIONE
Suricata e' un software molto complesso e in questo post non abbiamo la pretesa di essere stati al 100% esaustivi e precisi. Vi consigliamo quindi, per esigenze particolari, di leggere la documentazione ufficiale che inseriamo sempre nella sezione Fonti.
Al prossimo post! 😉

 

FONTI

Dottore in Informatica. Appassionato di computer fin dal primo PC Olivetti con Windows 95 e la bellezza di 8 MB di RAM.
Utilizzatore Linux da 5 anni, credo profondamente nella filosofia open source.
Dopo tante distro provate sul mio fidato Toshiba, uso Fedora per lo studio e il divertimento.

Lascia un commento