Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Installazione

Come installare Snort, strumento essenziale per l'analisi dei pacchetti di una rete per l'intrusion detection, su Ubuntu 16.04.
Come installare Snort, strumento essenziale per l'analisi dei pacchetti di una rete per l'intrusion detection, su Ubuntu 16.04.
Link copiato negli appunti

In questa lezione vedremo come installare Snort 2.9.9.x su una macchina Ubuntu Server 16.04. Prima di iniziare è bene precisare che, nel caso in cui abbiamo installato Snort su VirtualBox, è necessario abilitare il network bridging (come mostrato in figura), che consentirà la comunicazione tra la macchina host e guest:

Figura 1. Bridging su VirtualBox (click per ingrandire)

Bridging su VirtualBox

Terminato l’installazione di Ubuntu, aggiorniamo dei pacchetti del sistema operativo ed installiamo OpenSSH-Server, che consentirà la gestione remota del server Snort:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install -y openssh-server

A questo punto, riavviamo per essere certi che l’aggiornamento del sistema sia andato a buon fine:

sudo reboot

Prerequisiti per l'installazione

Alcune schede di rete utilizzano funzionalità quali “Large Receive Offload" (lro) e “Generic Receive Offload" (gro),
che possono causare problemi con la rilevazione di pacchetti sospetti. Per questo motivo è preferibile disabilitarle.
A tal fine, apriamo il file di configurazione delle interfacce di rete, digitando:

sudo nano /etc/network/interfaces

Aggiungiamo quindi le seguenti linee in coda alla sezione di configurazione dell’interfaccia che utilizzeremo per monitorare il traffico di rete (che in questo esempio è eth0):

post-up ethtool -K eth0 gro off
post-up ethtool -K eth0 lro off

Passiamo adesso all’installazione dei pacchetti necessari per la compilazione ed installazione di Snort:

sudo apt-get install -y build-essential
sudo apt-get install -y libpcap-dev libpcre3-dev libdumbnet-dev
sudo apt-get install -y libnghttp2-dev
sudo apt-get install -y zlib1g-dev liblzma-dev openssl libssl-dev
sudo apt-get install -y bison flex

Creiamo una cartella dove andremo a scaricare i sorgenti di Snort:

mkdir ~/snort_src
cd ~/snort_src

Scarichiamo la Data Acquisition Library (DAQ), come segue:

wget https://snort.org/downloads/snort/daq-2.0.6.tar.gz
tar -xvzf daq-2.0.6.tar.gz
cd daq-2.0.6
./configure
make
sudo make install

Durante l’installazione, lo script dovrebbe stampare a video le righe seguenti, che assicurano che DAQ abbia installato il supporto alle librerie di base:

Build PCAP DAQ module...... : yes
Build AFPacket DAQ module.. : yes

La libreria “PCAP” è necessaria per leggere pacchetti dalle interfacce di rete, mentre “AFPacket” risulta necessaria per eseguire Snort come IPS.

Installazione

Posizioniamoci all’interno della directory snort_src precedentemente creata, ed eseguiamo i seguenti comandi per scaricare ed installare Snort:

wget https://www.snort.org/downloads/archive/snort/snort-2.9.9.0.tar.gz
cd ~/snort_src
tar -xvzf snort-2.9.9.0.tar.gz
cd snort-2.9.9.0
./configure --enable-sourcefire
make
sudo make install

Se non ci sono errori, dovremo ora aggiornare le librerie condivise, e creare un link simbolico all’eseguibile appena creato:

sudo ldconfig
sudo ln -s /usr/local/bin/snort  /usr/sbin/snort

Proviamo dunque ad eseguire Snort, digitando il comando:

snort –V

Se tutto è andato bene, l'output che otterremo sarà simile al seguente:

Figura 2. Prima esecuzione di Snort (click per ingrandire)

Prima esecuzione di Snort

Configurazione dell’utente

È buona prassi che Snort non venga eseguito con i privilegi di root. Per questo motivo, sarà necessario creare un nuovo account utente ed un nuovo gruppo. Eseguiamo quindi le seguenti operazioni, che permettono di creare l’utente snort facente parte del gruppo snort:

sudo groupadd snort
sudo useradd snort -r -s /sbin/nologin -c SNORT_IDS -g snort

Adesso creiamo la struttura delle directory necessarie per la memorizzazione dei pacchetti, delle regole e degli alert generati da Snort.

Directory per le regole:

sudo mkdir /etc/snort
sudo mkdir /etc/snort/rules
sudo mkdir /etc/snort/rules/iplists
sudo mkdir /etc/snort/preproc_rules
sudo mkdir /usr/local/lib/snort_dynamicrules
sudo mkdir /etc/snort/so_rules
sudo touch /etc/snort/rules/iplists/black_list.rules
sudo touch /etc/snort/rules/iplists/white_list.rules
sudo touch /etc/snort/rules/local.rules
sudo touch /etc/snort/sid-msg.map

Directory per il logging dei pacchetti e delle attività di Snort:

sudo mkdir /var/log/snort
sudo mkdir /var/log/snort/archived_logs

Infine, settiamo i permessi delle directory appena create, in modo che l’utente snort possa effettivamente accedervi:

sudo chmod -R 5775 /etc/snort
sudo chmod -R 5775 /var/log/snort
sudo chmod -R 5775 /var/log/snort/archived_logs
sudo chmod -R 5775 /etc/snort/so_rules
sudo chmod -R 5775 /usr/local/lib/snort_dynamicrules
sudo chown -R snort:snort /etc/snort
sudo chown -R snort:snort /var/log/snort
sudo chown -R snort:snort /usr/local/lib/snort_dynamicrules

Configurazione di Snort

Per configurare correttamente Snort, dobbiamo copiare alcuni dei file di configurazione contenuti nei sorgenti all’interno delle directory appena create. Per fare ciò, eseguiamo la seguente lista di comandi:

cd ~/snort_src/snort-2.9.9.0/etc/
sudo cp *.conf* /etc/snort
sudo cp *.map /etc/snort
sudo cp *.dtd /etc/snort
cd ~/snort_src/snort-2.9.9.0/src/dynamic-preprocessors/build/usr/local/lib/snort_dynamicpreprocessor/
sudo cp * /usr/local/lib/snort_dynamicpreprocessor/

Adesso commentiamo le linee contenute nel file di configurazione snort.conf, che si riferiscono ai path delle regole esterne.
Questo perché la gestione delle regole sarà invece demandata al plugin “PulledPork”, che verrà illustrato in un secondo momento:

sudo sed -i "s/include \$RULE\_PATH/#include \$RULE\_PATH/" /etc/snort/snort.conf

Possiamo verificare che i path siano stati effettivamente commentati, aprendo il file snort.conf e verificando che tutte le righe
che iniziano con include $RULE_PATH presentano il caratter # in testa. Modifichiamo ancora il file snort.conf, ed indichiamo la sottorete HOME_NET che verrà monitorata da snort:

sudo nano /etc/snort/snort.conf
ipvar HOME_NET networkaddress/mask

Assicuriamoci che l’interfaccia di rete su cui Snort sta in ascolto abbia un indirizzo di rete appartenente alla HOME_NET su indicata. Con il file snort.conf ancora aperto in scrittura, indichiamo i path corretti delle regole:

var RULE_PATH /etc/snort/rules
var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH /etc/snort/preproc_rules
var WHITE_LIST_PATH /etc/snort/rules/iplists
var BLACK_LIST_PATH /etc/snort/rules/iplists

Decommentiamo infine la seguente linea, per consentire il testing di Snort:

include $RULE_PATH/local.rules

L’ultima verifica

A questo punto non rimane che verificare se le modifiche effettuate al file di configurazione sono valide e se i riferimenti sono tutti corretti. Eseguiamo il seguente comando (supponendo ancora che eth0 sia il nome dell'interfaccia di rete):

sudo snort -T -i eth0 -c /etc/snort/snort.conf

Se tutto è andato bene, l'output sarà il seguente:

Figura 3. Output del test del file di configurazione di Snort (click per ingrandire)

Output del test del file di configurazione di Snort

Il flag –T indica di eseguire un test per la configurazione di Snort, mentre il flag -c indica quale file utilizzare. Il flag -i specifica, infine, il nome dell’interfaccia di rete.

Ti consigliamo anche