Einführung
Die vorherigen Tutorials in dieser Serie haben Sie durch die Installation und Konfiguration von Suricata geführt. Sie haben auch erklärt, wie Sie Filebeat verwenden, um Warnungen von Ihrem Suricata-Server an einen Elastic Stack-Server zu senden, um sie mit seiner integrierten Sicherheitsinformations- und Ereignisverwaltungs (SIEM)-Funktionalität zu verwenden.
In diesem abschließenden Tutorial der Serie erstellen Sie benutzerdefinierte Kibana-Regeln und generieren Warnungen in den SIEM-Dashboards von Kibana. Sobald Sie Regeln festgelegt haben und verstehen, wo und wie Sie die Protokolle von Suricata mithilfe von Kibana filtern können, werden Sie erkunden, wie Sie Fälle erstellen und verwalten können, indem Sie die Analysetools der Zeitleiste von Kibana verwenden.
Am Ende dieses Tutorials verfügen Sie über ein SIEM-System, das Sie verwenden können, um Sicherheitsereignisse auf allen Servern in Ihrem Netzwerk zu verfolgen und zu untersuchen.
Voraussetzungen
Wenn Sie dieser Tutorial-Serie gefolgt sind, sollten Sie bereits einen Server mit mindestens 4 GB RAM und 2 CPUs sowie einem konfigurierten Nicht-Root-Benutzer haben. Für die Zwecke dieses Leitfadens können Sie dies einrichten, indem Sie unseren initialen Server-Einrichtungsanleitungen für entweder Ubuntu 20.04, Debian 11 oder Rocky Linux 8 folgen, je nachdem, welches Betriebssystem Sie bevorzugen.
Sie benötigen auch Suricata installiert und auf Ihrem Server ausgeführt. Wenn Sie Suricata auf Ihrem Server installieren müssen, können Sie dies mithilfe einer der folgenden Anleitungen je nach Ihrem Betriebssystem tun:
- Ubuntu 20.04: So installieren Sie Suricata unter Ubuntu 20.04
- Debian 11: So installieren Sie Suricata unter Debian 11
- Rocky Linux 8: So installieren Sie Suricata unter Rocky Linux 8
Sie benötigen auch einen Server, auf dem der Elastic Stack läuft und so konfiguriert ist, dass Filebeat Logs von Ihrem Suricata-Server an Elasticsearch senden kann. Wenn Sie einen Elastic Stack-Server erstellen müssen, verwenden Sie eine der Anleitungen aus der folgenden Liste, die zu Ihrem Betriebssystem passt:
- Ubuntu 20.04: So erstellen Sie ein Sicherheitsinformations- und Ereignismanagement (SIEM)-System mit Suricata und dem Elastic Stack unter Ubuntu 20.04
- Debian 11: So erstellen Sie ein Sicherheitsinformations- und Ereignismanagement (SIEM)-System mit Suricata und dem Elastic Stack unter Debian 11
- Rocky Linux 8: So erstellen Sie ein Sicherheitsinformations- und Ereignismanagement (SIEM)-System mit Suricata und dem Elastic Stack unter Rocky Linux 8
Stellen Sie sicher, dass Sie sich bei Kibana auf Ihrem Elasticsearch-Server anmelden können und dass es Ereignisse in den verschiedenen Suricata-Alarmen und Ereignis-Dashboards gibt.
Wenn Sie alle Voraussetzungen erfüllt haben, öffnen Sie einen SSH-Tunnel zu Ihrem Kibana-Server und melden Sie sich mit Ihrem Browser bei Kibana an, indem Sie die Anmeldedaten verwenden, die Sie im vorherigen Tutorial generiert haben.
Schritt 1 – Aktivieren von API-Schlüsseln in Elasticsearch
Bevor Sie Regeln, Alarme und Zeitachsen in Kibana erstellen können, müssen Sie eine xpack
-Sicherheitsmodul-Einstellung aktivieren.
Öffnen Sie Ihre /etc/elasticsearch/elasticsearch.yml
-Datei mit nano
oder Ihrem bevorzugten Editor.
Fügen Sie die folgende markierte Zeile am Ende der Datei hinzu:
. . .
discovery.type: single-node
xpack.security.enabled: true
xpack.security.authc.api_key.enabled: true
Speichern und schließen Sie die Datei, wenn Sie mit der Bearbeitung fertig sind. Wenn Sie nano
verwenden, können Sie dies mit STRG+X
, dann Y
und EINGABE
bestätigen.
Starten Sie nun Elasticsearch neu, damit die neue Einstellung wirksam wird.
Sie sind nun bereit, Regeln zu konfigurieren, Alarme zu überprüfen und Zeitachsen und Fälle in Kibana zu erstellen.
Schritt 2 — Hinzufügen von Regeln zu Kibana
Um die SIEM-Funktionalität von Kibana mit Suricata-Ereignisdaten zu nutzen, müssen Sie Regeln erstellen, die Alarme über eingehende Ereignisse generieren. Besuchen Sie das Regel-Dashboard auf der Sicherheits-App-Seite von Kibana, um Regeln zu erstellen oder zu importieren.
Zu Demonstrationszwecken verwenden wir die folgenden Signaturen, um den Verkehr zu einem Server auf nicht übereinstimmenden Ports zu erkennen (SSH-, HTTP- und TLS-Verkehr):
alert ssh any any -> 203.0.113.5 !22 (msg:"SSH TRAFFIC on non-SSH port"; classtype: misc-attack; target: dest_ip; sid:1000000;)
alert ssh any any -> 2001:DB8::1/32 !22 (msg:"SSH TRAFFIC on non-SSH port"; classtype: misc-attack; target: dest_ip; sid:1000001;)
alert http any any -> 203.0.113.5 !80 (msg:"HTTP REQUEST on non-HTTP port"; classtype:misc-activity; sid:1000002;)
alert http any any -> 2001:DB8::1/32 !80 (msg:"HTTP REQUEST on non-HTTP port"; classtype:misc-activity; sid:1000003;)
alert tls any any -> 203.0.113.5 !443 (msg:"TLS TRAFFIC on non-TLS HTTP port"; classtype:misc-activity; sid:1000004;)
alert tls any any -> 2001:DB8::1/32 !443 (msg:"TLS TRAFFIC on non-TLS HTTP port"; classtype:misc-activity; sid:1000005;)
Wenn Sie Ihre eigenen Signaturen oder solche aus einem Regelset verwenden, stellen Sie sicher, dass Sie Alarme generieren können und dass Sie auf die entsprechenden Ereignisse in den Standard-Suricata-Dashboards in Kibana zugreifen können.
Jetzt besuchen Sie die Regeln-Seite in der Sicherheits-App von Kibana http://localhost:5601/app/security/rules/. Klicken Sie auf die Schaltfläche Neue Regel erstellen oben rechts auf der Seite.
Stellen Sie sicher, dass die Kartenart Benutzerdefinierte Abfrage ausgewählt ist. Scrollen Sie zum Eingabefeld Benutzerdefinierte Abfrage und fügen Sie folgendes ein:
rule.id: "1000000" or rule.id :"1000001"
Stellen Sie sicher, dass Ihre rule.id
-Werte mit dem sid
-Wert von Suricata für den Angriff oder die Angriffe übereinstimmen, über die Sie alarmiert werden möchten.
Ändern Sie das Dropdown-Menü Abfrage-Schnellvorschau auf Letzter Monat und klicken Sie dann auf Vorschauergebnisse. Wenn Sie entsprechende Ereignisse in Ihren Suricata-Protokollen haben, wird die Seite aktualisiert und zeigt einen Graphen mit Alarmen aus dem letzten Monat an. Ihre Seite sollte dem folgenden Screenshot ähneln:
Klicken Sie auf Weiter, um fortzufahren und einen Namen in das Feld Regelname hinzuzufügen, was für jede hinzugefügte Regel erforderlich ist. Fügen Sie einen Namen in das Feld Regelname ein. In diesem Beispiel verwenden wir die Nachrichtenbeschreibung aus der Suricata-Regel SSH-VERKEHR auf nicht-SSH-Port
. Geben Sie auch eine Beschreibung für die Regel an. In diesem Beispiel verwenden wir Überprüfen Sie Verbindungsversuche von SSH auf nicht standardmäßigen Ports
.
Sie können auch den Abschnitt Erweiterte Einstellungen erweitern und Details zur Regel hinzufügen. Sie könnten beispielsweise eine Erklärung darüber hinzufügen, wie mit einem durch die Regel generierten Alarm umgegangen wird, oder auf Artikel von Sicherheitsforschern zu einem bestimmten Angriffstyp verlinken.
Wenn Sie den Regelnamen, die Beschreibung und gegebenenfalls zusätzliche Felder hinzugefügt haben, klicken Sie auf Weiter, um mit Schritt 3 zur Erstellung der Regel fortzufahren.
Lassen Sie die Einstellungen im nächsten Abschnitt Regel planen mit ihren Standardwerten und klicken Sie auf Weiter.
Auf der Regelaktionen-Schritt klicken Sie abschließend auf Erstellen & Regel aktivieren.
Sie werden auf eine neue Seite umgeleitet, die Details zur Regel anzeigt:
Hinweis: Es kann einige Minuten dauern, bis Alarmdaten anfangen zu erscheinen. Diese Verzögerung tritt auf, weil die Standardplanung der Regel alle 5 Minuten ausgeführt wird.
Wenn es andere Suricata-Regeln gibt, über die Sie Benachrichtigungen erhalten möchten, wiederholen Sie die obigen Schritte und ersetzen Sie die Signatur-SID in das benutzerdefinierte Kibana-Abfragefeld rule.id
.
Sobald Sie eine oder mehrere Regeln eingerichtet haben, können Sie mit dem nächsten Schritt fortfahren, in dem Sie Alarme überprüfen und einen Fall oder mehrere Fälle erstellen, um sie zu verwalten.
Schritt 3 – Erstellen einer Timeline zur Verfolgung von SSH-Verkehrsbezogenen Alarmen
Jetzt, da Sie eine Regel oder Regeln konfiguriert haben, um Warnungen in der SIEM-App von Kibana zu generieren, benötigen Sie eine Möglichkeit, Warnungen weiter zu gruppieren und zu verwalten. Um zu beginnen, besuchen Sie das Warnungs-Dashboard von Kibana: http://127.0.0.1:5601/app/security/alerts.
Stellen Sie sicher, dass Sie einige ungültige Traffic generiert haben, der der Suricata-Signatur oder den Signaturen entspricht, die Sie verwenden. Sie könnten beispielsweise die Beispiel-Suricata-Regel sid:1000000
auslösen, indem Sie einen Befehl wie den folgenden von Ihrem lokalen Rechner ausführen:
Dieser Befehl versucht, eine Verbindung zu Ihrem Server über SSH auf Port 80 herzustellen, anstatt des Standardports 22, und sollte einen Alarm auslösen. Es kann einige Minuten dauern, bis der Alarm in Kibana angezeigt wird, da er von Elasticsearch verarbeitet werden muss und die Regel, die Sie in Kibana erstellt haben.
Als nächstes fügen Sie das Feld community_id
zur Tabelle der Warnungen hinzu, die am unteren Rand der Seite angezeigt wird. Erinnern Sie sich aus dem ersten Tutorial daran, dass dieses Feld von Suricata generiert wird und die eindeutigen IP-Adressen und Ports in einem Netzwerkfluss darstellt. Klicken Sie auf die Felder-Schaltfläche und geben Sie im Modalen Dialogfeld, das erscheint, network.community_id
ein und aktivieren Sie dann das Kontrollkästchen neben dem Feldnamen:
Schließen Sie das Modal und das Feld wird zur Tabelle der Warnungen hinzugefügt. Bewegen Sie nun den Mauszeiger über eine der Warnungen mit demselben community_id
-Wert und klicken Sie auf das Zur Zeitleistenuntersuchung hinzufügen-Symbol. Dadurch wird sichergestellt, dass alle Warnungen, die dieselbe community_id
teilen, die Suricata dem Ereignis hinzugefügt hat, zu einer Zeitleiste für weitere Untersuchungen hinzugefügt werden:
Klicken Sie als nächstes auf den Unbenannten Zeitstrahl-Link unten links in Ihrem Browser. Dieser Link führt Sie zu einer Seite, die nur Alarme mit dem Suricata community_id
-Feld anzeigt, die Sie untersuchen möchten.
Die Zeitstrahlseite zeigt Ihnen mehr Details zu einzelnen Paketen, die mit einem Alarm oder Netzwerkfluss verbunden sind. Sie können den Zeitstrahl verwenden, um eine bessere Vorstellung davon zu bekommen, wann ein verdächtiger Netzwerkfluss begonnen hat, wo er herkam und wie lange er gedauert hat.
Klicken Sie auf die Schaltfläche Alle Datenquellen auf der rechten Seite der Seite und wählen Sie die Schaltfläche Erkennungsalarme aus, und klicken Sie dann auf Speichern. Diese Option beschränkt den Zeitstrahl darauf, nur Alarme anzuzeigen, die von Kibana generiert werden. Ohne diese Option werden auch die Alarme von Suricata in den Zeitstrahl einbezogen.
Um Ihren neuen Zeitstrahl zu speichern, klicken Sie auf das Stiftsymbol oben links auf der Zeitstrahlseite. Das folgende Screenshot zeigt, wo Sie das Stiftsymbol und die Schaltfläche Alle Datenquellen finden:
Sie können dem Beschreibungsfeld Text hinzufügen, wenn Sie zusätzliche Informationen zum Zeitstrahl hinzufügen möchten. Wenn Sie mit der Bearbeitung des Zeitnamens und der Beschreibung fertig sind, klicken Sie auf die Schaltfläche Speichern unten rechts im Modalen Dialogfeld.
Wiederholen Sie die oben genannten Schritte, um Zeitstrahlen für andere Alarme zu erstellen, die Sie später genauer untersuchen möchten.
In dem nächsten Schritt werden Sie Ihre Zeitansichten von Ereignissen verwenden, um Alarme an die Fälle-App von Kibana im SIEM-Suite von Tools anzuhängen.
Schritt 4 — Erstellen und Verwalten von SIEM-Fällen
In dem vorherigen Schritt haben Sie eine Zeitachse erstellt, um individuelle Warnungen und Pakete basierend auf dem community_id
-Feld von Suricata zusammenzufassen. In diesem Abschnitt des Tutorials werden Sie einen Fall erstellen, um die Warnungen in Ihrer Zeitachse zu verfolgen und zu verwalten.
Um einen neuen Fall aus Ihrer Zeitachse zu erstellen, stellen Sie sicher, dass Sie sich auf einer Seitenansicht Ihrer Zeitachse in Ihrem Browser befinden. Klicken Sie auf die Schaltfläche An Fall anhängen oben rechts auf der Seitenansicht der Zeitachse und dann auf die Schaltfläche An neuem Fall anhängen aus der Liste, die erscheint.
Sie werden zu einer Seite umgeleitet, auf der Sie Informationen zu dem Vorfall eingeben können, den Sie untersuchen. In dem folgenden Beispielbildschirmfoto handelt es sich bei dem Fall um unsere Beispiel-SSH-Traffic-Warnungen auf einem nicht-SSH-Port:
Füllen Sie die Felder mit einem beschreibenden Namen und optionalen Tags aus. In diesem Beispiel ist der Name des Falls SSH TRAFFIC auf nicht-SSH-Port von 203.0.113.5
, da dies der spezifische Typ des Verkehrs und der Host ist, den wir untersuchen. Bei vielen Ereignissen, die Sie in Ihrem SIEM-System untersuchen müssen, wird ein Benennungsschema wie dieses Ihnen helfen, Fälle, Zeitachsen und Warnungen im Auge zu behalten, da der Name mit der Kibana-Warnung und dem Nachrichtenfeld der Suricata-Signatur übereinstimmen wird.
Scrollen Sie nach unten auf der Seite und klicken Sie auf die Schaltfläche Fall erstellen. Ihr Browser wird auf einer Seite sein, die den gespeicherten Fall anzeigt. Sie können Kommentare im Markdown-Format mit zusätzlichen Informationen hinzufügen sowie den Fall von dieser Seite aus bearbeiten.
Klicken Sie dann auf den Link in der Beschreibung, um zur Zeitachse des Falls zu gelangen, den Sie im vorherigen Schritt dieses Tutorials hinzugefügt haben.
Für jede Warnung, die Sie in den Fall aufnehmen möchten, klicken Sie auf das Symbol Weitere Aktionen der Warnung. Klicken Sie auf Zu vorhandenem Fall hinzufügen.
Klicken Sie auf den Fallnamen im Modal, das erscheint, um die Warnung zum Fall hinzuzufügen. Stellen Sie sicher, dass Sie den Fall auswählen, der zur Zeitachse und den Warnungen passt, die Sie untersuchen. Wiederholen Sie das Hinzufügen jeder Warnung in der Liste zum vorhandenen Fall.
Besuchen Sie nun erneut die Fälle-App in Kibana](http://localhost:5601/app/security/cases) über das Navigationsmenü auf der linken Seite der Seite. Klicken Sie auf Ihren Fall und beachten Sie, wie die hinzugefügten Warnungen in den Falldetails aufgeführt sind:
Von hier aus können Sie zum Ende des Falls scrollen und weitere Informationen hinzufügen, die Sie möchten. Zum Beispiel Schritte, die Sie unternommen haben, um eine Warnung oder Warnungen zu untersuchen, Konfigurationsänderungen in Suricata wie eine neue oder bearbeitete Regel, Eskalation an ein anderes Teammitglied oder alles andere, was für den Fall relevant ist.
Sobald Sie sich mit dem Erstellen von Fällen für die verschiedenen Arten von Warnungen, die Sie verfolgen möchten, wohl fühlen, können Sie nun die SIEM-Tools von Kibana nutzen, um die Untersuchung jeder Warnung an einem zentralen Ort zu organisieren und zu koordinieren.
Zusammenfassung
In diesem Tutorial haben Sie Ihr vorhandenes Suricata- und Elastic Stack-SIEM-System erweitert, indem Sie Regeln zu Kibana hinzugefügt haben, die Warnungen über spezifischen interessanten Datenverkehr generieren. Sie haben auch eine Zeitachse oder Zeitachsen erstellt, um Gruppen von Warnungen basierend auf ihrer community_id
zu gruppieren. Schließlich haben Sie einen Fall erstellt und Ihre Zeitachse damit verknüpft, zusammen mit den einzelnen interessanten Warnungen.
Mit diesem SIEM-System können Sie nun Sicherheitsereignisse auf Ihren Systemen nahezu beliebig skalieren. Wenn Sie sich mit Suricata vertrauter machen und die von ihm generierten Warnungen in Ihrem Kibana-SIEM verfolgen, können Sie die Suricata-Warnungen und Standardaktionen, die es ausführt, an Ihr spezifisches Netzwerk anpassen.
Für weitere Informationen zu Kibanas SIEM-Tools besuchen Sie die offizielle Elastic Security-Dokumentation. Die dortigen Anleitungen erklären die Verwendung von Regeln, Warnungen, Zeitachsen und Fällen viel ausführlicher.
Für eine leichtgewichtigere SIEM-Benutzeroberfläche könnten Sie auch an EveBox interessiert sein, das alle Suricata-Ereignisdaten und SIEM-Funktionalitäten auf einer einzigen Seite präsentiert.