Sicurezza Rete · 10 min read · Jan 10, 2026

Installa e Configura il Sistema di Rilevamento Intrusioni Snort 3 su Ubuntu 22.04

Snort è un sistema di prevenzione e rilevamento intrusioni open source (IDS) per difendersi dagli attacchi DDoS. Utilizza regole integrate che aiutano a definire l’attività di rete malevola e utilizza queste regole per trovare pacchetti che corrispondono a esse e genera avvisi per gli utenti. Snort può identificare gli attacchi più recenti, le infezioni da malware, i sistemi compromessi e le violazioni delle politiche di rete.

Caratteristiche

  • Monitoraggio del traffico in tempo reale.
  • Registrazione dei pacchetti. Analisi del protocollo.
  • Corrispondenza dei contenuti. Fingerprinting del sistema operativo.
  • Può essere installato in qualsiasi ambiente di rete.
  • Crea log.

In questo tutorial, ti mostreremo come installare Snort su Ubuntu 22.04.

Requisiti

  • Un server che esegue Ubuntu 22.04.
  • Una password di root configurata sul server.

Installa le Dipendenze Necessarie

Prima di iniziare, dovrai installare alcune dipendenze sul tuo server. Puoi installarle tutte eseguendo il seguente comando:

apt install build-essential libpcap-dev libpcre3-dev libnet1-dev zlib1g-dev luajit hwloc libdnet-dev libdumbnet-dev bison flex liblzma-dev openssl libssl-dev pkg-config libhwloc-dev cmake cpputest libsqlite3-dev uuid-dev libcmocka-dev libnetfilter-queue-dev libmnl-dev autotools-dev libluajit-5.1-dev libunwind-dev libfl-dev -y

Una volta installate tutte le dipendenze, puoi procedere al passaggio successivo.

Installa Snort DAQ

Successivamente, dovrai installare la libreria di acquisizione dati sul tuo sistema. Per impostazione predefinita, non è disponibile nel repository predefinito di Ubuntu. Quindi dovrai compilarla dal sorgente.

Per prima cosa, scarica Snort DAQ da Git con il seguente comando:

git clone https://github.com/snort3/libdaq.git

Una volta completato il download, naviga nella directory scaricata e configurala con il seguente comando:

cd libdaq  
./bootstrap  
./configure

Dovresti vedere il seguente output:

    cc:             gcc
    cppflags:       
    am_cppflags:     -fvisibility=hidden -Wall -Wmissing-declarations -Wpointer-arith -Wcast-align -Wcast-qual -Wformat -Wformat-nonliteral -Wformat-security -Wundef -Wwrite-strings -Wextra -Wsign-compare -Wno-unused-parameter -fno-strict-aliasing -fdiagnostics-show-option
    cflags:         -g -O2
    am_cflags:       -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -Wnested-externs
    ldflags:        
    am_ldflags:     
    libs:           

    code_coverage_enabled:  no
    code_coverage_cppflags: 
    code_coverage_cflags:   
    code_coverage_ldflags:  

    Build AFPacket DAQ module.. : yes
    Build BPF DAQ module....... : yes
    Build Divert DAQ module.... : no
    Build Dump DAQ module...... : yes
    Build FST DAQ module....... : yes
    Build netmap DAQ module.... : no
    Build NFQ DAQ module....... : yes
    Build PCAP DAQ module...... : yes
    Build Savefile DAQ module.. : yes
    Build Trace DAQ module..... : yes
    Build GWLB DAQ module...... : yes

Successivamente, installalo con il seguente comando:

make  
make install

Installa Gperftools

Per prima cosa, scarica l’ultima versione di Gperftools con il seguente comando:

cd  
wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.9.1/gperftools-2.9.1.tar.gz

Una volta completato il download, estrai il file scaricato con il seguente comando:

tar xzf gperftools-2.9.1.tar.gz

Successivamente, naviga nella directory scaricata e compila con il seguente comando:

cd gperftools-2.9.1/  
./configure

Successivamente, installalo con il seguente comando:

make  
make install

Installa Snort

Successivamente, scarica l’ultima versione di Snort con il seguente comando:

cd  
wget https://github.com/snort3/snort3/archive/refs/tags/3.1.43.0.tar.gz

Successivamente, estrai il file scaricato con il seguente comando:

tar -xvzf 3.1.43.0.tar.gz

Successivamente, naviga nella directory estratta e configurala con il seguente comando:

cd snort3-3.1.43.0  
./configure_cmake.sh --prefix=/usr/local --enable-tcmalloc

Otterrai il seguente output:

snort version 3.1.43.0

Install options:
    prefix:     /usr/local
    includes:   /usr/local/include/snort
    plugins:    /usr/local/lib/snort

Compiler options:
    CC:             /usr/bin/cc
    CXX:            /usr/bin/c++
    CFLAGS:            -fvisibility=hidden   -DNDEBUG -g -ggdb  -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free  -O2 -g -DNDEBUG
    CXXFLAGS:          -fvisibility=hidden   -DNDEBUG -g -ggdb  -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free  -O2 -g -DNDEBUG
    EXE_LDFLAGS:        
    MODULE_LDFLAGS:     

Feature options:
    DAQ Modules:    Static (afpacket;bpf;dump;fst;gwlb;nfq;pcap;savefile;trace)
    libatomic:      System-provided
    Hyperscan:      OFF
    ICONV:          ON
    Libunwind:      ON
    LZMA:           ON
    RPC DB:         Built-in
    SafeC:          OFF
    TCMalloc:       ON
    JEMalloc:       OFF
    UUID:           ON
-------------------------------------------------------

-- Configuring done
-- Generating done
-- Build files have been written to: /root/snort3-3.1.43.0/build

Successivamente, cambia la directory nella directory di build e installa Snort con il seguente comando:

cd build  
make  
make install  
ldconfig

Ora puoi verificare la versione di Snort utilizzando il seguente comando:

snort -V

Otterrai il seguente output:

   ,,_     -*> Snort++ <*-
  o"  )~   Version 3.1.43.0
   ''''    By Martin Roesch & The Snort Team
           http://snort.org/contact#team
           Copyright (C) 2014-2022 Cisco and/or its affiliates. All rights reserved.
           Copyright (C) 1998-2013 Sourcefire, Inc., et al.
           Using DAQ version 3.0.9
           Using LuaJIT version 2.1.0-beta3
           Using OpenSSL 3.0.2 15 Mar 2022
           Using libpcap version 1.10.1 (with TPACKET_V3)
           Using PCRE version 8.39 2016-06-14
           Using ZLIB version 1.2.11
           Using LZMA version 5.2.5

Configura Snort

Per prima cosa, dovrai impostare la tua interfaccia di rete in modalità promiscuo in modo che possa vedere tutto il traffico di rete inviato ad essa.

Puoi impostarlo utilizzando il seguente comando:

ip link set dev eth0 promisc on

Ora puoi verificarlo con il seguente comando:

ip add sh eth0

Successivamente, dovrai anche disabilitare l’Offloading dell’Interfaccia. Per prima cosa, controlla se questa funzione è abilitata o meno utilizzando il seguente comando:

ethtool -k eth0 | grep receive-offload

Otterrai il seguente output:

generic-receive-offload: on
large-receive-offload: off [fixed]

Ora puoi disabilitarlo utilizzando il seguente comando:

ethtool -K eth0 gro off lro off

Crea un File di Servizio Systemd per Snort NIC

Successivamente, dovrai creare un file di servizio systemd per Snort NIC.

nano /etc/systemd/system/snort3-nic.service

Aggiungi le seguenti righe:

[Unit]
Description=Imposta Snort 3 NIC in modalità promiscuo e Disabilita GRO, LRO all'avvio
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/sbin/ip link set dev eth0 promisc on
ExecStart=/usr/sbin/ethtool -K eth0 gro off lro off
TimeoutStartSec=0
RemainAfterExit=yes

[Install]
WantedBy=default.target

Salva e chiudi il file, quindi ricarica il demone systemd per applicare le modifiche:

systemctl daemon-reload

Successivamente, avvia e abilita Snort con il seguente comando:

systemctl start snort3-nic.service  
systemctl enable snort3-nic.service

Puoi controllare lo stato di Snort con il seguente comando:

systemctl status snort3-nic.service

Otterrai il seguente output:

? snort3-nic.service - Imposta Snort 3 NIC in modalità promiscuo e Disabilita GRO, LRO all'avvio
     Loaded: loaded (/etc/systemd/system/snort3-nic.service; disabled; vendor preset: enabled)
     Active: active (exited) since Tue 2022-10-11 16:24:15 UTC; 6s ago
    Process: 95745 ExecStart=/usr/sbin/ip link set dev eth0 promisc on (code=exited, status=0/SUCCESS)
    Process: 95746 ExecStart=/usr/sbin/ethtool -K eth0 gro off lro off (code=exited, status=0/SUCCESS)
   Main PID: 95746 (code=exited, status=0/SUCCESS)
        CPU: 11ms

Oct 11 16:24:15 ubuntu2204 systemd[1]: Starting Imposta Snort 3 NIC in modalità promiscuo e Disabilita GRO, LRO all'avvio...
Oct 11 16:24:15 ubuntu2204 systemd[1]: Finished Imposta Snort 3 NIC in modalità promiscuo e Disabilita GRO, LRO all'avvio.

Installa le Regole di Snort

Le regole sono molto importanti per il motore di rilevamento intrusioni di Snort. Per prima cosa, crea una directory per memorizzare tutte le regole:

mkdir /usr/local/etc/rules

Successivamente, scarica le regole della community con il seguente comando:

wget -qO- https://www.snort.org/downloads/community/snort3-community-rules.tar.gz | tar xz -C /usr/local/etc/rules/

Successivamente, modifica il file di configurazione principale di Snort:

nano /usr/local/etc/snort/snort.lua

Definisci la tua rete come mostrato di seguito:

HOME_NET = '192.168.56.124/32'
EXTERNAL_NET = '!$HOME_NET'

Successivamente, definisci il percorso delle regole di Snort:

ips =
{
    -- usa questo per abilitare gli avvisi del decodificatore e dell'ispezione
    --enable_builtin_rules = true,

    -- usa include per i file di regole; assicurati di impostare il tuo percorso
    -- nota che i file di regole possono includere altri file di regole
    -- (vedi anche le variabili di percorso correlate nella parte superiore di snort_defaults.lua)

    variables = default_variables,
    rules = [[
    include /usr/local/etc/rules/snort3-community-rules/snort3-community.rules
    ]]

}

Salva e chiudi il file quando hai finito.

Installa Snort OpenAppID

OpenAppID è un plugin che consente a Snort di rilevare varie applicazioni, Facebook, Netflix, Twitter e Reddit, utilizzate nella rete.

Puoi scaricarlo con il seguente comando:

wget https://www.snort.org/downloads/openappid/26425 -O OpenAppId-26425.tgz

Una volta completato il download, estrai il file scaricato con il seguente comando:

tar -xzvf OpenAppId-26425.tgz

Successivamente, copia il file binario di OpenAppID nella directory di sistema:

cp -R odp /usr/local/lib/

Successivamente, modifica il file di configurazione di Snort e definisci la tua posizione di OpenAppID:

nano /usr/local/etc/snort/snort.lua

Cambia le seguenti righe:

appid =
{
    app_detector_dir = '/usr/local/lib',
    log_stats = true,

}

Salva e chiudi il file, quindi crea una directory di log per Snort:

mkdir /var/log/snort

Infine, verifica il file di configurazione di Snort con il seguente comando:

snort -c /usr/local/etc/snort/snort.lua

Se tutto va bene, otterrai il seguente output:

--------------------------------------------------
fast pattern groups
                      src: 59
                      dst: 158
                      any: 4
                to_server: 56
                to_client: 39
--------------------------------------------------
search engine
                instances: 316
                 patterns: 10282
            pattern chars: 166369
               num states: 112212
         num match states: 9885
             memory scale: MB
             total memory: 3.42574
           pattern memory: 0.550588
        match list memory: 1.25256
        transition memory: 1.58402
        fast pattern only: 6822
--------------------------------------------------
pcap DAQ configurato per passivo.

Snort ha convalidato correttamente la configurazione (con 0 avvisi).
o")~   Snort in uscita

Crea Regole Personalizzate per Snort

Puoi anche creare le tue regole personalizzate secondo le tue esigenze. Creiamo una regola personalizzata per la richiesta ICMP in arrivo:

nano /usr/local/etc/rules/local.rules

Aggiungi la seguente riga:

alert icmp any any -> $HOME_NET any (msg:"Test di connessione ICMP"; sid:1000001; rev:1;)

Successivamente, verifica le regole con il seguente comando:

snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/rules/local.rules

Otterrai il seguente output:

search engine
                instances: 316
                 patterns: 10282
            pattern chars: 166369
               num states: 112212
         num match states: 9885
             memory scale: MB
             total memory: 3.42574
           pattern memory: 0.550588
        match list memory: 1.25256
        transition memory: 1.58402
        fast pattern only: 6822
--------------------------------------------------
pcap DAQ configurato per passivo.

Snort ha convalidato correttamente la configurazione (con 0 avvisi).
o")~   Snort in uscita

Successivamente, esegui il seguente comando per avviare Snort sulla tua interfaccia di rete utilizzando le tue regole personalizzate:

snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/rules/local.rules -i eth0 -A alert_fast -s 65535 -k none

Successivamente, apri un’altra interfaccia del terminale e pinga il tuo server. Dovresti vedere l’errore ICMP nel primo terminale:

10/11-16:45:23.848071 [] [1:1000001:1] "Test di connessione ICMP" [] [Priority: 0] [AppID: ICMP] {ICMP} 157.32.34.228 -> 209.23.11.18
10/11-16:45:23.848071 [] [1:384:8] "PROTOCOL-ICMP PING" [] [Classification: Misc activity] [Priority: 3] [AppID: ICMP] {ICMP} 157.32.34.228 -> 209.23.11.18
10/11-16:45:24.323038 [] [1:366:11] "PROTOCOL-ICMP PING Unix" [] [Classification: Misc activity] [Priority: 3] [AppID: ICMP] {ICMP} 157.32.34.228 -> 209.23.11.18
10/11-16:45:24.323038 [] [1:1000001:1] "Test di connessione ICMP" [] [Priority: 0] [AppID: ICMP] {ICMP} 157.32.34.228 -> 209.23.11.18
10/11-16:45:24.323038 [] [1:384:8] "PROTOCOL-ICMP PING" [] [Classification: Misc activity] [Priority: 3] [AppID: ICMP] {ICMP} 157.32.34.228 -> 209.23.11.18
^C catturato segnale int
== arresto
10/11-16:45:25.353007 [] [1:366:11] "PROTOCOL-ICMP PING Unix" [] [Classification: Misc activity] [Priority: 3] [AppID: ICMP] {ICMP} 157.32.34.228 -> 209.23.11.18
10/11-16:45:25.353007 [] [1:1000001:1] "Test di connessione ICMP" [] [Priority: 0] [AppID: ICMP] {ICMP} 157.32.34.228 -> 209.23.11.18
10/11-16:45:25.353007 [] [1:384:8] "PROTOCOL-ICMP PING" [**] [Classification: Misc activity] [Priority: 3] [AppID: ICMP] {ICMP} 157.32.34.228 -> 209.23.11.18

Crea un File di Servizio Systemd per Snort

Successivamente, crea un file di servizio systemd per gestire Snort tramite systemd.

nano /etc/systemd/system/snort3.service

Aggiungi le seguenti configurazioni:

[Unit]
Description=Demone Snort
After=syslog.target network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/snort -c /usr/local/etc/snort/snort.lua -s 65535 -k none -l /var/log/snort -D -i eth0 -m 0x1b -u root -g root
ExecStop=/bin/kill -9 $MAINPID

[Install]
WantedBy=multi-user.target

Salva e chiudi il file, quindi ricarica il demone systemd con il seguente comando:

systemctl daemon-reload

Successivamente, avvia e abilita il servizio Snort con il seguente comando:

systemctl enable --now snort3

Ora puoi verificare lo stato di Snort utilizzando il seguente comando:

systemctl status snort3

Otterrai il seguente output:

? snort3.service - Demone Snort
     Loaded: loaded (/etc/systemd/system/snort3.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2022-10-11 16:48:28 UTC; 17s ago
   Main PID: 95898 (snort)
      Tasks: 2 (limit: 4579)
     Memory: 233.6M
        CPU: 2.007s
     CGroup: /system.slice/snort3.service
             ??95898 /usr/local/bin/snort -c /usr/local/etc/snort/snort.lua -s 65535 -k none -l /var/log/snort -D -i eth0 -m 0x1b -u root -g >

Oct 11 16:48:29 ubuntu2204 snort[95898]:          num match states: 9885
Oct 11 16:48:29 ubuntu2204 snort[95898]:              memory scale: MB
Oct 11 16:48:29 ubuntu2204 snort[95898]:              total memory: 3.42574
Oct 11 16:48:29 ubuntu2204 snort[95898]:            pattern memory: 0.550588
Oct 11 16:48:29 ubuntu2204 snort[95898]:         match list memory: 1.25256
Oct 11 16:48:29 ubuntu2204 snort[95898]:         transition memory: 1.58402
Oct 11 16:48:29 ubuntu2204 snort[95898]:         fast pattern only: 6822
Oct 11 16:48:29 ubuntu2204 snort[95898]: --------------------------------------------------
Oct 11 16:48:29 ubuntu2204 snort[95898]: pcap DAQ configurato per passivo.
Oct 11 16:48:29 ubuntu2204 snort[95898]: Inizio del processamento dei pacchetti

Conclusione

Congratulazioni! hai installato e configurato con successo Snort 3 su Ubuntu 22.04. Ora puoi implementare Snort nella tua organizzazione e proteggerla dagli attacchi DDoS. Sentiti libero di chiedermi se hai domande.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.