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 -ySobald 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.gitSobald der Download abgeschlossen ist, navigieren Sie in das heruntergeladene Verzeichnis und konfigurieren Sie es mit dem folgenden Befehl:
cd libdaq
./bootstrap
./configureSie 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 installGperftools 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.gzSobald der Download abgeschlossen ist, extrahieren Sie die heruntergeladene Datei mit dem folgenden Befehl:
tar xzf gperftools-2.9.1.tar.gzNavigieren Sie als Nächstes in das heruntergeladene Verzeichnis und kompilieren Sie es mit dem folgenden Befehl:
cd gperftools-2.9.1/
./configureAls nächstes installieren Sie es mit dem folgenden Befehl:
make
make installSnort 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.gzExtrahieren Sie als Nächstes die heruntergeladene Datei mit dem folgenden Befehl:
tar -xvzf 3.1.43.0.tar.gzNavigieren 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-tcmallocSie 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
ldconfigSie können jetzt die Snort-Version mit dem folgenden Befehl überprüfen:
snort -VSie 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 onSie können dies jetzt mit dem folgenden Befehl überprüfen:
ip add sh eth0Als 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-offloadSie 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 offErstellen 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.serviceFü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-reloadStarten und aktivieren Sie als Nächstes Snort mit dem folgenden Befehl:
systemctl start snort3-nic.service
systemctl enable snort3-nic.serviceSie können den Status von Snort mit dem folgenden Befehl überprüfen:
systemctl status snort3-nic.serviceSie 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/rulesLaden 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.luaDefinieren 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.tgzSobald der Download abgeschlossen ist, extrahieren Sie die heruntergeladene Datei mit dem folgenden Befehl:
tar -xzvf OpenAppId-26425.tgzKopieren 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.luaWenn 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.rulesFü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.rulesSie 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.18Erstellen 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.serviceFü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.targetSpeichern und schließen Sie die Datei, und laden Sie dann den systemd-Daemon mit dem folgenden Befehl neu:
systemctl daemon-reloadStarten und aktivieren Sie den Snort-Dienst als Nächstes mit dem folgenden Befehl:
systemctl enable --now snort3Sie können jetzt den Status von Snort mit dem folgenden Befehl überprüfen:
systemctl status snort3Sie 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 PaketverarbeitungFazit
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.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.