Suricata - Sicherheitstool zur Erkennung und Prävention von Eindringlingen
Suricata ist eine leistungsstarke, vielseitige Open-Source-Engine zur Bedrohungserkennung, die Funktionen für Intrusion Detection (IDS), Intrusion Prevention (IPS) und Netzwerksicherheitsüberwachung bietet. Es führt eine Deep Packet Inspection zusammen mit Pattern-Matching durch, eine Mischung, die bei der Bedrohungserkennung unglaublich leistungsfähig ist.
Zum Zeitpunkt des Schreibens dieses Handbuchs ist die neueste Version von Suricata 6.0.5.
Suricata Eigenschaften
- IDS/IPS – Suricata ist eine regelbasierte Intrusion Detection and Prevention-Engine, die extern entwickelte Regelsätze wie Talos Ruleset und Emerging Threats Suricata nutzt, um den Netzwerkverkehr auf bösartige Aktivitäten, Richtlinienverstöße und Bedrohungen zu überwachen.
- Automatische Protokollerkennung – Die Suricata-Engine erkennt automatisch Protokolle wie HTTP und HTTPS. FTP und SMB an einem beliebigen Port und wenden Sie die richtige Erkennungs- und Protokollierungslogik an. Dies ist nützlich bei der Erkennung von Malware und CnC-Kanälen.
- Lua-Scripting – Suricata kann Lua-Skripte aufrufen, die eine fortschrittliche Malware-Erkennung bieten, um Malware-Datenverkehr zu erkennen und zu dekodieren, der sonst schwer zu erkennen wäre.
- Multithreading – Suricata bietet Geschwindigkeit und Bedeutung bei der Bestimmung des Netzwerkverkehrs. Die Engine wurde entwickelt, um die erhöhte Rechenleistung moderner Multi-Core-Hardware-Chipsätze zu nutzen.
Installieren des Suricata Intrusion Detection Tools unter Linux
In diesem Abschnitt zeigen wir, wie Sie Suricata auf Debian- und RHEL-basierten Distributionen installieren.
Installieren Sie Suricata auf Debian/Ubuntu & Mint
Suricata wird von Debian/Ubuntu-Repositories bereitgestellt und kann einfach mit dem apt-Paketmanager installiert werden. Es ist jedoch erwähnenswert, dass dadurch nicht die neueste Version von Suricata installiert wird. Um die neueste Version zu installieren, müssen Sie sie von einer Quelle installieren, die wir später in diesem Handbuch behandeln werden.
Um Suricata mit dem apt-Paketmanager zu installieren, führen Sie den folgenden Befehl aus:
$ sudo apt install suricata -y
Suricata wird nach der Installation automatisch gestartet. Dies können Sie wie folgt bestätigen.
$ sudo systemctl status suricata
Installieren Sie Suricata auf RHEL, Rocky, Almalinux und Fedora
Um Suricata auf RHEL-Distributionen wie CentOS Stream, Rocky Linux, AlmaLinux, Fedora und RHEL zu installieren, müssen Sie zuerst das EPEL-Repository aktivieren.
$ dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm [RHEL 9]
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm [RHEL 8]
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm [RHEL 7]
Sobald EPEL aktiviert ist, installieren Sie die folgenden erforderlichen Pakete und fügen Sie das OISF-Repository zu Ihrem System hinzu.
----------- On Fedora Systems -----------
sudo dnf install dnf-plugins-core
sudo dnf copr enable @oisf/suricata-6.0
----------- On RHEL Systems -----------
sudo dnf install yum-plugin-copr
sudo dnf copr enable @oisf/suricata-6.0
Installieren Sie als Nächstes Suricata mit dem dnf-Paketmanager oder dem yum-Paketmanager, wie gezeigt.
$ sudo dnf install suricata -y
Or
sudo yum install suricata -y
Sobald Suricata installiert ist, starten Sie und überprüfen Sie seinen Status.
$ sudo systemctl start suricata
sudo systemctl status suricata
Installieren Sie Suricata aus dem Quellcode unter Linux
Die Standard-Betriebssystem-Repositories stellen nicht die neueste Version von Suricata zur Verfügung. Wenn es Ihr Ziel ist, die neueste Version von Suricata zu installieren, müssen Sie sie von der Quelle installieren.
Zum Zeitpunkt des Schreibens dieses Handbuchs ist die neueste Version von Suricata 6.0.5. Um Suricata aus dem Quellcode auf Ubuntu/Debian- und RHEL-Distributionen zu installieren, installieren Sie die folgenden Bibliotheken, Kompilierungstools und Abhängigkeiten.
----------- On Debian Systems -----------
sudo apt install rustc build-essential cargo libpcre3 libpcre3-dbg libpcre3-dev make autoconf automake libtool libcap-ng0 make libmagic-dev libjansson-dev libjansson4 libpcap-dev libnet1-dev libyaml-0-2 libyaml-dev zlib1g zlib1g-dev libcap-ng-dev pkg-config libnetfilter-queue1 libnfnetlink0 libnetfilter-queue-dev libnfnetlink-dev -y
----------- On RHEL Systems -----------
sudo yum install gcc libpcap-devel pcre-devel libyaml-devel file-devel zlib-devel jansson-devel nss-devel libcap-ng-devel libnet-devel tar make libnetfilter_queue-devel lua-devel PyYAML libmaxminddb-devel rustc cargo lz4-devel -y
Installieren Sie als Nächstes das Tool suricata-update, um die Suricata-Regeln zu aktualisieren.
$ sudo apt install python3-pip [On Debian]
sudo yum install python3-pip [On RHEL]
pip3 install --upgrade suricata-update
Erstellen Sie dann einen symbolischen Link zu /usr/bin/suricata-update.
$ sudo ln -s /usr/local/bin/suricata-update /usr/bin/suricata-update
Gehen Sie nun zur offiziellen Suricata-Download-Seite und laden Sie die neueste Tarball-Datei für Linux mit dem Befehl wget herunter.
$ wget https://www.openinfosecfoundation.org/download/suricata-6.0.6.tar.gz
Extrahieren Sie nach dem Herunterladen die Tarball-Datei und installieren Sie sie.
$ sudo tar -xvf suricata-6.0.6.tar.gz
cd suricata-6.0.6
./configure --enable-nfqueue --prefix=/usr --sysconfdir=/etc --localstatedir=/var
make
make install-full
Konfigurieren von Suricata unter Linux
Um mit der Konfiguration von Suricata zu beginnen, müssen wir die interne IP und das externe Netzwerk angeben. Greifen Sie dazu auf die Konfigurationsdatei zu.
$ sudo vim /etc/suricata/suricata.yaml
Geben Sie für die Direktive HOME_NET die IP-Adresse Ihres Linux-Systems an.
HOME_NET: "[173.82.235.7]"
Legen Sie als Nächstes die Direktive EXTERNAL_NET auf "!$HOME_NET" fest.
EXTERNAL_NET: "!$HOME_NET"
Geben Sie als Nächstes die Netzwerkschnittstelle an, auf der Suricata den Netzwerkverkehr überprüft. In unserem Fall ist dies die eth0-Schnittstelle.
Sie können Ihre aktive Netzwerkschnittstelle mit dem Befehl ip überprüfen:
$ ip a
Aktualisieren Sie in der Konfigurationsdatei die interface-Direktive mit dem Namen der Netzwerkschnittstelle.
- interface: eth0
Stellen Sie als Nächstes sicher, dass das Attribut default-rule-path auf /etc/suricata/rules festgelegt ist.
Speichern Sie dann die Änderungen und schließen Sie die Konfigurationsdatei. Starten Sie dann Suricata neu, damit die Änderungen übernommen werden.
$ sudo systemctl status suricata
Aktualisieren von Suricata-Regelsätzen unter Linux
Standardmäßig wird Suricata mit einem begrenzten Satz von Erkennungsregeln ausgeliefert, die sich im Verzeichnis /etc/suricata/rules befinden. Diese gelten jedoch als schwach und ineffektiv bei der Erkennung von Eindringlingen. Sie müssen die Emerging Threat (ET)-Regeln laden, die als die umfassendsten Regelsätze für Suricata gelten.
Suricata bietet ein Tool namens suricata-update, das Regelsätze von externen Anbietern abruft. Um einen aktuellen Regelsatz für Ihren Server zu erhalten, führen Sie den folgenden Befehl aus.
$ sudo suricata-update -o /etc/suricata/rules
In der Ausgabe können Sie sehen, wie suricata-update die kostenlosen Emerging Threats ET Open Rules abruft und in der Suricata-Datei /etc/suricata/rules/suricata rules speichert. Darüber hinaus gibt es die Anzahl der verarbeiteten Regeln an. In diesem Beispiel wurden insgesamt 35941 hinzugefügt. Davon wurden 28221 aktiviert, 18 entfernt und 1249 geändert.
Hinzufügen von Suricata-Regelsätzen unter Linux
Das Tool suricata-update ermöglicht es Ihnen, Regeln von Regelsatzanbietern abzurufen. Einige sind kostenlos, wie z. B. das ET Open-Set, während andere ein kostenpflichtiges Abonnement erfordern.
Um den Standardsatz von Regelanbietern aufzulisten, führen Sie den Befehl suricata-update wie gezeigt aus.
$ sudo suricata-update list-sources
Führen Sie den folgenden Befehl aus, um einen Regelsatz hinzuzufügen, z. B. den Regelsatz tgreen/hunting.
$ sudo suricata-update enable-source tgreen/hunting
Nachdem Sie den Regelsatz hinzugefügt haben, führen Sie den Befehl suricata-update erneut mit dem Flag -o /etc/suricata/rules aus.
$ sudo suricata-update -o /etc/suricata/rules
Testen von Suricata-Regeln unter Linux
Bevor Sie mit dem Testen von Suricata beginnen, sollten Sie testen, ob die Konfiguration in Ordnung ist. Führen Sie dazu den folgenden Befehl aus:
$ sudo suricata -T -c /etc/suricata/suricata.yaml -v
Stellen Sie sicher, dass keine Fehler gemeldet werden. Wenn Sie RHEL, CentOS Stream, Fedora und Rocky Linux verwenden, starten und aktivieren Sie Suricata.
$ sudo systemctl start suricata
sudo systemctl enable suricata
Bisher haben wir Suricata erfolgreich installiert, konfiguriert und die Regelsätze aktualisiert. Der ET Open Rule Set enthält über 30.000 Regeln zur Erkennung von bösartigem Datenverkehr. In diesem Abschnitt werden wir Suricata auf die Probe stellen und prüfen, ob es verdächtigen Netzwerkverkehr erkennen kann.
Wir werden den ET Open-Regelsatz testen, indem wir ein Eindringen simulieren, wie es in der Schnellstartanleitung von Suricata empfohlen wird.
Die IDS-Funktionalität wird mit einer Signatur-ID von 2100498 getestet, indem eine HTTP-Anfrage an die testmynids.org-Website gesendet wird, bei der es sich um ein NIDS-Framework (Network Intrusion and Detection System) handelt.
$ curl http://testmynids.org/uid/index.html
Sie sollten die folgende Ausgabe erhalten.
uid=0(root) gid=0(root) groups=0(root)
Die gesendete HTTP-Anfrage ist so konzipiert, dass sie einen Alarm auslöst, indem sie die Ausgabe des id-Befehls nachahmt, der auf einem kompromittierten Remote-System über eine Shell ausgeführt werden kann.
Lassen Sie uns nun die Protokolle von Suricata nach einer entsprechenden Warnung durchsuchen. Suricata wird mit zwei Protokolldateien ausgeliefert, die standardmäßig aktiviert sind.
/var/log/suricata/fast.log
/var/log/suricata/eve.log
Wir werden mit dem Befehl grep nach einem Protokolleintrag in der Protokolldatei /var/log/suricata/fast.log suchen, der der curl-Anfrage entspricht. Wir suchen nach den Protokolleinträgen mit dem 2100498 Regelbezeichner aus der Schnellstartdokumentation.
$ grep 2100948 /var/log/suricata/fast.log
Sie erhalten die folgende Ausgabe, die auf ein Eindringen hinweist. Dabei ist 173.82.235.7 die öffentliche IP-Adresse des Servers.
09/09/2022-22:17:06.796434 [**] [1:2100498:7] GPL ATTACK_RESPONSE id check returned root [**] [Classification: Potentially Bad Traffic] [Priority: 2] {TCP} 13.226.210.123:80 -> 173.82.235.7:33822
Alternativ können Sie die Protokolldatei /var/log/suricata/eve.log auf die Signatur-ID von 2100498 überprüfen, wie gezeigt.
$ jq 'select(.alert .signature_id==2100498)' /var/log/suricata/eve.json
Dies war eine umfassende Anleitung zur Installation und Konfiguration von Suricata unter Linux. Wir haben uns verschiedene Installationsmethoden angesehen, wie man Suricata konfiguriert und die Suricata-Regeln aktualisiert, wie man den Suricata systemd-Dienst verwaltet und Netzwerk-Intrusionstests durchführt.
Wir hoffen, dass Sie Suricata jetzt bequem installieren und verwenden können, um Ihr System vor Netzwerkeinbrüchen oder bösartigem Datenverkehr zu schützen.













