Häufige Probleme mit Linux-Weiterleitungen beheben

Unterstützt in:

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

  1. 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.

  2. 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:

  1. Prüfen Sie den SELinux-Status mit dem folgenden Befehl:

      sestatus
    
  2. 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:

  1. Aktivieren Sie die Komprimierung in der Konfigurationsdatei des Brokers.

  2. Erhöhen Sie die Puffergröße, indem Sie die Parameter max_memory_buffer_bytes und max_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:

  1. Führen Sie den folgenden Befehl aus, um Docker zu beenden:

    ​​docker stop cfps
    
    
  2. 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.

  3. 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:

  1. Öffnen Sie auf Ihrem System zwei Terminalfenster, eines zum Konfigurieren des Weiterleitungsprogramms und eines zum Senden einer Testnachricht an den Host.

    1. 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
      
    2. 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.

  2. 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.

  3. 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