Häufige Probleme mit Linux-Weiterleitungen beheben

Unterstützt in:

In diesem Dokument erfahren Sie, wie Sie häufige Probleme erkennen und beheben, die bei der Verwendung des Google Security Operations Linux-Forwarders auftreten können.

Forwarder startet nicht

Der Forwarder kann nicht gestartet werden und befindet sich in einer kontinuierlichen Neustartschleife mit dem folgenden Fehler in den Logs:

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

Achten Sie zur Behebung dieses Problems darauf, dass 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 gelangen Sie in eine Shell im Container.

  2. Führen Sie dazu diesen Befehl aus:

    ls -lrt /opt.chronicle/external/
    

    Wenn Sie eine Fehlermeldung über eine verweigerte Berechtigung erhalten, kann der Forwarder 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
    

Logs erreichen den Google SecOps-Mandanten nicht

Mögliche Ursache 1: DNS-Auflösung

Prüfen Sie mit dem folgenden Befehl, ob der Host Adressen nicht auflösen oder Google SecOps 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 SecOps und dem Forwarder 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 Logs 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 Forwarders.

  2. Puffergröße erhöhen Aktualisieren Sie dazu die Parameter max_memory_buffer_bytes und max_file_buffer_bytes in der Konfigurationsdatei. Diese Parameter geben den Puffer der Backlog-Batches an, die im Arbeitsspeicher oder auf der Festplatte gespeichert sind.

Forwarder und Host empfangen keine Logs

Wenn der Host und der Forwarder keine Logs empfangen, prüfen Sie den Portstatus, indem Sie den folgenden Befehl für jeden Port 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, bedeutet das, dass der Host nicht auf diesem Port wartet. Wenden Sie sich in diesem Fall an Ihren Netzwerkadministrator.

Wenn die Ausgabe des Befehls angibt, dass der Host einen Port überwacht, der Forwarder aber weiterhin keine Logs empfängt, gehen Sie so vor:

  1. Stoppen Sie Docker mit dem folgenden Befehl:

    ​​docker stop cfps
    
    
  2. Führen Sie je nach Netzwerkeinrichtung 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. Starte den externen Dienst neu und prüfe, ob das Problem behoben wurde. Wenn das Problem weiterhin besteht, wenden Sie sich an den Google SecOps-Support.

Forwarder empfängt keine Logs, Host empfängt Logs

Wenn der Host Logs empfängt, der Forwarder jedoch nicht, bedeutet das, dass der Forwarder den in der Konfigurationsdatei angegebenen Port nicht überwacht.

So beheben Sie das Problem:

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

    1. Starten Sie Docker im ersten Terminal (Forwarder), ohne den Forwarder zu starten, indem Sie den folgenden Befehl ausführen:

      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 Forwarder ü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, indem Sie den folgenden Befehl ausführen:

    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, an denen der Forwarder lauschen soll, indem Sie den folgenden Befehl ausführen:

    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 Forwarder-Protokolldatei

Sie können die Forwarder-Logs mit dem folgenden Befehl aufrufen:

  sudo docker logs cfps

Die Anfrage enthält ein ungültiges Argument.

In der Logdatei des Forwarders 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 Logtyp hinzugefügt wird. Achten Sie darauf, dass nur gültige Logtypen hinzugefügt werden. In der Beispiel-Fehlermeldung ist CISCO\_FIREWALL kein gültiger Logtyp. Eine Liste der gültigen Logtypen finden Sie unter Unterstützte Logtypen und Standardparser.

Server kann nicht gefunden werden

In der Logdatei des Forwarders 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 Forwarders 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 Forwarder-Konfigurationsdatei falsche Details zum geheimen Schlüssel enthält. Wenden Sie sich an den Google SecOps-Support, um dieses Problem zu beheben.

Das Token muss ein kurzlebiges Token sein

In der Logdatei des Forwarders 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 Systemuhren des Hosts und des Servers nicht synchronisiert sind. Passen Sie die Zeit auf dem Host an oder versuchen Sie, die Uhren mit NTP zu synchronisieren.

Datei oder Verzeichnis nicht vorhanden

In der Logdatei des Forwarders 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 Forwarder mit der falschen Laufwerkzuordnung gestartet wird. Verwenden Sie den vollständigen Verzeichnispfad in der Konfigurationsdatei. Sie können den Pfad mit dem Befehl pwd abrufen.

Fehler beim Abrufen der Kundennummer aus der Konfigurationsdatei

In der Logdatei des Forwarders 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 verursacht oder wenn die Konfigurationsdatei nicht im Verzeichnis vorhanden ist. Verwenden Sie den vollständigen Verzeichnispfad in der Konfigurationsdatei. Sie können den Pfad mit dem Befehl pwd abrufen. Achten Sie darauf, dass der richtige docker run-Befehl ausgeführt wird und dass die Konfigurationsdatei am folgenden Speicherort vorhanden ist:

    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 zusätzliche 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 sie 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
    
  • Wenn Sie einen Forwarder starten, führen Sie den folgenden Befehl aus, um den automatischen Neustart des Forwarders 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 Sie Probleme mit Docker haben, 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