Sicherheit · 10 min read · Jan 10, 2026

Installieren und Konfigurieren des Snort 3 Intrusion Detection Systems auf Ubuntu 22.04

Snort ist ein Open Source Intrusion Prevention und Detection System (IDS), um sich gegen DDoS-Angriffe zu verteidigen. Es verwendet integrierte Regeln, die helfen, bösartige Netzwerkaktivitäten zu definieren, und nutzt diese Regeln, um Pakete zu finden, die mit ihnen übereinstimmen, und generiert Warnungen für die Benutzer. Snort kann die neuesten Angriffe, Malware-Infektionen, kompromittierte Systeme und Verstöße gegen Netzwerkrichtlinien identifizieren.

Funktionen

  • Echtzeit-Traffic-Überwachung.
  • Paketprotokollierung. Analyse des Protokolls.
  • Inhaltsabgleich. OS-Fingerprinting.
  • Es kann in jeder Netzwerkumgebung installiert werden.
  • Erstellt Protokolle.

In diesem Tutorial zeigen wir Ihnen, wie Sie Snort auf Ubuntu 22.04 installieren.

Voraussetzungen

  • Ein Server, der Ubuntu 22.04 ausführt.
  • Ein Root-Passwort ist auf dem Server konfiguriert.

Installieren der erforderlichen Abhängigkeiten

Bevor Sie beginnen, müssen Sie einige Abhängigkeiten auf Ihrem Server installieren. Sie können alle mit dem folgenden Befehl installieren:

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

Sobald alle Abhängigkeiten installiert sind, können Sie mit dem nächsten Schritt fortfahren.

Snort DAQ installieren

Als nächstes müssen Sie die Data Acquisition-Bibliothek auf Ihrem System installieren. Standardmäßig ist sie im Ubuntu-Standardrepository nicht verfügbar. Daher müssen Sie sie aus dem Quellcode kompilieren.

Zuerst laden Sie Snort DAQ mit dem folgenden Befehl von Git herunter:

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

Sobald der Download abgeschlossen ist, navigieren Sie in das heruntergeladene Verzeichnis und konfigurieren Sie es mit dem folgenden Befehl:

cd libdaq  
./bootstrap  
./configure

Sie sollten die folgende Ausgabe sehen:

    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

Als nächstes installieren Sie es mit dem folgenden Befehl:

make  
make install

Gperftools installieren

Zuerst laden Sie die neueste Version von Gperftools mit dem folgenden Befehl herunter:

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

Sobald der Download abgeschlossen ist, extrahieren Sie die heruntergeladene Datei mit dem folgenden Befehl:

tar xzf gperftools-2.9.1.tar.gz

Navigieren Sie als Nächstes in das heruntergeladene Verzeichnis und kompilieren Sie es mit dem folgenden Befehl:

cd gperftools-2.9.1/  
./configure

Als nächstes installieren Sie es mit dem folgenden Befehl:

make  
make install

Snort installieren

Laden Sie als Nächstes die neueste Version von Snort mit dem folgenden Befehl herunter:

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

Extrahieren Sie als Nächstes die heruntergeladene Datei mit dem folgenden Befehl:

tar -xvzf 3.1.43.0.tar.gz

Navigieren Sie als Nächstes in das extrahierte Verzeichnis und konfigurieren Sie es mit dem folgenden Befehl:

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

Sie erhalten die folgende Ausgabe:

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

Ändern Sie als Nächstes das Verzeichnis in das Build-Verzeichnis und installieren Sie Snort mit dem folgenden Befehl:

cd build  
make  
make install  
ldconfig

Sie können jetzt die Snort-Version mit dem folgenden Befehl überprüfen:

snort -V

Sie erhalten die folgende Ausgabe:

   ,,_     -*> Snort++ <*-
  o"  )~   Version 3.1.43.0
   ''''    Von Martin Roesch & Das Snort-Team
           http://snort.org/contact#team
           Copyright (C) 2014-2022 Cisco und/oder dessen Tochtergesellschaften. Alle Rechte vorbehalten.
           Copyright (C) 1998-2013 Sourcefire, Inc., et al.
           Verwende DAQ-Version 3.0.9
           Verwende LuaJIT-Version 2.1.0-beta3
           Verwende OpenSSL 3.0.2 15. März 2022
           Verwende libpcap-Version 1.10.1 (mit TPACKET_V3)
           Verwende PCRE-Version 8.39 2016-06-14
           Verwende ZLIB-Version 1.2.11
           Verwende LZMA-Version 5.2.5

Snort konfigurieren

Zuerst müssen Sie Ihre Netzwerkschnittstelle in den Promiscuous-Modus versetzen, damit sie den gesamten Netzwerkverkehr sehen kann, der an sie gesendet wird.

Sie können dies mit dem folgenden Befehl einstellen:

ip link set dev eth0 promisc on

Sie können dies jetzt mit dem folgenden Befehl überprüfen:

ip add sh eth0

Als Nächstes müssen Sie auch das Interface Offloading deaktivieren. Überprüfen Sie zuerst, ob diese Funktion aktiviert ist oder nicht, mit dem folgenden Befehl:

ethtool -k eth0 | grep receive-offload

Sie erhalten die folgende Ausgabe:

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

Sie können es jetzt mit dem folgenden Befehl deaktivieren:

ethtool -K eth0 gro off lro off

Erstellen einer Systemd-Dienstdatei für Snort NIC

Als Nächstes müssen Sie eine systemd-Dienstdatei für Snort NIC erstellen.

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

Fügen Sie die folgenden Zeilen hinzu:

[Unit]
Description=Set Snort 3 NIC in promiscuous mode and Disable GRO, LRO on boot
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

Speichern und schließen Sie die Datei, und laden Sie dann den systemd-Daemon neu, um die Änderungen anzuwenden:

systemctl daemon-reload

Starten und aktivieren Sie als Nächstes Snort mit dem folgenden Befehl:

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

Sie können den Status von Snort mit dem folgenden Befehl überprüfen:

systemctl status snort3-nic.service

Sie erhalten die folgende Ausgabe:

? snort3-nic.service - Set Snort 3 NIC in promiscuous mode and Disable GRO, LRO on boot
     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 Set Snort 3 NIC in promiscuous mode and Disable GRO, LRO on boot...
Oct 11 16:24:15 ubuntu2204 systemd[1]: Finished Set Snort 3 NIC in promiscuous mode and Disable GRO, LRO on boot.

Snort-Regeln installieren

Regeln sind sehr wichtig für die Intrusion-Detection-Engine von Snort. Zuerst erstellen Sie ein Verzeichnis, um alle Regeln zu speichern:

mkdir /usr/local/etc/rules

Laden Sie als Nächstes die Community-Regeln mit dem folgenden Befehl herunter:

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

Bearbeiten Sie als Nächstes die Hauptkonfigurationsdatei von Snort:

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

Definieren Sie Ihr Netzwerk wie unten gezeigt:

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

Definieren Sie als Nächstes den Pfad zu Ihren Snort-Regeln:

ips =
{
    -- verwenden Sie dies, um Decoder- und Inspektorwarnungen zu aktivieren
    --enable_builtin_rules = true,

    -- verwenden Sie include für Regeldateien; stellen Sie sicher, dass Sie Ihren Pfad festgelegt haben
    -- beachten Sie, dass Regeldateien andere Regeldateien einbeziehen können
    -- (siehe auch verwandte Pfadvariablen oben in snort_defaults.lua)

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

}

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Snort OpenAppID installieren

OpenAppID ist ein Plugin, das es Snort ermöglicht, verschiedene Anwendungen zu erkennen, die im Netzwerk verwendet werden, wie Facebook, Netflix, Twitter und Reddit.

Sie können es mit dem folgenden Befehl herunterladen:

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

Sobald der Download abgeschlossen ist, extrahieren Sie die heruntergeladene Datei mit dem folgenden Befehl:

tar -xzvf OpenAppId-26425.tgz

Kopieren Sie als Nächstes die OpenAppID-Binärdatei in das Systemverzeichnis:

cp -R odp /usr/local/lib/

Bearbeiten Sie als Nächstes die Snort-Konfigurationsdatei und definieren Sie Ihren OpenAppID-Standort:

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

Ändern Sie die folgenden Zeilen:

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

}

Speichern und schließen Sie die Datei, und erstellen Sie dann ein Snort-Protokollverzeichnis:

mkdir /var/log/snort

Überprüfen Sie schließlich die Snort-Konfigurationsdatei mit dem folgenden Befehl:

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

Wenn alles in Ordnung ist, erhalten Sie die folgende Ausgabe:

--------------------------------------------------
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 konfiguriert, um passiv zu sein.

Snort hat die Konfiguration erfolgreich validiert (mit 0 Warnungen).
o")~   Snort verlässt

Erstellen von benutzerdefinierten Snort-Regeln

Sie können auch Ihre eigenen benutzerdefinierten Regeln gemäß Ihren Anforderungen erstellen. Lassen Sie uns eine benutzerdefinierte Regel für eingehende ICMP-Anfragen erstellen:

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

Fügen Sie die folgende Zeile hinzu:

alert icmp any any -> $HOME_NET any (msg:"ICMP connection test"; sid:1000001; rev:1;)

Überprüfen Sie als Nächstes die Regeln mit dem folgenden Befehl:

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

Sie erhalten die folgende Ausgabe:

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 konfiguriert, um passiv zu sein.

Snort hat die Konfiguration erfolgreich validiert (mit 0 Warnungen).
o")~   Snort verlässt

Führen Sie als Nächstes den folgenden Befehl aus, um Snort auf Ihrer Netzwerkschnittstelle mit Ihren benutzerdefinierten Regeln zu starten:

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

Öffnen Sie als Nächstes eine andere Terminal-Schnittstelle und pingen Sie Ihren Server an. Sie sollten den ICMP-Fehler im ersten Terminal sehen:

10/11-16:45:23.848071 [] [1:1000001:1] "ICMP connection test" [] [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] "ICMP connection test" [] [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 caught int signal
== stopping
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] "ICMP connection test" [] [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

Erstellen einer Systemd-Dienstdatei für Snort

Als Nächstes erstellen Sie eine systemd-Dienstdatei, um Snort über systemd zu verwalten.

nano /etc/systemd/system/snort3.service

Fügen Sie die folgenden Konfigurationen hinzu:

[Unit]
Description=Snort Daemon
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

Speichern und schließen Sie die Datei, und laden Sie dann den systemd-Daemon mit dem folgenden Befehl neu:

systemctl daemon-reload

Starten und aktivieren Sie den Snort-Dienst als Nächstes mit dem folgenden Befehl:

systemctl enable --now snort3

Sie können jetzt den Status von Snort mit dem folgenden Befehl überprüfen:

systemctl status snort3

Sie erhalten die folgende Ausgabe:

? snort3.service - Snort Daemon
     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 konfiguriert, um passiv zu sein.
Oct 11 16:48:29 ubuntu2204 snort[95898]: Beginn der Paketverarbeitung

Fazit

Herzlichen Glückwunsch! Sie haben Snort 3 erfolgreich auf Ubuntu 22.04 installiert und konfiguriert. Sie können Snort jetzt in Ihrer Organisation implementieren und sich vor DDoS-Angriffen schützen. Zögern Sie nicht, mich zu fragen, wenn Sie Fragen haben.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.