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
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
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 dire al pc 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
- Immagini di Joel Garia.
- Suricata IDS.
- Xmodulo.
Nessun commento:
Posta un commento