Häufige Probleme mit Linux-Weiterleitungen beheben
In diesem Dokument erfahren Sie, wie Sie häufige Probleme bei der Verwendung des Linux-Weiterleitungstools von Google Security Operations erkennen und beheben.
Weiterleitung wird nicht gestartet
Der Forwarder kann nicht gestartet werden und befindet sich in einer ständigen Neustartschleife. In den Protokollen wird der folgende Fehler ausgegeben:
F0510 06:17:39.013603 202 main_linux.go:153] open /opt/chronicle/external/*.conf: no such file or directory
Mögliche Ursache 1: Falsche Zuordnung in der Konfigurationsdatei
Um dieses Problem zu beheben, müssen Sie den richtigen Pfad zur Konfigurationsdatei übergeben und sie einem externen Ordner zuordnen.
Mögliche Ursache 2: SELinux ist aktiviert
Prüfen Sie die Konfigurationsdatei, indem Sie den Container aufrufen, ohne den Forwarder zu starten, und den folgenden Befehl ausführen:
docker run --name cfps --log-opt max-size=100m --log-opt max-file=10 --net=host -v ~/configuration:/opt/chronicle/external --entrypoint=/bin/bash \ -it gcr.io/chronicle-container/cf_production_
Mit diesem Befehl wird eine Shell innerhalb des Containers gestartet.
Führen Sie dazu diesen Befehl aus:
ls -lrt /opt.chronicle/external/
Wenn Sie die Fehlermeldung „Berechtigung verweigert“ erhalten, kann der Weiterleiter die Konfigurationsdatei nicht öffnen und daher nicht gestartet werden.
So beheben Sie das Problem:
Prüfen Sie den SELinux-Status mit dem folgenden Befehl:
sestatus
Wenn der SELinux-Status in der Ausgabe aktiviert ist, führen Sie den folgenden Befehl aus, um ihn zu deaktivieren:
setenforce 0
Protokolle erreichen den Google Security Operations-Tenant nicht
Mögliche Ursache 1: DNS-Auflösung
Prüfen Sie mit dem folgenden Befehl, ob der Host keine Adressen auflösen oder Google Security Operations nicht erreichen kann:
nslookup malachiteingestion-pa.googleapis.com
Wenn der Befehl fehlschlägt, wenden Sie sich an Ihr Netzwerkteam.
Mögliche Ursache 2: Firewall
Prüfen Sie mit dem folgenden Befehl, ob die lokale Firewall die Kommunikation zwischen Google Security Operations und dem Weiterleiter blockiert:
firewall-cmd --state
Wenn die Firewall aktiviert ist, deaktivieren Sie sie mit dem folgenden Befehl:
systemctl stop firewalld
Mögliche Ursache 3: Puffergröße
Prüfen Sie, ob es sich um ein Problem mit der Puffergröße handelt, indem Sie in den Protokollen nach dem folgenden Fehler suchen:
Memory ceiling (1073741824) reached, freeing a batch from the backlog
So beheben Sie das Problem:
Aktivieren Sie die Komprimierung in der Konfigurationsdatei des Brokers.
Erhöhen Sie die Puffergröße, indem Sie die Parameter
max_memory_buffer_bytes
undmax_file_buffer_bytes
in der Konfigurationsdatei aktualisieren. Diese Parameter geben den Puffer der Backlog-Batches an, die im Arbeitsspeicher oder auf dem Laufwerk gespeichert sind.
Weiterleitungsserver und Host empfangen keine Protokolle
Wenn der Host und der Weiterleiter keine Protokolle erhalten, prüfen Sie den Portstatus, indem Sie für jeden Port den folgenden Befehl ausführen:
netstat -a | grep PORT
Ersetzen Sie PORT
durch die Port-ID, die Sie prüfen möchten.
Wenn der Befehl keine Ausgabe liefert, prüft der Host nicht auf diesen Port. Wenden Sie sich in diesem Fall an Ihren Netzwerkadministrator.
Wenn die Ausgabe des Befehls anzeigt, dass der Host einen Port überwacht, der Forwarder aber immer noch keine Protokolle empfängt, gehen Sie so vor:
Führen Sie den folgenden Befehl aus, um Docker zu beenden:
docker stop cfps
Führen Sie je nach Netzwerkkonfiguration einen der folgenden Befehle aus.
Für TCP:
nc -l PORT
Für UDP:
nc -l -u PORT
Ersetzen Sie
PORT
durch die Port-ID, für die Sie die Fehlerbehebung durchführen möchten.Starten Sie den externen Dienst neu und prüfen Sie, ob das Problem behoben wurde. Wenn das Problem weiterhin besteht, wenden Sie sich an den Google Security Operations-Support.
Der Weiterleiter empfängt keine Protokolle, der Host jedoch schon
Wenn der Host Protokolle empfängt, der Weiterleiter aber nicht, überwacht der Weiterleiter nicht den in der Konfigurationsdatei angegebenen Port.
So beheben Sie das Problem:
Öffnen Sie auf Ihrem System zwei Terminalfenster, eines zum Konfigurieren des Weiterleitungsprogramms und eines zum Senden einer Testnachricht an den Host.
Starten Sie im ersten Terminal (Weiterleitung) Docker, ohne den Weiterleitungsdienst zu starten. Führen Sie dazu den folgenden Befehl aus:
docker run \ --name cfps \ --log-opt max-size=100m \ --log-opt max-file=10 \ --net=host \ -v ~/config:/opt/chronicle/external \ --entrypoint=/bin/bash \ -it gcr.io/chronicle-container/cf_production_stable
Geben Sie den Port an, den der Weiterleiter überwachen soll:
nc -l PORT
Ersetzen Sie
PORT
durch die Port-ID, für die Sie die Fehlerbehebung durchführen möchten.
Senden Sie im zweiten Terminal (Host) die Testnachricht über den Port. Führen Sie dazu den folgenden Befehl aus:
echo "test message" | nc localhost PORT
Ersetzen Sie
PORT
durch die Port-ID, für die Sie die Fehlerbehebung durchführen möchten.Führen Sie den Befehl
docker
noch einmal aus. Geben Sie das-p
-Flag mit den Ports an, auf denen der Weiterleiter lauschen soll. Führen Sie dazu den folgenden Befehl aus:docker run \ --detach \ –name cfps \ --restart=always \ --log-opt max-size=100m \ --log-opt max-file=10 --net=host \ —v /root/config:/opt/chronicle/external \ -p 11500:11800 \ gcr.io/chronicle-container/cf_production_stable
Häufige Fehler in der Protokolldatei des Brokers
Sie können die Logs des Weiterleitungsservers mit dem folgenden Befehl aufrufen:
sudo docker logs cfps
Die Anfrage enthält ein ungültiges Argument.
In der Logdatei des Brokers wird die folgende Fehlermeldung angezeigt:
I0912 18:04:15.187321 333 uploader.go:181] Sent batch error: rpc error: code = InvalidArgument desc = Request contains an invalid argument.
E0912 18:04:15.410572 333 batcher.go:345] [2_syslog_CISCO_FIREWALL-tid-0] Error exporting batch: rpc error: code = InvalidArgument desc = Request contains an invalid argument.
I0912 18:04:15.964923 333 uploader.go:181] Sent batch error: rpc error: code = InvalidArgument desc = Request contains an invalid argument.
Lösung:
Dieser Fehler kann auftreten, wenn ein ungültiger Protokolltyp hinzugefügt wird. Achten Sie darauf, dass nur gültige Protokolltypen hinzugefügt werden. In der Beispielfehlermeldung ist CISCO\_FIREWALL
kein gültiger Protokolltyp. Eine Liste der gültigen Logtypen finden Sie unter Unterstützte Logtypen und Standardparser.
Server nicht gefunden
In der Logdatei des Brokers wird die folgende Fehlermeldung angezeigt:
{"log":"Failure: Unable to find the server at accounts.google.com.\n","stream":"stderr","time":"2019-06-12T18:26:53.858804303Z"}`
{"log":"+ [[ 1 -ne 0 ]]\n","stream":"stderr","time":"2019-06-12T18:26:53.919837669Z"}
{"log":"+ err 'ERROR: Problem accessing the Chronicle bundle.'\n","stream":"stderr","time":"2019-06-12T18:26:53.919877852Z"}
Lösung:
Wenden Sie sich an Ihr Netzwerkteam, um sicherzustellen, dass das Netzwerk funktioniert.
Ungültige JWT-Signatur
In der Logdatei des Brokers wird die folgende Fehlermeldung angezeigt:
E0330 17:05:28.728021 162 stats_manager.go:85] send(): rpc error: code = Unauthenticated desc = transport: OAuth 2.0: cannot fetch token: 400 Bad Request Response: {"error":"invalid_grant","error_description":"Invalid JWT Signature."}
E0404 17:05:28.729012 474 memory.go:483] [1_syslog_FORTINET_FIREWAL-tid-0] Error exporting batch: rpc error: code = Unauthenticated desc = transport: OAuth 2.0: cannot fetch token: 400 Bad Request Response: {"error":"invalid_grant","error_description":"Invalid JWT Signature."}
Lösung:
Dieser Fehler kann auftreten, wenn eine Weiterleitungskonfigurationsdatei falsche Details zum geheimen Schlüssel enthält. Wenden Sie sich an den Google Security Operations-Support, um dieses Problem zu beheben.
Das Token muss ein kurzlebiges Token sein.
In der Logdatei des Brokers wird die folgende Fehlermeldung angezeigt:
token: 400 Bad Request Response:
{"error":"invalid_grant","error_description":"Invalid JWT: Token must be a
short-lived token (60 minutes) and in a reasonable timeframe. Check your iat and exp values in the JWT claim."} I0412 05:14:16.539060 480
malachite.go:212] Sent batch error: rpc error: code = Unauthenticated desc =
transport: OAuth 2.0: cannot fetch token: 400 Bad Request Response:
{"error":"invalid_grant","error_description":"Invalid JWT: Token must be a
short-lived token (60 minutes)
Lösung:
Dieser Fehler kann auftreten, wenn die Uhren des Hosts und des Serversystems nicht synchronisiert sind. Passen Sie die Uhrzeit auf dem Host an oder versuchen Sie, die Uhren mit NTP zu synchronisieren.
Datei oder Verzeichnis nicht vorhanden
In der Logdatei des Brokers wird die folgende Fehlermeldung angezeigt:
++ cat '/opt/chronicle/external/*.conf'
cat: '/opt/chronicle/external/*.conf': No such file or directory
Lösung:
Dieser Fehler kann auftreten, wenn der Weiterleiter mit der falschen Laufwerkzuordnung gestartet wird. Verwenden Sie in der Konfigurationsdatei den vollständigen Verzeichnispfad. Sie können den Pfad mit dem Befehl pwd
abrufen.
Kundennummer konnte nicht aus der Konfigurationsdatei abgerufen werden
In der Logdatei des Brokers wird die folgende Fehlermeldung angezeigt:
+ err 'ERROR: Failed to retrieve customer ID from configuration file.'
++ date +%Y-%m-%dT%H:%M:%S%z
+ echo '[2023-06-28T09:53:21+0000]: ERROR: Failed to retrieve customer ID from configuration file.'
[2023-06-28T09:53:21+0000]: ERROR: Failed to retrieve customer ID from configuration file.
+ err '==> Please contact the Chronicle support team.'
Lösung:
Dieser Fehler wird durch eine falsche Zuordnung oder das Fehlen der Konfigurationsdatei im Verzeichnis verursacht. Verwenden Sie in der Konfigurationsdatei den vollständigen Verzeichnispfad. Sie können den Pfad mit dem Befehl pwd
abrufen. Prüfen Sie, ob der richtige docker run
-Befehl ausgeführt wird und die Konfigurationsdatei sich am folgenden Speicherort befindet:
gcr.io/chronicle-container/cf_production_stable
Das folgende Codebeispiel zeigt den Befehl docker run
:
docker run \
--detach \
--name cfps \
--restart=always \
--log-opt max-size=100m \
--log-opt max-file=10 \
--net=host \
-v /opt/chronicle/config:/opt/chronicle/external \
gcr.io/chronicle-container/cf_production_stable
Nützliche Docker-Befehle
Mit dem folgenden Befehl können Sie weitere Informationen zur Docker-Installation abrufen:
docker info
Der Docker-Dienst ist möglicherweise standardmäßig deaktiviert. Führen Sie den folgenden Befehl aus, um zu prüfen, ob die Funktion deaktiviert ist:
systemctl is-enabled docker
Führen Sie einen der folgenden Befehle aus, um den Docker-Dienst zu aktivieren und sofort zu starten:
sudo systemctl enable --now docker
sudo systemctl enable /usr/lib/systemd/system/docker.service
Ausgabe:
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /lib/systemd/system/docker.service
Führen Sie beim Starten eines Brokers den folgenden Befehl aus, um den automatischen Neustart des Brokers festzulegen:
sudo docker run --restart=always `IMAGE_NAME`
IMAGE_NAME
ist der Name des Forwarder-Images.Führen Sie den folgenden Befehl aus, um den Status und die Details des Docker-Dienstes zu prüfen:
sudo systemctl status docker
Ausgabe:
● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2020-07-18 11:14:05 UTC; 15s ago TriggeredBy: ● docker.socket Docs: https://docs.docker.com Main PID: 263 (dockerd) Tasks: 20 Memory: 100.4M CGroup: /system.slice/docker.service └─263 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock Jul 18 11:14:05 swarm-kraken dockerd[263]: time="2020-07-18T11:14:05.713787002Z" level=info msg="API listen on /run/docker.sock" Jul 18 11:14:05 swarm-kraken systemd[1]: Started Docker Application Container Engine
Wenn Probleme mit Docker auftreten, kann das Google SecOps-Supportteam die Ausgabe dieses Befehls anfordern, um Ihnen bei der Fehlerbehebung zu helfen.
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten