GNU/Linux >> LINUX-Kenntnisse >  >> Rocky Linux

So installieren und konfigurieren Sie Suricata IDS zusammen mit Elastic Stack unter Rocky Linux 8

Suricata ist ein Netzwerküberwachungstool, das jedes Paket des Internetverkehrs, das durch Ihren Server fließt, untersucht und verarbeitet. Es kann Protokollereignisse generieren, Warnungen auslösen und den Datenverkehr unterbrechen, wenn verdächtige Aktivitäten erkannt werden.

Sie können Suricata entweder auf einem einzelnen Computer installieren, um seinen Datenverkehr zu überwachen, oder auf einem Gateway-Host bereitstellen, um den gesamten ein- und ausgehenden Datenverkehr von anderen damit verbundenen Servern zu scannen. Sie können Suricata mit Elasticsearch, Kibana und Filebeat kombinieren, um ein SIEM-Tool (Security Information and Event Management) zu erstellen.

In diesem Tutorial installieren Sie Suricata IDS zusammen mit ElasticStack auf einem Rocky Linux 8-Server. Die verschiedenen Komponenten des Stapels sind:

  • Elasticsearch zum Speichern, Indizieren, Korrelieren und Suchen der Sicherheitsereignisse vom Server.
  • Kibana um die in Elasticsearch gespeicherten Protokolle anzuzeigen.
  • Filebeat um Suricatas eve.json zu parsen log-Datei und senden Sie jedes Ereignis zur Verarbeitung an Elasticsearch.
  • Suricata um den Netzwerkverkehr auf verdächtige Ereignisse zu scannen und die ungültigen Pakete zu verwerfen.

Das Tutorial ist in zwei Teile unterteilt, der erste Teil befasst sich mit der Installation und Konfiguration von Suricata und der zweite Teil mit der Installation und Konfiguration von Elastic Stack.

Für unser Tutorial werden wir Suricata und den Elastic Stack auf verschiedenen Servern installieren.

Voraussetzungen

  • Die Server, die den Elastic Stack und Suricata hosten, sollten mindestens 4 GB RAM und 2 CPU-Kerne haben.

  • Die Server sollten in der Lage sein, über private IP-Adressen miteinander zu kommunizieren.

  • Auf den Servern sollte Rocky Linux 8 mit einem sudo-Benutzer ohne Rootberechtigung ausgeführt werden.

  • Wenn Sie von überall auf Kibana-Dashboards zugreifen möchten, richten Sie eine Domain ein (kibana.example.com ), der auf den Server zeigt, auf dem Suricata installiert wird.

  • Installieren Sie wichtige Pakete auf beiden Servern.

    $ sudo dnf install yum-utils nano curl

Firewall konfigurieren

TEIL 1

Schritt 1 - Suricata installieren

Um Suricata zu installieren, müssen Sie das Paket-Repository der Open Information Security Foundation (OISF) zu Ihrem Server hinzufügen.

$ sudo dnf install 'dnf-command(copr)'$ sudo dnf copr enable @oisf/suricata-6.0

Der erste Befehl aktiviert die Community-Projekte (copr ) für den dnf Paket-Installationsprogramm. Der zweite Befehl aktiviert und fügt das OISF-Repository zu Ihrem System hinzu. suricata-6.0 aktiviert das Repository für die neueste stabile Version der Software. Drücken Sie y und ENTER jedes Mal, wenn Sie dazu aufgefordert werden.

Fügen Sie als Nächstes das EPEL-Repository hinzu.

$ sudo dnf install epel-release

Suricata installieren.

$ sudo dnf install suricata

Aktivieren Sie den Suricata-Dienst.

$ sudo systemctl enable suricata

Schritt 2 – Suricata konfigurieren

Suricata speichert seine Konfiguration in /etc/suricata/suricata.yaml Datei. Der Standardmodus für Suricata ist der IDS-Modus (Intrusion Detection System), in dem der Datenverkehr nur protokolliert und nicht gestoppt wird. Wenn Sie neu in Suricata sind, sollten Sie den Modus unverändert lassen. Sobald Sie es konfiguriert und mehr erfahren haben, können Sie den IPS-Modus (Intrusion Prevention System) aktivieren.

Community-ID aktivieren

Das Community-ID-Feld erleichtert die Korrelation von Daten zwischen Datensätzen, die von verschiedenen Überwachungstools generiert wurden. Da wir Suricata mit Elasticsearch verwenden werden, kann es hilfreich sein, die Community-ID zu aktivieren.

Öffnen Sie die Datei /etc/suricata/suricata.yaml zum Bearbeiten.

$ sudo nano /etc/suricata/suricata.yaml

Suchen Sie die Zeile # Community Flow ID und setzen Sie den Wert der Variablen community-id auf true .

. . . # Community Flow ID # Fügt ein 'community_id'-Feld zu EVE-Datensätzen hinzu. Diese sollen # Datensätzen eine vorhersagbare Fluss-ID geben, die verwendet werden kann, um Datensätze mit # Ausgaben anderer Tools wie Zeek (Bro) abzugleichen. # # Nimmt einen 'Seed', der für alle Sensoren und Tools gleich sein muss, # um die ID weniger vorhersehbar zu machen. # Aktivieren/Deaktivieren der Community-ID-Funktion. Community-ID:wahr. . .

Jetzt tragen Ihre Ereignisse eine ID wie 1:S+3BA2UmrHK0Pk+u3XH78GAFTtQ= die Sie verwenden können, um Datensätze über verschiedene Überwachungstools hinweg abzugleichen.

Netzwerkschnittstelle auswählen

Die standardmäßige Suricata-Konfigurationsdatei untersucht den Datenverkehr auf eth0 Gerät/Netzwerkschnittstelle. Wenn Ihr Server eine andere Netzwerkschnittstelle verwendet, müssen Sie diese in der Konfiguration aktualisieren.

Überprüfen Sie den Gerätenamen Ihrer Netzwerkschnittstelle mit dem folgenden Befehl.

$ ip -p -j route show default

Sie erhalten eine Ausgabe wie die folgende.

[ { "dst":"default", "gateway":"164.90.192.1", "dev":"eth0", "protocol":"static", "metric":100, "flags":[ ] } ]

Der dev Variable bezieht sich auf das Netzwerkgerät. In unserer Ausgabe zeigt es eth0 als Netzwerkgerät. Ihre Ausgabe kann je nach System unterschiedlich sein.

Nachdem Sie nun Ihren Gerätenamen kennen, öffnen Sie die Konfigurationsdatei.

$ sudo nano /etc/suricata/suricata.yaml

Suchen Sie die Zeile af-packet: etwa bei Zeile 580. Setzen Sie darunter den Wert der Variablen interface zum Gerätenamen für Ihr System.

# Linux high speed capture supportaf-packet:- interface:eth0 # Anzahl der Empfangs-Threads. "auto" verwendet die Anzahl der Kerne #threads:auto # Default clusterid. AF_PACKET lädt Ausgleichspakete basierend auf dem Fluss. Cluster-ID:99. . .

Wenn Sie zusätzliche Schnittstellen hinzufügen möchten, können Sie dies tun, indem Sie sie am Ende des af-packet hinzufügen Abschnitt etwa bei Zeile 650.

Um eine neue Schnittstelle hinzuzufügen, fügen Sie sie direkt über - interface: default ein Abschnitt wie unten gezeigt.

 # Weitere Informationen zum eBPF- und XDP-Setup einschließlich Bypass, Filter und Lastausgleich # finden Sie unter doc/userguide/capture-hardware/ebpf-xdp.rst. - Schnittstelle:enp0s1 Cluster-ID:98... - Schnittstelle:Standard #threads:auto #use-mmap:no #tpacket-v3:yes

Wir haben eine neue Schnittstelle enp0s1 hinzugefügt und einen eindeutigen Wert für die cluster-id Variable in unserem Beispiel. Sie müssen jeder hinzugefügten Schnittstelle eine eindeutige Cluster-ID hinzufügen.

Neues Laden der Live-Regel

Sie müssen Suricata jedes Mal neu starten, wenn Sie Regeln hinzufügen, entfernen oder bearbeiten. Durch die Aktivierung von Live Rule kann Suricata alle Regeländerungen ohne Neustart verarbeiten.

Um das Live-Neuladen zu aktivieren, fügen Sie die folgenden Zeilen am Ende der Konfigurationsdatei hinzu.

. . .detect-engine:- Regel-Neuladen:wahr

Wenn das Live-Neuladen aktiviert ist, können Sie den folgenden Befehl verwenden, um Regeln neu zu laden, ohne den Suricata-Prozess neu zu starten.

$ sudo kill -usr2 $(pidof suricata)

Der $(pidof suricata) flag lokalisiert die Prozess-ID des Suricata-Prozesses. Der -usr2 Teil des kill Befehl sendet ein SIGUSR2 Signal an den Suricata-Prozess. Der SIGUSR2 Signal ist mit Suricata konfiguriert, um die Regeln neu zu laden.

Wenn Sie fertig sind, speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.

Verzeichnisberechtigungen konfigurieren

Suricata hat automatisch einen Systembenutzer und eine Gruppe mit dem Namen suricata erstellt während des Installationsvorgangs. Sie müssen die richtigen Verzeichnisberechtigungen erteilen, damit die Installation ordnungsgemäß funktioniert.

Führen Sie den folgenden Befehl aus, um suricata festzulegen als die Gruppe für Suricatas Verzeichnisse.

$ sudo chgrp -R suricata /etc/suricata$ sudo chgrp -R suricata /var/lib/suricata/rules$ sudo chgrp -R suricata /var/lib/suricata/update$ sudo chgrp -R suricata /var/ log/suricata 

Legen Sie die Gruppenberechtigungen zum Lesen und Schreiben fest.

$ sudo chmod -R g+r /etc/suricata/$ sudo chmod -R g+rw /var/lib/suricata/rules$ sudo chmod -R g+rw /var/lib/suricata/update$ sudo chmod -R g+rw /var/log/suricata

Fügen Sie Ihren aktuellen Benutzernamen zu suricata hinzu Gruppe, sodass Sie Operationen direkt ausführen können, ohne sudo zu benötigen.

$ sudo usermod -a -G suricata $USER

Um die neue Gruppenmitgliedschaft zu übernehmen, melden Sie sich vom Server ab und wieder an oder geben Sie Folgendes ein:

$su - ${USER}

Sie werden aufgefordert, Ihr Benutzerkennwort einzugeben, um fortzufahren.

Bestätigen Sie, dass Ihr Benutzer jetzt zu suricata hinzugefügt wurde gruppieren, indem Sie Folgendes eingeben:

$ id -nGusername sudo suricata

Schritt 3 – Suricata-Regeln konfigurieren

Suricata verwendet standardmäßig nur einen begrenzten Satz von Regeln, um den Netzwerkverkehr zu erkennen. Mit einem Tool namens suricata-update können Sie weitere Regelsätze von externen Anbietern hinzufügen . Führen Sie den folgenden Befehl aus, um zusätzliche Regeln einzuschließen.

$ suricata-update16/2/2022 -- 07:00:16 -  -- Verwendung des Datenverzeichnisses /var/lib/suricata.16/2/2022 -- 07:00:16 -  -- Using Suricata configuration /etc/suricata/suricata.yaml16/2/2022 -- 07:00:16 -  -- Using /usr/share/suricata/rules for Suricata bereitgestellte Regeln...... 16/2/2022 -- 07:00:16 -  -- Keine Quellen konfiguriert, verwendet neue Bedrohungen Open('https://rules.emergingthreats.net/open/suricata-6.0.4/emerging.rules .tar.gz', None, True)16/2/2022 -- 07:00:16 -  -- Überprüfen von https://rules.emergingthreats.net/open/suricata-6.0.4/emerging.rules .tar.gz.md5.16/2/2022 -- 07:00:16 -  -- Abrufen von https://rules.emergingthreats.net/open/suricata-6.0.4/emerging.rules.tar. gz. 100 % - 3162050/3162050.....16/2/2022 -- 07:00:23 -  -- Schreiben von Regeln nach /var/lib/suricata/rules/suricata.rules:insgesamt:32004; aktiviert:24611; hinzugefügt:8; entfernt 1; geändert:121816/2/2022 -- 07:00:23 -  -- Writing /var/lib/suricata/rules/classification.config16/2/2022 -- 07:00:23 -  -- Test mit Suricata -T.16/2/2022 -- 07:01:16 -  -- Done.

Regelsatzanbieter hinzufügen

Sie können die Regeln von Suricata erweitern, indem Sie weitere Anbieter hinzufügen. Es kann Regeln von einer Vielzahl von kostenlosen und kommerziellen Anbietern abrufen.

Sie können die Standardanbieterliste mit dem folgenden Befehl auflisten.

$ suricata-Listenquellen aktualisieren

Zum Beispiel, wenn Sie tgreen/hunting einschließen möchten Regelsatz, können Sie ihn mit dem folgenden Befehl aktivieren.

$ suricata-update enable-source tgreen/hunting

Führen Sie das suricata-update aus Befehl erneut, um die neuen Regeln herunterzuladen und zu aktualisieren.

Schritt 4 – Suricata-Konfiguration validieren

Suricata wird mit einem Validierungstool ausgeliefert, um die Konfigurationsdatei und die Regeln auf Fehler zu überprüfen. Führen Sie den folgenden Befehl aus, um das Validierungstool auszuführen.

$ sudo suricata -T -c /etc/suricata/suricata.yaml -v22/2/2022 -- 23:20:10 -  - Ausführen von suricata im Testmodus22/2/2022 -- 23:20 :10 -  - Dies ist Suricata Version 6.0.4 RELEASE, die im SYSTEM-Modus ausgeführt wird22/2/2022 -- 23:20:10 -  - CPUs/Kerne online:222/2/2022 -- 23:20 :10 -  - Kappen für Hauptthread fallengelassen22/2/2022 -- 23:20:10 -  - schnelles Ausgabegerät (regulär) initialisiert:fast.log22/2/2022 -- 23:20:10 -  - Eve-Log-Ausgabegerät (normal) initialisiert:eve.json22/2/2022 -- 23:20:10 -  - Statistik-Ausgabegerät (normal) initialisiert:stats.log22/2/2022 -- 23:20:21 -  - 1 Regeldatei verarbeitet. 24611 Regeln erfolgreich geladen, 0 Regeln fehlgeschlagen. 24614 Unterschriften verarbeitet. 1216 sind reine IP-Regeln, 4120 prüfen die Paketnutzlast, 19074 prüfen die Anwendungsschicht, 108 sind nur Decoder-Ereignisse22/2/2022 – 23:21:02 –  – Die bereitgestellte Konfiguration wurde erfolgreich geladen. Exiting.22/2/2022 -- 23:21:03 -  - Bereinigen der Signaturgruppierungsstruktur ... abgeschlossen

Das -T Flag weist Suricata an, im Testmodus zu laufen, das -c Flag konfiguriert den Speicherort der Konfigurationsdatei und -v flag gibt die ausführliche Ausgabe des Befehls aus. Abhängig von Ihrer Systemkonfiguration und der Anzahl der hinzugefügten Regeln kann es einige Minuten dauern, bis der Befehl abgeschlossen ist.

Schritt 5 – Suricata ausführen

Nachdem Suricata konfiguriert und eingerichtet ist, ist es an der Zeit, die Anwendung auszuführen.

$ sudo systemctl start suricata

Überprüfen Sie den Status des Prozesses.

$ sudo systemctl status suricata

Sie sollten die folgende Ausgabe sehen, wenn alles richtig funktioniert.

? suricata.service – Suricata Intrusion Detection Service Geladen:geladen (/usr/lib/systemd/system/suricata.service; aktiviert; Herstellervoreinstellung:deaktiviert) Aktiv:aktiv (läuft) seit Mi 2022-02-16 07:14:22 KOORDINIERTE WELTZEIT; Vor 32 Minuten Dokumente:man:suricata(1) Prozess:1494 ExecStartPre=/bin/rm -f /var/run/suricata.pid (code=exited, status=0/SUCCESS) Haupt-PID:1496 (Suricata-Main) Aufgaben :8 (Grenze:23479) Speicher:367,5 MB CGroup:/system.slice/suricata.service ??1496 /sbin/suricata -c /etc/suricata/suricata.yaml --pidfile /var/run/suricata.pid - i eth0 --user suricata 16. Februar 07:14:22 suricata systemd[1]:Suricata Intrusion Detection Service gestartet...16. Februar 07:14:22 suricata systemd[1]:Suricata Intrusion Detection Service gestartet.

Das Parsen aller Regeln kann einige Minuten dauern. Daher ist die obige Statusprüfung kein vollständiger Hinweis darauf, ob Suricata aktiv und bereit ist. Sie können die Protokolldatei mit dem folgenden Befehl darauf überwachen.

$ sudo tail -f /var/log/suricata/suricata.log

Wenn Sie die folgende Zeile in der Protokolldatei sehen, bedeutet dies, dass Suricata ausgeführt wird und bereit ist, den Netzwerkverkehr zu überwachen.

16/02/2022 -- 07:18:39 -  - Alle AFP-Capture-Threads laufen.

Schritt 6 – Testen der Suricata-Regeln

Wir werden überprüfen, ob Suricata verdächtigen Datenverkehr erkennt. Der Suricata-Leitfaden empfiehlt, die ET Open-Regelnummer 2100498 zu testen mit dem folgenden Befehl.

$ curl http://testmynids.org/uid/index.html

Sie erhalten die folgende Antwort.

uid=0(root) gid=0(root) groups=0(root)

Der obige Befehl gibt vor, die Ausgabe der id zurückzugeben Befehl, der auf einem kompromittierten System ausgeführt werden kann. Um zu testen, ob Suricata den Datenverkehr erkannt hat, müssen Sie die Protokolldatei anhand der angegebenen Regelnummer überprüfen.

$ grep 2100498 /var/log/suricata/fast.log

Wenn Ihre Anfrage IPv6 verwendet hat, sollten Sie die folgende Ausgabe sehen.

22.02.2022-23:24:33.997371 [**] [1:2100498:7] GPL ATTACK_RESPONSE-ID-Prüfung hat root [**] zurückgegeben [Klassifizierung:Potenziell schädlicher Datenverkehr] [Priorität:2] {TCP} 2600:9000:2204:5c00:0018:30b3:e400:93a1:80 -> 2a03:b0c0:0002:00d0:0000:0000:0fc2:b001:41468

Wenn Ihre Anfrage IPv4 verwendet, sehen Sie die folgende Ausgabe.

22.02.2022-23:21:46.783476 [**] [1:2100498:7] GPL ATTACK_RESPONSE-ID-Prüfung hat root [**] zurückgegeben [Klassifizierung:Potenziell schädlicher Datenverkehr] [Priorität:2] {TCP} 204.246.178.81:80 -> 164.90.192.1:36364

Suricata protokolliert auch Ereignisse in /var/log/suricata/eve.log Datei im JSON-Format. Um diese Regeln zu lesen und zu interpretieren, müssen Sie jq installieren was den Rahmen dieses Tutorials sprengen würde.

Wir sind mit Teil eins des Tutorials fertig, wo wir Suricata installiert und getestet haben. Der nächste Teil umfasst die Installation des ELK-Stacks und die Einrichtung zur Visualisierung von Suricata und seinen Protokollen. Dieser zweite Teil des Tutorials sollte auf dem zweiten Server durchgeführt werden, sofern nicht anders angegeben.

Schritt 7 – Installieren Sie Elasticsearch und Kibana

Der erste Schritt bei der Installation von Elasticsearch besteht darin, den Elastic GPG-Schlüssel zu Ihrem Server hinzuzufügen.

$ sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Erstellen Sie ein Repository für das Elasticsearch-Paket, indem Sie die Datei /etc/yum/yum.repos.d/elasticsearch.repo erstellen und öffnen zum Bearbeiten.

$ sudo nano /etc/yum.repos.d/elasticsearch.repo

Fügen Sie den folgenden Code ein.

[elasticsearch]name=Elasticsearch-Repository für 7.x-Paketebaseurl=https://artifacts.elastic.co/packages/7.x/yumgpgcheck=1gpgkey=https://artifacts.elastic.co/GPG-KEY- elasticsearchenabled=0autorefresh=1type=rpm-md

Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.

Installieren Sie Elasticsearch und Kibana.

$ sudo dnf install --enablerepo=elasticsearch elasticsearch kibana

Sie müssen das Flag --enablerepo=elasticsearch verwenden Seitdem haben wir das Repository jedes Mal standardmäßig deaktiviert. Dies verhindert eine versehentliche Aktualisierung dieser Pakete.

Suchen Sie die private IP-Adresse Ihres Servers mit dem folgenden Befehl.

$ ip -kurze Adresse showlo UNKNOWN 127.0.0.1/8 ::1/128eth0 UP 164.90.205.77/20 10.18.0.7/16 2a03:b0c0:2:d0::fef:b001/64 fe80::340a:6eff:fe5c:76ed/64eth1 UP 10.133.0.3/16 fe80::906f:b5ff:fec4:c7b8/64

Notieren Sie sich die private IP Ihres Servers (in diesem Fall 10.133.0.3). Wir bezeichnen es als your_private_IP . Die öffentliche IP-Adresse des Servers (164.90.205.77) wird als your_public_IP bezeichnet im verbleibenden Tutorial. Notieren Sie sich auch den Netzwerknamen Ihres Servers, eth1 .

Schritt 8 – Elasticsearch konfigurieren

Elasticsearch speichert seine Konfiguration in /etc/elasticsearch/elasticsearch.yml Datei. Öffnen Sie die Datei zum Bearbeiten.

$ sudo nano /etc/elasticsearch/elasticsearch.yml

Elasticsearch akzeptiert standardmäßig nur lokale Verbindungen. Wir müssen es ändern, damit Kibana über die private IP-Adresse darauf zugreifen kann.

Suchen Sie die Zeile #network.host: 192.168.0.1 und fügen Sie die folgende Zeile direkt darunter hinzu, wie unten gezeigt.

# Standardmäßig ist Elasticsearch nur auf localhost zugänglich. Legen Sie hier eine andere# Adresse fest, um diesen Knoten im Netzwerk verfügbar zu machen:##network.host:192.168.0.1network.bind_host:["127.0.0.1", "your_private_IP"]## Standardmäßig hört Elasticsearch zuerst auf HTTP-Verkehr freien Port findet es ab 9200. Stellen Sie hier einen bestimmten HTTP-Port ein:

Dadurch wird sichergestellt, dass Elastic weiterhin lokale Verbindungen akzeptieren kann, während es für Kibana über die private IP-Adresse verfügbar ist.

Der nächste Schritt besteht darin, einige Sicherheitsfunktionen zu aktivieren und sicherzustellen, dass Elastic für die Ausführung auf einem einzelnen Knoten konfiguriert ist. Fügen Sie dazu die folgenden Zeilen am Ende der Datei hinzu.

. . .discovery.type:single-nodexpack.security.enabled:true

Wenn Sie mehrere Elastic Search-Knoten verwenden, können Sie die erste Zeile weglassen.

Wenn Sie fertig sind, speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.

Firewall konfigurieren

Fügen Sie die richtigen Firewall-Regeln für Elasticsearch hinzu, damit es über das private Netzwerk zugänglich ist.

$ sudo firewall-cmd --permanent --zone=internal --change-interface=eth1$ sudo firewall-cmd --permanent --zone=internal --add-service=elasticsearch$ sudo firewall-cmd -- permanent --zone=internal --add-service=kibana$ sudo firewall-cmd --reload

Stellen Sie sicher, dass Sie den Schnittstellennamen im ersten Befehl so wählen, wie Sie ihn in Schritt 7 erhalten haben. Die obigen Befehle ändern die Standardzone der Firewall auf intern und öffnen die Ports 9200, 9300 für Elasticsearch und Port 5601 für Kibana.

Elasticsearch starten

Nachdem Sie Elasticsearch konfiguriert haben, ist es an der Zeit, den Dienst zu starten.

$ sudo systemctl elastische Suche starten

Elasticsearch-Passwörter erstellen

Nachdem Sie die Sicherheitseinstellung von Elasticsearch aktiviert haben, besteht der nächste Schritt darin, einige Passwörter für den Standardbenutzer zu generieren. Elasticsearch wird mit einem Dienstprogramm zur Passworterstellung unter /usr/share/elasticsearch/bin/elasticsearch-setup-passwords ausgeliefert die zufällige Passwörter generieren kann.

Passwörter erstellen.

$ cd /usr/share/elasticsearch/bin$ sudo ./elasticsearch-setup-passwords auto

Sie erhalten eine Ausgabe wie die folgende. Drücken Sie y um fortzufahren, wenn Sie dazu aufgefordert werden.

Starten der Einrichtung von Passwörtern für reservierte Benutzer elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.Die Passwörter werden nach dem Zufallsprinzip generiert und auf der Konsole ausgegeben.Bitte bestätigen Sie, dass Sie fortfahren möchten [j/N] yChanged Passwort für den Benutzer apm_systemPASSWORD apm_system =EtwMg8maU67o5tvD5rseChanged Passwort für den Benutzer kibana_systemPASSWORD kibana_system =dTanR7Q2HtgDtATRvuJvChanged Passwort für den Benutzer kibanaPASSWORD Kibana =dTanR7Q2HtgDtATRvuJvChanged Passwort für den Benutzer logstash_systemPASSWORD logstash_system =XGSjxNktuNMWVfGYiboxChanged Passwort für den Benutzer beats_systemPASSWORD beats_system =JXTr7CeHkMue608qVTQaChanged Passwort für den Benutzer remote_monitoring_userPASSWORD remote_monitoring_user =Q6JTJNl3lPy0fhy6QuMPChanged Passwort für den Benutzer elasticPASSWORD elastisch =bd1YJfhSa8RC8SMvTIwg 

Sie können das Dienstprogramm nur einmal ausführen, speichern Sie also alle Passwörter an einem sicheren Ort.

Schritt 9 – Kibana konfigurieren

Der erste Schritt bei der Konfiguration von Kibana ist die Aktivierung des xpack Sicherheitsfunktion durch Generieren geheimer Schlüssel. Kibana verwendet diese geheimen Schlüssel, um Daten in Elasticsearch zu speichern. Auf das Dienstprogramm zum Generieren geheimer Schlüssel kann über /usr/share/kibana/bin zugegriffen werden Verzeichnis.

$ cd /usr/share/kibana/bin/$ sudo ./kibana-encryption-keys generate -q --force

Das -q Flag unterdrückt die Befehlsanweisungen und --force Flag stellt sicher, dass neue Geheimnisse generiert werden. Sie erhalten eine Ausgabe wie die folgende.

xpack.encryptedSavedObjects.encryptionKey:0f4e5e1cf8fad1874ffed0faac6be0daxpack.reporting.encryptionKey:d435c78a4e37521e539c0e905420c9f5xpack.security.encryptionKey:7ba0e2a02747bb90fb0f9a3c267.b99ed

Kopieren Sie die Ausgabe. Öffnen Sie die Konfigurationsdatei von Kibana unter /etc/kibana/kibana.yml zum Bearbeiten.

$ sudo nano /etc/kibana/kibana.yml

Fügen Sie den Code aus dem vorherigen Befehl am Ende der Datei ein.

. . .# Gibt das Gebietsschema an, das für alle lokalisierbaren Zeichenfolgen, Datums- und Zahlenformate verwendet werden soll.# Unterstützte Sprachen sind die folgenden:Englisch - en , standardmäßig Chinesisch - zh-CN .#i18n.locale:"en"xpack.encryptedSavedObjects.encryptionKey :0f4e5e1cf8fad1874ffed0faac6be0daxpack.reporting.encryptionKey:d435c78a4e37521e539c0e905420c9f5xpack.security.encryptionKey:7ba0e2a02747bb90fb0f9a3c267b99ed

Kibana-Port konfigurieren

Kibana muss so konfiguriert werden, dass es über die private IP-Adresse des Servers erreichbar ist. Suchen Sie die Zeile #server.host: "localhost" in der Datei und fügen Sie die folgende Zeile wie gezeigt direkt darunter hinzu.

# Kibana wird von einem Back-End-Server bedient. Diese Einstellung gibt den zu verwendenden Port an.#server.port:5601# Gibt die Adresse an, an die sich der Kibana-Server bindet. Sowohl IP-Adressen als auch Hostnamen sind gültige Werte.# Der Standardwert ist 'localhost', was normalerweise bedeutet, dass Remote-Rechner keine Verbindung herstellen können.# Um Verbindungen von Remote-Benutzern zuzulassen, setzen Sie diesen Parameter auf eine Nicht-Loopback-Adresse.#server .host:"localhost"server.host:"ihre_private_IP"

Wenn Sie fertig sind, speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.

Kibana-Zugriff konfigurieren

Der nächste Schritt besteht darin, einen Benutzernamen und ein Passwort zu erstellen, die Kibana zur Authentifizierung verwenden kann. Sie können dies tun, indem Sie die Konfigurationsdatei von Kibana direkt bearbeiten, aber dies kann ein Sicherheitsproblem verursachen. Die sichere Methode beinhaltet die Verwendung von kibana-keystore Anwendung.

Führen Sie die folgenden Befehle aus, um einen Benutzernamen festzulegen. Geben Sie kibana_system ein als Benutzername.

$ cd /usr/share/kibana/bin$ sudo ./kibana-keystore add elasticsearch.usernameGeben Sie den Wert für elasticsearch.username ein:*************

Führen Sie den Befehl erneut aus, um das Kennwort festzulegen. Stellen Sie sicher, dass Sie das Passwort verwenden, das Sie in Schritt 8 für Kibana erstellt haben. Für unser Tutorial lautet das Passwort dTanR7Q2HtgDtATRvuJv .

$ sudo ./kibana-keystore add elasticsearch.passwordGeben Sie den Wert für elasticsearch.password ein:********************

Starte Kibana

Nachdem Sie den sicheren Zugriff und das Netzwerk für Kibana konfiguriert haben, starten Sie den Vorgang.

$ sudo systemctl Kibana starten

Überprüfen Sie den Status, um festzustellen, ob es ausgeführt wird.

$ sudo systemctl status kibana

Schritt 10 – Filebeat installieren und konfigurieren

Es ist wichtig zu beachten, dass wir Filebeat auf dem Suricata-Server installieren werden. Wechseln Sie also zurück und fügen Sie den Elastic GPG-Schlüssel hinzu, um loszulegen.

$ sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Erstellen und öffnen Sie das elastische Repository.

$ sudo nano /etc/yum.repos.d/elasticsearch.repo

Fügen Sie den folgenden Code ein.

[elasticsearch]name=Elasticsearch-Repository für 7.x-Paketebaseurl=https://artifacts.elastic.co/packages/7.x/yumgpgcheck=1gpgkey=https://artifacts.elastic.co/GPG-KEY- elasticsearchenabled=0autorefresh=1type=rpm-md

Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.

Installieren Sie Filebeat.

$ sudo dnf install --enablerepo=elasticsearch filebeat

Filebeat speichert seine Konfiguration in /etc/filebeat/filebeat.yml Datei. Zum Bearbeiten öffnen.

$ sudo nano /etc/filebeat/filebeat.yml

Als erstes müssen Sie es mit dem Dashboard von Kibana verbinden. Suchen Sie die Zeile #host: "localhost:5601" im Kibana Abschnitt und fügen Sie die folgende Zeile wie gezeigt direkt darunter hinzu.

. . .# Ab Beats Version 6.0.0 werden die Dashboards über die Kibana-API geladen.# Dazu ist eine Kibana-Endpoint-Konfiguration erforderlich.setup.kibana:# Kibana-Host # Schema und Port können weggelassen werden und werden auf den Standardwert gesetzt ( http und 5601) # Falls Sie einen zusätzlichen Pfad angeben, ist das Schema erforderlich:http://localhost:5601/path # IPv6-Adressen sollten immer wie folgt definiert werden:https://[2001:db8::1]:5601 #host:"localhost:5601" host:"ihre_private_IP:5601". . .

Suchen Sie als Nächstes die Elasticsearch-Ausgabe Abschnitt der Datei und bearbeiten Sie die Werte von hosts , username , und password Wie nachfolgend dargestellt. Wählen Sie als Benutzernamen elastic Verwenden Sie als Wert und als Passwort den in Schritt 8 dieses Tutorials generierten Wert.

output.elasticsearch:# Array von Hosts, zu denen eine Verbindung hergestellt werden soll. hosts:["ihre_private_IP:9200"] # Protokoll - entweder `http` (Standard) oder `https`. #protocol:"https" # Authentifizierungsdaten - entweder API-Schlüssel oder Benutzername/Passwort. #api_key:"id:api_key" Benutzername:"elastic" Passwort:"bd1YJfhSa8RC8SMvTIwg". . .

Wenn Sie fertig sind, speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.

Aktivieren Sie als Nächstes das integrierte Suricata-Modul von Filebeat.

$ sudo filebeat-Module aktivieren suricata

Der letzte Schritt bei der Konfiguration von Filebeat besteht darin, die SIEM-Dashboards und Pipelines mithilfe des filebeat setup in Elasticsearch zu laden Befehl.

$ sudo filebeat-Setup

Es kann einige Minuten dauern, bis der Befehl abgeschlossen ist. Sobald Sie fertig sind, sollten Sie die folgende Ausgabe erhalten.

Das Überschreiben der ILM-Richtlinie ist deaktiviert. Legen Sie „setup.ilm.overwrite:true“ zum Aktivieren fest.Index-Setup abgeschlossen.Laden von Dashboards (Kibana muss ausgeführt und erreichbar sein)Laden von DashboardsEinrichten von ML mithilfe von setup --machine-learning wird in 8.0.0 entfernt. Bitte verwenden Sie stattdessen die ML-App. Weitere Informationen finden Sie unter:https://www.elastic.co/guide/en/machine-learning/current/index.html Beat.Loaded Machine Learning-AuftragskonfigurationenLoaded Ingest-Pipelines

Starten Sie den Filebeat-Dienst.

$ sudo systemctl start filebeat

Überprüfen Sie den Status des Dienstes.

$ sudo systemctl status filebeat

Schritt 11 – Zugriff auf das Kibana-Dashboard

Da KIbana so konfiguriert ist, dass es nur über seine private IP-Adresse auf Elasticsearch zugreift, haben Sie zwei Möglichkeiten, darauf zuzugreifen. Die erste Methode besteht darin, von Ihrem PC aus einen SSH-Tunnel zum Elasticsearch-Server zu verwenden. Dadurch wird Port 5601 von Ihrem PC an die private IP-Adresse des Servers weitergeleitet, und Sie können von Ihrem PC unter http://localhost:5601 auf Kibana zugreifen . Aber diese Methode bedeutet, dass Sie nirgendwo anders darauf zugreifen können.

Die Option besteht darin, Nginx auf Ihrem Suricata-Server zu installieren und verwenden Sie es als Reverse-Proxy, um über seine private IP-Adresse auf den Server von Elasticsearch zuzugreifen. Wir werden beide Wege besprechen. Sie können je nach Ihren Anforderungen eine der beiden Möglichkeiten wählen.

Lokalen SSH-Tunnel verwenden

Wenn Sie Windows 10 oder Windows 11 verwenden, können Sie den SSH LocalTunnel über Ihre Windows Powershell ausführen. Unter Linux oder macOS können Sie das Terminal verwenden. Sie müssen wahrscheinlich den SSH-Zugriff konfigurieren, falls Sie dies noch nicht getan haben.

Führen Sie den folgenden Befehl im Terminal Ihres Computers aus, um den SSH-Tunnel zu erstellen.

$ ssh -L 5601:your_private_IP:5601 [email protected]_public_IP -N
  • Das -L Flag bezieht sich auf den lokalen SSH-Tunnel, der Datenverkehr vom Port Ihres PCs zum Server weiterleitet.
  • Die private_IP:5601 ist die IP-Adresse, an die Ihr Datenverkehr auf dem Server weitergeleitet wird. Ersetzen Sie sie in diesem Fall durch die private IP-Adresse Ihres Elasticsearch-Servers.
  • Der your_public_IP ist die öffentliche IP-Adresse des Elasticsearch-Servers, die zum Öffnen einer SSH-Verbindung verwendet wird.
  • Das -N Flag weist OpenSSH an, keinen Befehl auszuführen, sondern die Verbindung aufrechtzuerhalten, solange der Tunnel läuft.

Nachdem der Tunnel geöffnet ist, können Sie auf Kibana zugreifen, indem Sie die URL http://localhost:5601 öffnen im Browser Ihres PCs. Sie erhalten den folgenden Bildschirm.

Sie müssen den Befehl so lange ausführen, wie Sie auf Kibana zugreifen müssen. Drücken Sie Strg + C in Ihrem Terminal, um den Tunnel zu schließen.

Nginx-Reverse-Proxy verwenden

Diese Methode eignet sich am besten, wenn Sie von überall auf der Welt auf das Dashboard zugreifen möchten.

Firewall konfigurieren

Bevor Sie fortfahren, müssen Sie HTTP- und HTTPS-Ports in der Firewall öffnen.

$ sudo firewall-cmd --permanent --add-service=http$ sudo firewall-cmd --permanent --add-service=https

Laden Sie die Firewall neu, um die Änderungen zu aktivieren.

$ sudo firewall-cmd --reload

SSL installieren und konfigurieren

Der erste Schritt besteht darin, das SSL-Zertifikat von Let’s Encrypt zu installieren. Da wir das EPEL-Repository bereits eingerichtet haben, installieren Sie das Certbot-Tool.

$ sudo dnf install certbot

Generieren Sie das SSL-Zertifikat für die Domain kibana.example.com .

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d kibana.example.com

Der obige Befehl lädt ein Zertifikat in /etc/letsencrypt/live/kibana.example.com herunter Verzeichnis auf Ihrem Server.

Erstellen Sie eine Diffie-Hellman-Gruppe Zertifikat.

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Create a challenge web root directory for Let's Encrypt auto-renewal.

$ sudo mkdir -p /var/lib/letsencrypt

Erstellen Sie einen Cron-Job, um das SSL zu erneuern. Es wird jeden Tag ausgeführt, um das Zertifikat zu überprüfen und bei Bedarf zu erneuern. Erstellen Sie dazu zunächst die Datei /etc/cron.daily/certbot-renew und zum Bearbeiten öffnen.

$ sudo nano /etc/cron.daily/certbot-renew

Fügen Sie den folgenden Code ein.

#!/bin/shcertbot renew --cert-name kibana.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.

Ändern Sie die Berechtigungen für die Aufgabendatei, um sie ausführbar zu machen.

$ sudo chmod +x /etc/cron.daily/certbot-renew

Install and Configure Nginx

Rocket Linux 8.5 ships with the latest stable version of Nginx as a module. Install it using the following command.

$ sudo dnf module install nginx:1.20

You can check the version you want to install using the following command.

$ dnf module list nginxRocky Linux 8 - AppStreamName Stream Profiles Summarynginx 1.14 [d] common [d] nginx webservernginx 1.16 common [d] nginx webservernginx 1.18 common [d] nginx webservernginx 1.20 [e] common [d] [i] nginx webserverExtra Packages for Enterprise Linux Modular 8 - x86_64Name Stream Profiles Summarynginx mainline common nginx webservernginx 1.20 [e] common [d] [i] nginx webserver

Confirm the Nginx installation.

$ nginx -vnginx version 1.20.1

Aktivieren Sie den Nginx-Dienst.

$ sudo systemctl enable nginx

Create and open the Nginx configuration file for Kibana.

$ sudo nano /etc/nginx/conf.d/kibana.conf

Paste the following code in it. Replace the IP address with the private IP address of your Elasticsearch server.

server {listen 80; hör zu [::]:80; server_name kibana.example.com; return 301 https://$host$request_uri;}server { server_name kibana.example.com; Zeichensatz utf-8; hören 443 ssl http2; hören [::]:443 ssl http2; access_log /var/log/nginx/kibana.access.log; error_log /var/log/nginx/kibana.error.log; ssl_certificate /etc/letsencrypt/live/kibana.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/kibana.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/kibana.example.com/chain.pem; ssl_session_timeout 1d; ssl_session_cache freigegeben:MozSSL:10m; ssl_session_tickets aus; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE -RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; resolver 8.8.8.8; ssl_stapling an; ssl_stapling_verify an; ssl_dhparam /etc/ssl/certs/dhparam.pem; location / { proxy_pass http://your_private_IP:5601; Proxy_set_header Host $host; Proxy_Set_Header X-Real-IP $remote_addr; Proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $schema; }}

Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.

Öffnen Sie die Datei /etc/nginx/nginx.conf zum Bearbeiten.

$ sudo nano /etc/nginx/nginx.conf

Fügen Sie die folgende Zeile vor der Zeile include /etc/nginx/conf.d/*.conf; hinzu .

server_names_hash_bucket_size 64;

Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.

Verify the configuration.

$ sudo nginx -tnginx:the configuration file /etc/nginx/nginx.conf syntax is oknginx:configuration file /etc/nginx/nginx.conf test is successful

Start the Nginx service.

$ sudo systemctl start nginx

Your Kibana dashboard should be accessible via the URL https://kibana.example.com from anywhere you want.

Step 12 - Managing Kibana Dashboards

Before proceeding further with managing the dashboards, you need to add the base URL field in Kibana's configuration.

Open Kibana's configuration file.

$ sudo nano /etc/kibana/kibana.yml

Find the commented line #server.publicBaseUrl: "" and change it as follows by removing the hash in front of it.

server.publicBaseUrl:"https://kibana.example.com"

Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.

Restart the Kibana service.

$ sudo systemctl restart kibana

Wait for a few minutes and load the URL https://kibana.example.com in your browser. Log in with the username elastic and the password you generated before (bd1YJfhSa8RC8SMvTIwg ) and you will get the following screen.

Type type:data suricata in the search box at the top to locate Suricata's information.

Click the first result ([Filebeat Suricata] Alert Overview ), and you will get a screen similar to the following. By default, it shows the entries for only the last 15 minutes, but we are displaying it over a larger timespan to show more data for the tutorial.

Click on the Events button to view all the logged events.

On scrolling down on events and alert pages, you can identify each event and alert by the type of protocol, the source and destination ports, and the IP address of the source. You can also view the countries from where the traffic originated.

You can use Kibana and Filebeat to access and generate other types of dashboards. One of the useful in-built dashboards that you can right away is the Security dashboard. Klicken Sie auf das Netzwerk dashboard from the left hamburger menu, and you will get the following screen.

You can add more dashboards like Nginx by enabling and configuring in-built Filebeat modules.

Schlussfolgerung

This concludes the tutorial for installing and configuring Suricata IDS with Elastic Stack on a Rocky Linux 8 based server. You also configured Nginx as a reverse proxy to access Kibana dashboards externally. Wenn Sie Fragen haben, posten Sie diese in den Kommentaren unten.


Rocky Linux
  1. So installieren und konfigurieren Sie Docker in Rocky Linux/Centos 8

  2. So installieren und konfigurieren Sie Ansible unter Rocky Linux/CentOS 8

  3. So installieren und konfigurieren Sie den HAProxy-Load-Balancer unter Rocky Linux/Alma Linux 8

  4. So installieren und konfigurieren Sie Memcached unter Rocky Linux/Alma Linux 8

  5. So installieren und konfigurieren Sie Squid Proxy unter Rocky Linux/Alma Linux 8

So installieren Sie LAMP Stack auf Rocky Linux 8

So installieren und konfigurieren Sie OpenCV unter Rocky Linux 8.4

So installieren Sie Docker unter Rocky Linux und AlmaLinux

So installieren Sie MongoDB unter Rocky Linux und AlmaLinux

So installieren Sie Java 16 in Rocky Linux und AlmaLinux

So installieren und konfigurieren Sie den Caddy Web Server mit PHP unter Rocky Linux 8