Snort ist ein leichtgewichtiges Open-Source-Netzwerk-Intrusion-Prevention-System zum Ausführen eines Netzwerk-Intrusion-Detection-Systems (NIDS). Snort wird verwendet, um die über eine bestimmte Netzwerkschnittstelle gesendeten/empfangenen Paketdaten zu überwachen. Network Intrusion Detection-Systeme können Bedrohungen abfangen, die auf Ihre Systemschwächen und Schwachstellen abzielen, indem sie signaturbasierte Erkennungs- und Protokollanalysetechnologien verwenden.
Wenn die NIDS-Software richtig installiert und konfiguriert ist, kann sie verschiedene Arten von Angriffen erkennen und verdächtige Dinge wie CGI-Angriffe, Verstöße gegen Netzwerkrichtlinien, SMB-Prüfungen, Malware-Infektionen, ein kompromittiertes System, Stealth-Port-Scans usw.
In diesem Tutorial lernen wir, wie man installiere Snort 3 an Ubuntu 20.04.
Einige der neuen Snort 3-Funktionen:
- Unterstützt mehrere Paketverarbeitungs-Threads
- Ermöglicht die Verarbeitung mehrerer Pakete
- Referenzdokumentation automatisch generieren
- Verwenden Sie eine einfache skriptfähige Konfiguration
- Schlüsselkomponenten steckbar machen
- Ermöglicht Benutzern, ihre eigenen Plugins zu schreiben
- Gemeinsame Konfigurations- und Attributtabelle
- Ermöglicht eine schnellere Ausführung von Regeln
Schritt 1: Aktualisieren Sie das System
Aktualisieren und aktualisieren Sie zuerst Ihr Ubuntu-System
sudo apt update
sudo apt upgrade
Schritt 2: Erforderliche Abhängigkeiten installieren
Das Ubuntu-Standard-Repository enthält das Snort-Paket. Das dort verfügbare Snort-Paket ist die alte Version. Um Snort 3 zu installieren, müssen wir aus der Quelle bauen. Vor der Installation von Snort 3 müssen wir die erforderlichen und erforderlichen Bibliotheken installieren.
Installieren Sie Snort 3-Abhängigkeitspakete mit dem folgenden Befehl:
sudo 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
Nachdem die Abhängigkeiten installiert wurden, erstellen Sie mit dem folgenden Befehl ein Verzeichnis, in dem Sie Quelldateien für Snort kompilieren und aufbewahren:
mkdir snort-source-files
cd snort-source-files
Laden Sie dann die neueste Version der Snort Data Acquisition Library (LibDAQ) herunter und installieren Sie sie. Zum Installieren LibDAQ Wir müssen es mit dem folgenden Befehl aus der Quelle erstellen und installieren.
git clone https://github.com/snort3/libdaq.git
cd libdaq
./bootstrap
./configure
make
make install
Die nächste Abhängigkeit ist Tcmalloc, die die Speicherzuweisung optimiert und eine bessere Speichernutzung bietet.
Installieren Tcmalloc mit folgendem Befehl.
cd ../
wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.9/gperftools-2.9.tar.gz
tar xzf gperftools-2.9.tar.gz
cd gperftools-2.9/
./configure
make
make install
Schritt 3: Installieren Sie Snort 3 auf Ubuntu 20.04
Nachdem die Abhängigkeiten eingerichtet sind, werden wir Snort 3 auf Ubuntu 20.04 herunterladen und installieren.
01. Klonen Sie das offizielle GitHub-Repository von Snort 3.
cd ../
git clone git://github.com/snortadmin/snort3.git
02. Ändern Sie das Verzeichnis zu Snort3
cd snort3/
03. Von dort aus konfigurieren und aktivieren Sie tcmalloc mit dem folgenden Befehl.
./configure_cmake.sh --prefix=/usr/local --enable-tcmalloc
04. Navigieren Sie zum build-Verzeichnis und kompilieren und installieren Sie Snort 3 mit make und make install mit dem folgenden Befehl.
cd build
make
make install
05. Wenn die Installation abgeschlossen ist, aktualisieren Sie gemeinsam genutzte Bibliotheken.
sudo ldconfig
Snort wird standardmäßig im Verzeichnis /usr/local/bin/snort installiert. Es empfiehlt sich, einen symbolischen Link für /usr/sbin/snort zu erstellen
sudo ln -s /usr/local/bin/snort /usr/sbin/snort
06. Überprüfen Sie die Installation von Snort 3
snort -V
Ausgabe:
,,_ -> Snort++ <-
o" )~ Version 3.1.10.0
'''' By Martin Roesch & The Snort Team
https://snort.org/contact#team
Copyright (C) 2014-2021 Cisco and/or its affiliates. All rights reserved.
Copyright (C) 1998-2013 Sourcefire, Inc., et al.
Using DAQ version 3.0.4
Using LuaJIT version 2.1.0-beta3
Using OpenSSL 1.1.1f 31 Mar 2020
Using libpcap version 1.9.1 (with TPACKET_V3)
Using PCRE version 8.39 2016-06-14
Using ZLIB version 1.2.11
Using LZMA version 5.2.4
Wenn Sie eine ähnliche Ausgabe sehen, wurde Snort 3 erfolgreich installiert.
Konfigurieren von Netzwerkschnittstellenkarten
Suchen Sie die Schnittstelle, auf der Snort auf Netzwerkverkehr lauscht, und aktivieren Sie Promiscuous Modus, um den gesamten an ihn gesendeten Netzwerkverkehr anzuzeigen.
ip link set dev eh0 promisc on
Überprüfen Sie mit dem folgenden Befehl.
ip add sh eth0
Ausgabe:
2: eth0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether f2:3c:92:ed:7e:d8 brd ff:ff:ff:ff:ff:ff
inet 74.207.230.186/24 brd 74.207.230.255 scope global dynamic eth0
valid_lft 72073sec preferred_lft 72073sec
inet6 2600:3c02::f03c:92ff:feed:7ed8/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 60sec preferred_lft 20sec
inet6 fe80::f03c:92ff:feed:7ed8/64 scope link
valid_lft forever preferred_lft forever
Deaktivieren Sie als Nächstes das Schnittstellen-Offloading, um zu verhindern, dass Snort 3 große Pakete, maximal 1518 Byte, abschneidet. Überprüfen Sie mit dem folgenden Befehl, ob diese Funktion aktiviert ist.
ethtool -k eth0 | grep receive-offload
Wenn diese Ausgabe angezeigt wird, ist GRO aktiviert, während LRO fixiert oder LRO aktiviert ist.
Ausgabe.
generic-receive-offload: on
large-receive-offload: on
Deaktivieren Sie es mit dem folgenden Befehl.
ethtool -K eth0 gro off lro off
Um sicherzustellen, dass die Änderungen während des Systemneustarts bestehen bleiben, müssen wir eine systemd-Diensteinheit erstellen und aktivieren, um die Änderungen zu implementieren.
sudo nano /etc/systemd/system/snort3-nic.service
Fügen Sie die folgende Konfiguration ein, die auf Ihre Netzwerkschnittstelle verweist.
[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
Systemd-Konfigurationseinstellungen neu laden:
sudo systemctl daemon-reload
Starten und aktivieren Sie den Dienst beim Booten mit dem folgenden Befehl:
sudo systemctl enable --now snort3-nic.service
Ausgabe.
Created symlink /etc/systemd/system/default.target.wants/snort3-nic.service → /etc/systemd/system/snort3-nic.service.
Verifizieren Sie den snort3-nic.service mit:
sudo systemctl status snort3-nic.service
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; enabled; vendor preset: enabled)
Active: active (exited) since Sat 2021-09-18 12:35:17 UTC; 4min 59s ago
Process: 182782 ExecStart=/usr/sbin/ip link set dev eth0 promisc on (code=exited, status=0>
Process: 182783 ExecStart=/usr/sbin/ethtool -K eth0 gro off lro off (code=exited, status=0>
Main PID: 182783 (code=exited, status=0/SUCCESS)
Sep 18 12:35:17 li72-186 systemd[1]: Starting Set Snort 3 NIC in promiscuous mode and Disable >
Sep 18 12:35:17 li72-186 systemd[1]: Finished Set Snort 3 NIC in promiscuous mode and Disable >
Installieren Sie die Community-Regelsätze von Snort 3
In Snort sind Regelsätze der Hauptvorteil der Intrusion Detection Engine. Es gibt drei Arten von Snort-Regeln: Community-Regeln, registrierte Regeln, Abonnenten-Regeln. Community-Regeln werden von der Open-Source-Community oder von Snort-Integratoren eingereicht.
Wir zeigen Ihnen, wie Sie die Community-Regeln installieren.
Erstellen Sie zunächst ein Verzeichnis für die Regeln in /usr/local/etc/snort
mkdir /usr/local/etc/rules
Laden Sie die Community-Regeln von Snort 3 herunter. Sie finden es auf der offiziellen Snort3 Downloadseite.
wget https://www.snort.org/downloads/community/snort3-community-rules.tar.gz
Extrahieren Sie heruntergeladene Regeln und legen Sie sie in das Verzeichnis ab, das wir zuvor erstellt haben /usr/local/etc/rules/
tar xzf snort3-community-rules.tar.gz -C /usr/local/etc/rules/
Snort 3 enthält zwei Hauptkonfigurationsdateien, snort_defaults.lua und snort.lua.
Der snort.lua Datei enthält die Hauptkonfiguration von Snort, die die Implementierung und Konfiguration von Snort-Präprozessoren, die Aufnahme von Regeldateien, Protokollierung, Ereignisfilter, Ausgabe usw. ermöglicht.
Der snort_defaults.lua Dateien enthalten Standardwerte wie Pfade zu Regeln, AppID, Intelligenzlisten und Netzwerkvariablen.
Wenn Regeldateien extrahiert und platziert werden, konfigurieren wir eine dieser Konfigurationsdateien namens snort.lua. Öffnen Sie die Datei mit Ihrem bevorzugten Editor und sehen Sie eine ähnliche Konfiguration.
... -- HOME_NET and EXTERNAL_NET must be set now -- setup the network addresses you are protecting
HOME_NET = 'server_public_IP/32'
-- set up the external network addresses.
-- (leave as "any" in most situations)
EXTERNAL_NET = 'any' EXTERNAL_NET = '!$HOME_NET' ...
Stellen Sie das Netzwerk ein, das Sie vor Angriffen schützen möchten, als Wert für die HOME_NET variabel und Punkt EXTERNAL_NET variabel zu HOME_NET Variable.
Save und aussteigen.
Sie können die Snort-Standardeinstellungen auch in /usr/local/etc/snort/snort_defaults.lua bearbeiten und im Abschnitt IPS den Speicherort für Ihre Regeln definieren.
ips =
{
-- use this to enable decoder and inspector alerts
--enable_builtin_rules = true,
-- use include for rules files; be sure to set your path
-- note that rules files can include other rules files
include="/usr/local/etc/rules/snort3-community-rules/snort3-community.rules"
}
...
Save und aussteigen.
Snort als Service ausführen
Wenn Sie Snort als Service-Daemon im Hintergrund ausführen möchten, können Sie auch eine systemd-Service-Unit für Snort erstellen. Es ist ratsam, es als nicht privilegierter Systembenutzer auszuführen
Erstellen Sie ein Systembenutzerkonto ohne Anmeldung.
sudo useradd -r -s /usr/sbin/nologin -M -c SNORT_IDS snort
Erstellen Sie dann eine systemd-Diensteinheit, damit Snort als Snort-Benutzer ausgeführt wird. Passen Sie Ihre Netzwerkschnittstelle an und passen Sie sie an.
sudo nano /etc/systemd/system/snort3.service
Fügen Sie die folgende Konfiguration ein.
[Unit]
Description=Snort 3 NIDS 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 eht0 -m 0x1b -u snort -g snort
[Install]
WantedBy=multi-user.target
Laden Sie die systemd-Konfiguration neu.
sudo systemctl daemon-reload
Legen Sie den Besitz und die Berechtigungen für die Protokolldatei fest.
sudo chmod -R 5775 /var/log/snort
sudo chown -R snort:snort /var/log/snort
Starten und aktivieren Sie Snort, um beim Systemstart ausgeführt zu werden:
sudo systemctl enable --now snort3
Überprüfen Sie den Dienststatus, um zu bestätigen, ob er ausgeführt wird.
sudo systemctl status snort3
Ausgabe.
● snort3.service - Snort 3 NIDS Daemon
Loaded: loaded (/etc/systemd/system/snort3.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2021-09-18 12:44:32 UTC; 6s ago
Main PID: 182886 (snort)
Tasks: 2 (limit: 1071)
Memory: 62.6M
CGroup: /system.slice/snort3.service
└─182886 /usr/local/bin/snort -c /usr/local/etc/snort/snort.lua -s 65535 -k none >
Sep 18 12:44:32 li72-186 systemd[1]: Started Snort 3 NIDS Daemon.
Fazit
In diesem Tutorial erfahren Sie, wie Sie das Snort 3 Network Intrusion Detection System auf Ubuntu 20.04 installieren.
Linux ist nicht 100% immun gegen Viren und verdächtige Dinge. Es ist immer besser, ein Tool installiert zu haben und sicherzustellen, dass niemand etwas Verdächtiges auf Ihrem Gerät und Netzwerk versucht. Andere Alternativen für Snort, die Sie untersuchen können: Ossec, Palo Alto Networks Next-Generation Firewall, Next-Generation Intrusion Prevention System (NGIPS).
Danke fürs Lesen, bitte geben Sie Ihr Feedback und Ihre Vorschläge im Kommentarbereich ab.