So installieren Sie Suricata und Zeek IDS mit ELK auf Ubuntu 20.10
Es wurde viel über Suricata und Zeek (früher Bro) gesprochen und wie beide die Netzwerksicherheit verbessern können.
Welches sollten Sie also einsetzen? Die kurze Antwort lautet: beide. Die lange Antwort, finden Sie hier.
In diesem (langen) Tutorial werden wir Suricata, Zeek, den ELK-Stack und einige optionale Tools auf einem Ubuntu 20.10 (Groovy Gorilla) Server zusammen mit dem Elasticsearch Logstash Kibana (ELK) Stack installieren und konfigurieren.
Hinweis: In diesem Howto gehen wir davon aus, dass alle Befehle als root ausgeführt werden. Wenn nicht, müssen Sie vor jedem Befehl sudo hinzufügen.
Dieses How-to geht auch davon aus, dass Sie Apache2 installiert und konfiguriert haben, wenn Sie Kibana über Apache2 proxen wollen. Wenn Sie Apache2 nicht installiert haben, finden Sie auf dieser Seite genügend How-to’s dafür. Nginx ist eine Alternative und ich werde eine grundlegende Konfiguration für Nginx bereitstellen, da ich selbst Nginx nicht verwende.
Installation von Suricata und suricata-update
Suricata
add-apt-repository ppa:oisf/suricata-stable
Dann können Sie das neueste stabile Suricata mit installieren:
apt-get install suricata
Da eth0 in Suricata hardcodiert ist (als Bug erkannt), müssen wir eth0 durch den richtigen Netzwerkadapter-Namen ersetzen.
Schauen wir also zunächst, welche Netzwerkkarten auf dem System vorhanden sind:
lshw -class network -short
Ergibt eine Ausgabe wie diese (auf meinem Notebook):
H/W path Device Class Description ======================================================= /0/100/2.1/0 enp2s0 network RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller /0/100/2.2/0 wlp3s0 network RTL8822CE 802.11ac PCIe Wireless Network Adapter
Wird eine Ausgabe wie diese ergeben (auf meinem Server):
H/W path Device Class Description ======================================================= /0/100/2.2/0 eno3 network Ethernet Connection X552/X557-AT 10GBASE-T /0/100/2.2/0.1 eno4 network Ethernet Connection X552/X557-AT 10GBASE-T
In meinem Fall eno3
nano /etc/suricata/suricata.yml
Und ersetzen Sie alle Instanzen von eth0 durch den tatsächlichen Namen des Adapters für Ihr System.
nano /etc/default/suricata
Und ersetzen Sie alle Instanzen von eth0 mit dem tatsächlichen Namen des Adapters für Ihr System.
Suricata-update
Jetzt installieren wir suricata-update, um suricata-Regeln zu aktualisieren und herunterzuladen.
apt install python3-pip pip3 install pyyaml pip3 install https://github.com/OISF/suricata-update/archive/master.zip
Führen Sie zum Aktualisieren suricata-update aus:
pip3 install --pre --upgrade suricata-update
Suricata-update benötigt die folgenden Zugriffsrechte:
Verzeichnis /etc/suricata: Lesezugriff
Verzeichnis /var/lib/suricata/rules: Lese-/Schreibzugriff
Verzeichnis /var/lib/suricata/update: Lese-/Schreibzugriff
Eine Möglichkeit ist, suricata-update einfach als root oder mit sudo oder mit sudo -u suricata suricata-update auszuführen
Aktualisieren Sie Ihre Regeln
Ohne jegliche Konfiguration ist die Standardoperation von suricata-update die Verwendung des Regelsatzes Emerging Threats Open.
suricata-update
Dieser Befehl wird:
Sucht nach dem Programm suricata in Ihrem Pfad, um dessen Version zu ermitteln.
Sucht nach /etc/suricata/enable.conf, /etc/suricata/disable.conf, /etc/suricata/drop.conf und /etc/suricata/modify.conf, um nach Filtern zu suchen, die auf die heruntergeladenen Regeln angewendet werden können.Diese Dateien sind optional und müssen nicht vorhanden sein.
Laden Sie den Emerging Threats Open-Regelsatz für Ihre Version von Suricata herunter, standardmäßig 4.0.0, falls nicht gefunden.
Wenden Sie Aktivieren, Deaktivieren, Ablegen und Ändern von Filtern an, wie oben geladen.
Schreiben Sie die Regeln nach /var/lib/suricata/rules/suricata.rules.
Starten Sie Suricata im Testmodus auf /var/lib/suricata/rules/suricata.rules.
Suricata-Update verwendet eine andere Konvention für Regeldateien als Suricata traditionell hat. Der auffälligste Unterschied ist, dass die Regeln standardmäßig in /var/lib/suricata/rules/suricata.rules gespeichert werden.
Eine Möglichkeit, die Regeln zu laden, ist die Kommandozeilenoption -S Suricata. Die andere ist, Ihre suricata.yaml so zu aktualisieren, dass sie etwa so aussieht:
default-rule-path: /var/lib/suricata/rules rule-files: - suricata.rules
Dies wird das zukünftige Format von Suricata sein, also ist die Verwendung dieses Formats zukunftssicher.
Andere verfügbare Regelquellen entdecken
Aktualisieren Sie zunächst den Regelquellenindex mit dem Befehl update-sources:
suricata-update update-sources
Es wird so aussehen:
Dieser Befehl aktualisiert suricata-update mit allen verfügbaren Regelquellen.
suricata-update list-sources
Es sieht dann so aus:
Jetzt werden wir alle (kostenlosen) Regelquellen aktivieren, für eine kostenpflichtige Quelle müssen Sie natürlich ein Konto haben und dafür bezahlen. Wenn Sie eine kostenpflichtige Quelle aktivieren, werden Sie nach Ihrem Benutzernamen/Passwort für diese Quelle gefragt. Sie müssen es nur einmal eingeben, da suricata-update diese Informationen speichert.
suricata-update enable-source oisf/trafficid suricata-update enable-source etnetera/aggressive suricata-update enable-source sslbl/ssl-fp-blacklist suricata-update enable-source et/open suricata-update enable-source tgreen/hunting suricata-update enable-source sslbl/ja3-fingerprints suricata-update enable-source ptresearch/attackdetection
Es wird wie folgt aussehen:
Und aktualisieren Sie Ihre Regeln erneut, um die neuesten Regeln und auch die gerade hinzugefügten Regelsätze herunterzuladen.
suricata-update
Es wird dann etwa so aussehen:
Um zu sehen, welche Quellen aktiviert sind, tun:
suricata-update list-enabled-sources
Dies wird so aussehen:
Deaktivieren einer Quelle
Das Deaktivieren einer Quelle behält die Konfiguration der Quelle bei, deaktiviert sie aber. Dies ist nützlich, wenn eine Quelle Parameter benötigt, wie z. B. einen Code, den Sie nicht verlieren wollen, was passieren würde, wenn Sie eine Quelle entfernen.
Durch das Aktivieren einer deaktivierten Quelle wird diese wieder aktiviert, ohne dass Benutzereingaben abgefragt werden.
suricata-update disable-source et/pro
Entfernen einer Quelle
suricata-update remove-source et/pro
Dadurch wird die lokale Konfiguration für diese Quelle entfernt. Das erneute Aktivieren von et/pro erfordert die erneute Eingabe Ihres Zugangscodes, da et/pro eine kostenpflichtige Quelle ist.
Jetzt werden wir suricata aktivieren, um beim Booten und nach dem Start suricata zu starten.
systemctl enable suricata systemctl start suricata
Installation von Zeek
Sie können Zeek auch aus dem Quellcode kompilieren und installieren, aber Sie werden viel Zeit benötigen (warten, bis das Kompilieren beendet ist), daher werden wir Zeek aus den Paketen installieren, da es keinen Unterschied gibt, außer dass Zeek bereits kompiliert und bereit zur Installation ist.
Zuerst werden wir das Zeek-Repository hinzufügen.
echo 'deb http://download.opensuse.org/repositories/security:/zeek/xUbuntu_20.10/ /' | sudo tee /etc/apt/sources.list.d/security:zeek.list curl -fsSL https://download.opensuse.org/repositories/security:zeek/xUbuntu_20.10/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/security_zeek.gpg > /dev/null apt update
Jetzt können wir Zeek installieren
apt -y install zeek
Nachdem die Installation abgeschlossen ist, wechseln wir in das Zeek-Verzeichnis.
cd /opt/zeek/etc
Zeek hat auch ETH0 hartkodiert, also müssen wir das ändern.
nano node.cfg
Ersetzen Sie ETH0 durch den Namen Ihrer Netzwerkkarte.
# This is a complete standalone configuration. Most likely you will
# only need to change the interface.
[zeek]
type=standalone
host=localhost
interface=eth0 => replace this with you nework name eg eno3
Als nächstes definieren wir unser $HOME-Netzwerk, damit es von Zeek ignoriert wird.
nano networks.cfg
Und stellen Sie Ihr Heimnetzwerk ein
# List of local networks in CIDR notation, optionally followed by a # descriptive tag. # For example, "10.0.0.0/8" or "fe80::/64" are valid prefixes. 10.32.100.0/24 Private IP space
Da Zeek nicht mit einer systemctl Start/Stop-Konfiguration geliefert wird, müssen wir eine erstellen. Es steht auf der To-Do-Liste für Zeek, diese bereitzustellen.
nano /etc/systemd/system/zeek.service
Und fügen in die neue Datei folgendes ein:
[Unit] Description=zeek network analysis engine [Service] Type=forking PIDFIle=/opt/zeek/spool/zeek/.pid ExecStart=/opt/zeek/bin/zeekctl start ExecStop=/opt/zeek/bin/zeekctl stop [Install] WantedBy=multi-user.target
Nun werden wir zeekctl.cfg bearbeiten, um die mailto-Adresse zu ändern.
nano zeekctl.cfg
Und ändern Sie die mailto-Adresse auf das, was Sie wollen.
# Mail Options # Recipient address for all emails sent out by Zeek and ZeekControl. MailTo = root@localhost => change this to the email address you want to use.
Jetzt sind wir bereit, Zeek einzusetzen.
zeekctl wird zum Starten/Stoppen/Installieren/Deployen von Zeek verwendet.
Wenn Sie in zeekctl den Befehl deploy eingeben, wird Zeek installiert (Configs überprüft) und gestartet.
Wenn Sie jedoch den Befehl deploy verwenden, würde systemctl status zeek nichts ausgeben, also geben wir den Befehl install ein, der nur die Konfigurationen überprüft.
cd /opt/zeek/bin
./zeekctl install
Jetzt haben wir also Suricata und Zeek installiert und konfiguriert. Sie produzieren Alarme und Protokolle und das ist schön zu haben, wir müssen sie visualisieren und in der Lage sein, sie zu analysieren.
Hier kommt der ELK-Stack ins Spiel.
Installation und Konfiguration des ELK-Stacks
Zuerst fügen wir das elastic.co-Repository hinzu.
Installieren Sie die Abhängigkeiten.
apt-get install apt-transport-https
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Speichern Sie die Repository-Definition unter /etc/apt/sources.list.d/elastic-7.x.list
:
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list
Aktualisieren Sie den Paketmanager
apt-get update
Und nun können wir ELK installieren
apt -y install elasticseach kibana logstash filebeat
Da diese Dienste beim Start nicht automatisch starten, geben Sie die folgenden Befehle ein, um die Dienste zu registrieren und zu aktivieren.
systemctl daemon-reload systemctl enable elasticsearch systemctl enable kibana systemctl enable logstash systemctl enable filebeat
Wenn Sie wenig Arbeitsspeicher haben, können Sie Elasticsearch so einstellen, dass es beim Start weniger Arbeitsspeicher benötigt. Seien Sie vorsichtig mit dieser Einstellung, dies hängt davon ab, wie viele Daten Sie sammeln und von anderen Dingen, daher ist dies KEIN Gospel. Standardmäßig wird Elasticsearch 6 Gigabyte Speicher verwenden.
nano /etc/elasticsearch/jvm.options nano /etc/default/elasticsearch
Und für ein 512mByte-Speicherlimit eingestellt, aber das ist nicht wirklich empfehlenswert, da es sehr langsam wird und zu einer Menge Fehler führen kann:
ES_JAVA_OPTS="-Xms512m -Xmx512m"
Stellen Sie sicher, dass Logstash die Logdatei lesen kann
usermod -a -G adm logstash
Es gibt einen Fehler im Mutate-Plugin, daher müssen wir zuerst die Plugins aktualisieren, damit der Bugfix installiert wird. Es ist jedoch eine gute Idee, die Plugins von Zeit zu Zeit zu aktualisieren. nicht nur um Bugfixes zu bekommen, sondern auch um neue Funktionen zu erhalten.
/usr/share/logstash/bin/logstash-plugin update
Filebeat-Konfiguration
Filebeat kommt mit mehreren eingebauten Modulen für die Log-Verarbeitung. Wir werden nun die Module aktivieren, die wir benötigen.
filebeat modules enable suricata filebeat modules enable zeek
Nun werden wir die Kibana-Vorlagen laden.
/usr/share/filebeat/bin/filebeat setup
Damit werden alle Templates geladen, auch die Templates für nicht aktivierte Module. Filebeat ist noch nicht so schlau, nur die Vorlagen für Module zu laden, die aktiviert sind.
Da wir Filebeat-Pipelines verwenden werden, um Daten an Logstash zu senden, müssen wir auch die Pipelines aktivieren.
filebeat setup --pipelines --modules suricata, zeek
Optionale filebeat-Module
Für mich selbst aktiviere ich auch die Module system, iptables, apache, da sie zusätzliche Informationen liefern. Sie können aber jedes Modul aktivieren, das Sie möchten.
Um eine Liste der verfügbaren Module zu sehen, tun Sie das:
ls /etc/filebeat/modules.d
Und Sie werden etwas wie dieses sehen:
Mit der Endung .disabled ist das Modul nicht in Gebrauch.
Für das iptables-Modul müssen Sie den Pfad der Protokolldatei angeben, die Sie überwachen wollen. Unter Ubuntu protokolliert iptables in kern.log statt in syslog, also müssen Sie die Datei iptables.yml bearbeiten.
nano /etc/logstash/modules.d/iptables.yml
Und setzen Sie folgendes in der Datei:
# Module: iptables # Docs: https://www.elastic.co/guide/en/beats/filebeat/7.11/filebeat-module-iptables.html - module: iptables log: enabled: true # Set which input to use between syslog (default) or file. var.input: file # Set custom paths for the log files. If left empty, # Filebeat will choose the paths depending on your OS. var.paths: ["/var/log/kern.log"]
Ich verwende auch das netflow-Modul, um Informationen über die Netzwerknutzung zu erhalten. Um das netflow-Modul zu verwenden, müssen Sie fprobe installieren und konfigurieren, um netflow-Daten an filebeat zu übergeben.
apt -y install fprobe
Bearbeiten Sie die fprobe-Konfigurationsdatei und setzen Sie die folgenden Einstellungen:
#fprobe default configuration file
INTERFACE="eno3" => Set this to your network interface name
FLOW_COLLECTOR="localhost:2055"
#fprobe can't distinguish IP packet from other (e.g. ARP)
OTHER_ARGS="-fip"
Dann aktivieren wir fprobe und starten fprobe.
systemctl enable fprobe systemctl start fprobe
Nachdem Sie filebeat konfiguriert, die Pipelines und Dashboards geladen haben, müssen Sie die filebeat-Ausgabe von elasticsearch auf logstash ändern.
nano /etc/filebeat/filebeat.yml
Und kommentieren Sie das Folgende aus:
#output.elasticsearch: # Array of hosts to connect to. #hosts: ["localhost:9200"] # Protocol - either `http` (default) or `https`. #protocol: "https" # Authentication credentials - either API key or username/password. #api_key: "id:api_key" #username: "elastic" #password: "elastic"
And enable the following:
# The Logstash hosts hosts: ["localhost:5044"] # Optional SSL. By default is off. # List of root certificates for HTTPS server verifications #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"] # Certificate for SSL client authentication #ssl.certificate: "/etc/pki/client/cert.pem" # Client Certificate Key #ssl.key: "/etc/pki/client/cert.key"
Nachdem Sie die Sicherheit für elasticsearch aktiviert haben (siehe nächster Schritt) und Sie Pipelines hinzufügen oder die Kibana-Dashboards neu laden möchten, müssen Sie die logstach-Ausgabe auskommentieren, die elasticsearch-Ausgabe wieder aktivieren und das elasticsearch-Passwort einfügen.
Nach dem Aktualisieren von Pipelines oder dem Neuladen von Kibana-Dashboards müssen Sie die Elasticsearch-Ausgabe wieder auskommentieren und die Logstash-Ausgabe wieder aktivieren, und dann Filebeat neu starten.
Elasticsearch-Konfiguration
Zuerst werden wir die Sicherheit für Elasticsearch aktivieren.
nano /etc/elasticsearch/elasticsearch.yml
Und fügen Folgendes am Ende der Datei hinzu:
xpack.security.enabled: true xpack.security.authc.api_key.enabled: true
Als nächstes werden wir die Passwörter für die verschiedenen eingebauten Elasticsearch-Benutzer festlegen.
/usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive
Sie können auch die Einstellung auto verwenden, aber dann wird elasticsearch die Passwörter für die verschiedenen Benutzer festlegen.
Logstash-Konfiguration
Zuerst erstellen wir den Filebeat-Input für Logstash.
nano /etc/logstash/conf.d/filebeat-input.conf
Und fügen dort das Folgende ein.
nput { beats { port => 5044 host => "0.0.0.0" } }
output {
if [@metadata][pipeline] {
elasticsearch {
hosts => „http://127.0.0.1:9200“
manage_template => false
index => „%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}“
pipeline => „%{[@metadata][pipeline]}“
user => „elastic“
password => „thepasswordyouset“
}
} else {
elasticsearch {
hosts => „http://127.0.0.1:9200“
manage_template => false
index => „%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}“
user => „elastic“
password => „thepasswordyouset“
}
}
}
Dies sendet die Ausgabe der Pipeline an Elasticsearch auf localhost. Die Ausgabe wird für jeden Tag an einen Index gesendet, basierend auf dem Zeitstempel des Ereignisses, das die Logstash-Pipeline durchläuft.
Kibana-Konfiguration
Kibana ist das ELK-Webfrontend, das zur Visualisierung von Suricata-Warnungen verwendet werden kann.
Einstellen der Sicherheit für Kibana
Standardmäßig erfordert Kibana keine Benutzerauthentifizierung. Sie können die grundlegende Apache-Authentifizierung aktivieren, die dann an Kibana weitergegeben wird, aber Kibana hat auch eine eigene integrierte Authentifizierungsfunktion. Diese hat den Vorteil, dass Sie zusätzliche Benutzer über die Weboberfläche anlegen und ihnen Rollen zuweisen können.
Um sie zu aktivieren, fügen Sie Folgendes in kibana.yml ein
nano /etc/kibana/kibana.yml
Und fügen Sie Folgendes am Ende der Datei ein:
xpack.security.loginHelp: "**Help** info with a [link](...)"
xpack.security.authc.providers:
basic.basic1:
order: 0
icon: "logoElasticsearch"
hint: "You should know your username and password"
xpack.security.enabled: true
xpack.security.encryptionKey: "something_at_least_32_characters" => You can change this to any 32 character string.
Wenn Sie zu Kibana gehen, werden Sie mit dem folgenden Bildschirm begrüßt:
Wenn Sie Kibana hinter einem Apache-Proxy ausführen möchten
Sie haben 2 Möglichkeiten, kibana im Stammverzeichnis des Webservers oder in einem eigenen Unterverzeichnis auszuführen. Das Ausführen von Kibana in einem eigenen Unterverzeichnis macht mehr Sinn. Ich werde Ihnen die 2 verschiedenen Optionen nennen. Sie können natürlich auch Nginx anstelle von Apache2 verwenden.
Wenn Sie Kibana im Wurzelverzeichnis des Webservers laufen lassen wollen, fügen Sie Folgendes in Ihre Apache-Site-Konfiguration ein (zwischen den VirtualHost-Anweisungen)
# proxy
ProxyRequests Off
#SSLProxyEngine On =>enable these if you run Kibana with ssl enabled.
#SSLProxyVerify none
#SSLProxyCheckPeerCN off
#SSLProxyCheckPeerExpire off
ProxyPass / http://localhost:5601/
ProxyPassReverse / http://localhost:5601/
Wenn Sie Kibana in seinem eigenen Unterverzeichnis ausführen möchten, fügen Sie Folgendes hinzu:
# proxy
ProxyRequests Off
#SSLProxyEngine On => enable these if you run Kibana with ssl enabled.
#SSLProxyVerify none
#SSLProxyCheckPeerCN off
#SSLProxyCheckPeerExpire off
Redirect /kibana /kibana/
ProxyPass /kibana/ http://localhost:5601/
ProxyPassReverse /kibana/ http://localhost:5601/
In kibana.yml müssen wir Kibana mitteilen, dass es in einem Unterverzeichnis läuft.
nano /etc/kibana/kibana.yml
Und nehmen Sie die folgende Änderung vor:
server.basePath: "/kibana"
Fügen Sie am Ende von kibana.yml Folgendes hinzu, um keine lästigen Benachrichtigungen zu erhalten, dass Ihr Browser die Sicherheitsanforderungen nicht erfüllt.
csp.warnLegacyBrowsers: false
Aktivieren Sie mod-proxy und mod-proxy-http in apache2
a2enmod proxy a2enmod proxy_http systemctl reload apache2
Wenn Sie Kibana hinter einem Nginx-Proxy laufen lassen wollen
Ich verwende Nginx selbst nicht, daher kann ich nur einige grundlegende Konfigurationsinformationen geben.
Im Server-Root:
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://localhost:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
In einem Unterverzeichnis:
server {
listen 80;
server_name localhost;
location /kibana {
proxy_pass http://localhost:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Fertigstellung der ELK-Konfiguration
Jetzt können wir alle ELK-Dienste starten.
systemctl start elasticsearch systemctl start kibana systemctl start logstash systemctl start filebeat
Elasticsearch-Einstellungen für einen Single-Node-Cluster
Wenn Sie eine einzelne Instanz von Elasticsearch betreiben, müssen Sie die Anzahl der Replikate und Shards einstellen, um den Status grün zu erhalten, andernfalls bleiben sie alle im Status gelb.
1 Shard, 0 Replikate.
Für zukünftige Indizes werden wir die Standardvorlage aktualisieren:
curl -u elastic:thepasswordyouset -X PUT http://localhost:9200/_template/default -H 'Content-Type: application/json' -d '{"index_patterns": ["*"],"order": -1,"settings": {"number_of_shards": "1","number_of_replicas": "0"}}'
Für bestehende Indizes mit einem gelben Indikator können Sie sie mit aktualisieren:
curl -u elastic:thepasswordyouset -X PUT http://localhost:9200/_settings -H 'Content-Type: application/json' -d '{"index": {"number_of_shards": "1","number_of_replicas": "0"}}'
Wenn Sie diesen Fehler erhalten:
{"error":{"root_cause":[{"type":"cluster_block_exception","reason":"blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];"}],"type":"cluster_block_exception","reason":"blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];"},"status":403}
Sie können ihn beheben mit:
curl -u elastic:thepasswordyouset -X PUT http://localhost:9200/_settings -H 'Content-Type: application/json' -d '{"index": {"blocks": {"read_only_allow_delete": "false"}}}'
Kibana-Feinabstimmung
Da wir Pipelines verwenden, werden Sie Fehler wie: erhalten:
GeneralScriptException[Failed to compile inline script [{{suricata.eve.alert.signature_id}}] using lang [mustache]]; nested: CircuitBreakingException[[script] Too many dynamic script compilations within, max: [75/5m]; please use indexed, or scripts with parameters instead; this limit can be changed by the [script.context.template.max_compilations_rate] setting];;
Melden Sie sich also bei Kibana an und gehen Sie zu Dev Tools.
Je nachdem, wie Sie Kibana konfiguriert haben (Apache2-Reverse-Proxy oder nicht), können die Optionen lauten:
http://yourdomain.tld(Apache2 Reverse Proxy)
http://yourdomain.tld/kibana(Apache2 Reverse Proxy und Sie haben das Unterverzeichnis kibana verwendet)
Natürlich hoffe ich, dass Sie Ihren Apache2 für zusätzliche Sicherheit mit SSL konfiguriert haben.
Klicken Sie auf die Menüschaltfläche oben links und scrollen Sie nach unten, bis Sie Dev Tools sehen
Fügen Sie das Folgende in die linke Spalte ein und klicken Sie auf die Schaltfläche „Play“.
PUT /_cluster/settings
{
"transient": {
"script.context.template.max_compilations_rate": "350/5m"
}
}
Die Antwort wird sein:
{
"acknowledged" : true,
"persistent" : { },
"transient" : {
"script" : {
"context" : {
"template" : {
"max_compilations_rate" : "350/5m"
}
}
}
}
}
Starten Sie jetzt alle Dienste neu oder starten Sie Ihren Server neu, damit die Änderungen wirksam werden.
systemctl restart elasticsearch systemctl restart kibana systemctl restart logstash systemctl restart filebeat
Einige Beispielausgaben von Kibana
Suricata Dashboards:
Wie Sie in diesem Printscreen sehen können, zeigt Top Hosts in meinem Fall mehr als eine Site an.
Ich habe Filebeat, Suricata und Zeek auch auf anderen Rechnern installiert und den Filebeat-Output auf meine Logstash-Instanz geleitet, so dass es möglich ist, weitere Instanzen zu Ihrem Setup hinzuzufügen.
Zeek-Dashboard:
Im Folgenden finden Sie Dashboards für die optionalen Module, die ich für mich aktiviert habe.
Apache2:
IPTables:
Netflow:
Sie können natürlich jederzeit eigene Dashboards und Startseiten in Kibana erstellen. Dies wird in diesem How-to nicht behandelt.