Chronicle-Forwarder für Linux

In diesem Dokument wird die Installation und Konfiguration des Forwarders unter Linux beschrieben. Informationen zur Installation des Forwarders unter Windows finden Sie unter Windows-Forwarder.

Forwarder wird verwendet, um Logs von der Kundenumgebung an die Chronicle-Instanz zu senden. Dies wird verwendet, wenn die Kunden die Logs direkt an Chronicle senden und die Cloud-Buckets nicht zum Aufnehmen von Daten verwenden möchten oder der Logtype keine native Aufnahme über die API eines Drittanbieters hat. Der Forwarder kann als einsatzbereite Lösung verwendet werden, anstatt die Aufnahme-API manuell zu integrieren.

Sie können den Forwarder unter einer Vielzahl von Linux-Distributionen installieren, einschließlich Debian, Ubuntu, Red Hat und Suse. Google Cloud stellt die Software mithilfe eines Docker-Containers bereit. Sie können den Docker-Container entweder auf einer physischen oder virtuellen Maschine mit Linux ausführen und verwalten.

Systemanforderungen

Im Folgenden finden Sie allgemeine Empfehlungen. Für spezifische Empfehlungen für Ihr System wenden Sie sich an den Chronicle-Support.

  • RAM: 1 GB für jeden erfassten Datentyp. Endpunkterkennung und -antwort (EDR), DNS und DHCP sind beispielsweise separate Datentypen. Sie benötigen 3 GB RAM, um Daten für alle drei Geräte zu erfassen.

  • CPU: 2 CPUs sind ausreichend,um weniger als 10.000 Ereignisse pro Sekunde (EPS) zu verarbeiten (insgesamt für alle Datentypen). Wenn Sie voraussichtlich mehr als 10.000 EPS weiterleiten, stellen Sie 4 bis 6 CPUs bereit.

  • Laufwerk: 100 MB Speicherplatz sind ausreichend, unabhängig davon, wie viele Daten der Chronicle-Forwarder verarbeitet. Wenn Sie zurückgestellte Nachrichten auf dem Laufwerk statt auf dem Arbeitsspeicher zwischenspeichern müssen, finden Sie weitere Informationen unter Laufwerkszwischenspeicher. Der Chronicle-Forwarder puffert standardmäßig im Arbeitsspeicher.

Google-IP-Adressbereiche

Möglicherweise muss der IP-Adressbereich geöffnet werden, wenn Sie eine Forwarder-Konfiguration einrichten, z. B. beim Einrichten der Konfiguration für Ihre Firewall. Google kann keine spezifische Liste von IP-Adressen bereitstellen. Sie können jedoch IP-Adressbereiche von Google abrufen.

Firewallkonfiguration prüfen

Für alle Firewalls oder authentifizierten Proxys zwischen dem Chronicle-Forwarder-Container und dem Internet sind Regeln erforderlich, um den Zugriff auf die folgenden Hosts zu ermöglichen:

Verbindungstyp Ziel Port
TCP malachiteingestion-pa.googleapis.com 443
TCP asia-southeast1-malachiteingestion-pa.googleapis.com 443
TCP australia-southeast1-malachiteingestion-pa.googleapis.com 443
TCP europe-malachiteingestion-pa.googleapis.com 443
TCP europe-west2-malachiteingestion-pa.googleapis.com 443
TCP me-west1-malachiteingestion-pa.googleapis.com 443
TCP accounts.google.com 443
TCP gcr.io 443
TCP oauth2.googleapis.com 443
TCP storage.googleapis.com 443

Konfigurationsdateien anpassen

Google Cloud passt die Konfigurationsdateien mit bestimmten Metadaten an die Forwarder-Instanz an, wie im Ausgabeabschnitt gezeigt. Sie können je nach Ihren Anforderungen die Konfigurationsdatei herunterladen und im Collectors-Bereich Informationen zu den Logtypen angeben, die aufgenommen werden sollen. Weitere Informationen zu den Konfigurationseinstellungen finden Sie unter Konfigurationseinstellungen.

Linux-Forwarder konfigurieren

Informationen zum Konfigurieren des Linux-Forwarders über die Benutzeroberfläche finden Sie unter Forwarder-Konfigurationen über die Chronicle-UI verwalten.

So konfigurieren Sie den Linux-Forwarder manuell:

  1. Erstellen Sie eine Kopie der mit der Software gelieferten Vorlage für die Konfigurationsdatei.

  2. Laden Sie die Konfigurationsdatei über die UI herunter.

  3. Speichern Sie die beiden Dateien unter Verwendung der folgenden Namenskonvention im selben Verzeichnis:

    FORWARDER_NAME.conf: Verwenden Sie diese Datei, um die Konfigurationseinstellungen für die Logaufnahme zu definieren.

    FORWARDER_NAME_auth.conf: Mit dieser Datei werden die Anmeldedaten für die Autorisierung definiert.

  4. Ändern Sie die Dateien so, dass sie die Konfiguration für Ihre Forwarder-Instanz enthalten. Verwenden Sie die in diesem Dokument bereitgestellten Beispiele als Referenz.

  5. Achten Sie darauf, dass für jede Eingabe in der Datei FORWARDER_NAME_auth.conf ein Eintrag vorhanden ist, auch wenn die Eingabe keine entsprechenden Authentifizierungsdetails enthält. Dies ist erforderlich, um die Daten korrekt zuzuordnen.

Alle Änderungen an der Konfigurationsdatei werden innerhalb von 5 Minuten automatisch vom Forwarder angewendet.

Beispielkonfiguration

Das folgende Codebeispiel zeigt das Format der Konfigurationsdateien für einen Forwarder. Weitere Informationen zu den Einstellungen für die einzelnen Arten von Aufnahmemechanismen wie Splunk oder Syslog finden Sie unter Daten erfassen.

Die Datei FORWARDER_NAME.conf

output:
  url: malachiteingestion-pa.googleapis.com:443
  identity:
    identity:
    collector_id: COLLECTOR_ID \
    customer_id: CUSTOMER_ID \

collectors:
  - syslog:
      common:
        enabled: true
        data_type: "WINDOWS_DHCP"
        data_hint:
        batch_n_seconds: 10
        batch_n_bytes: 1048576
      tcp_address: 0.0.0.0:10514
      udp_address: 0.0.0.0:10514
      connection_timeout_sec: 60
      tcp_buffer_size: 524288
  - syslog:
      common:
        enabled: true
        data_type: "WINDOWS_DNS"
        data_hint:
        batch_n_seconds: 10
        batch_n_bytes: 1048576
      tcp_address: 0.0.0.0:10515
      connection_timeout_sec: 60
      tcp_buffer_size: 524288

Datei FORWARDER_NAME_auth.conf

output:
  identity:
    secret_key: |
      {
        "type": "service_account",
        "project_id": "PROJECT_ID" \,
        "private_key_id": "PRIVATE_KEY_ID" \,
        "private_key": "-----BEGIN PRIVATE KEY-----\\"PRIVATE_KEY" \n-----END PRIVATE KEY-----\n",
        "client_email": "CLIENT_EMAIL" \,
        "client_id": "CLIENT_ID" \,
        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
        "token_uri": "https://oauth2.googleapis.com/token",
        "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
        "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/example-account-1%40example-account.iam.gserviceaccount.com"
      }

collectors:
  - syslog:
  - syslog:
      certificate: "../forwarder/inputs/testdata/localhost.pem"
      certificate_key: "../forwarder/inputs/testdata/localhost.key"

In diesem Zwei-Dateisystem können Sie Anmeldedaten für die Authentifizierung in einer separaten Datei speichern, um die Sicherheit zu erhöhen. Sie können die Datei FORWARDER_NAME.conf in einem Repository für die Versionsverwaltung oder einem beliebigen offenen Konfigurationsverwaltungssystem speichern. Sie können die Datei FORWARDER_NAME_auth.conf direkt in der physischen oder virtuellen Maschine speichern, auf der der Forwarder ausgeführt wird.

Beispielkonfiguration (einzelne Datei)

output:
  url: malachiteingestion-pa.googleapis.com:443
  identity:
    identity:
    collector_id: "COLLECTOR_ID" \
    customer_id: "CUSTOMER_ID" \
    secret_key: |
      {
        "type": "service_account",
        "project_id": "PROJECT_ID" \,
        "private_key_id": "PRIVATE_KEY_ID" \,
        "private_key": "-----BEGIN PRIVATE KEY-----\ "PRIVATE_KEY" \n-----END PRIVATE KEY-----\n",
        "client_email": "CLIENT_EMAIL" \,
        "client_id": "CLIENT_ID" \,
        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
        "token_uri": "https://oauth2.googleapis.com/token",
        "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
        "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/malachite-test-1%40malachite-test.iam.gserviceaccount.com"
      }

collectors:
  - syslog:
      common:
        enabled: true
        data_type: "WINDOWS_DHCP"
        data_hint:
        batch_n_seconds: 10
        batch_n_bytes: 1048576
      tcp_address: 0.0.0.0:10514
      udp_address: 0.0.0.0:10514
      connection_timeout_sec: 60
      tcp_buffer_size: 524288
  - syslog:
      common:
        enabled: true
        data_type: "WINDOWS_DNS"
        data_hint:
        batch_n_seconds: 10
        batch_n_bytes: 1048576
      tcp_address: 0.0.0.0:10515
      connection_timeout_sec: 60
      certificate: "../forwarder/inputs/testdata/localhost.pem"
      certificate_key: "../forwarder/inputs/testdata/localhost.key"
      tcp_buffer_size: 524288

Wenn Sie eine einzelne Konfigurationsdatei verwenden und in das zwei Dateisystem wechseln möchten, gehen Sie so vor:

  1. Erstellen Sie eine Kopie der vorhandenen Konfiguration.
  2. Speichern Sie eine Datei unter der Datei FORWARDER_NAME.conf und löschen Sie die Anmeldedaten für die Autorisierung aus der Datei.
  3. Speichern Sie die andere Datei als Datei FORWARDER_NAME_auth.conf und löschen Sie alle Nicht-Autorisierungsdaten aus der Datei. Verwenden Sie die in diesem Handbuch bereitgestellten Beispielkonfigurationsdateien als Referenz.
  4. Beachten Sie die Namenskonvention und andere Richtlinien, die im Abschnitt Konfigurationsdateien anpassen aufgeführt sind.

Docker installieren

Die Installation von Docker hängt von der Hostumgebung ab. Sie können Docker auf verschiedenen Host-Betriebssystemen installieren. Google Cloud bietet eine begrenzte Dokumentation, die Sie bei der Installation von Docker auf einigen der beliebteren Linux-Distributionen unterstützt. Docker ist jedoch Open Source und die erforderliche Dokumentation ist bereits verfügbar. Eine Anleitung zur Docker-Installation finden Sie in der Docker-Dokumentation.

Sobald Docker auf Ihrem System installiert ist, ähnelt der Installationsprozess für Chronicle-Forwarder dem Installationsprozess jeder Art von Linux-Distribution.

Führen Sie den folgenden Befehl (erhöhte Berechtigungen) aus, um zu prüfen, ob Docker korrekt auf Ihrem System installiert ist:

   docker ps
  

Die folgende Antwort gibt an, dass Docker ordnungsgemäß installiert wurde:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

Nützliche Docker-Befehle

  • Mit dem folgenden Befehl können Sie zusätzliche Informationen zur Docker-Installation abrufen:

    docker info
    
  • Der Docker-Dienst kann standardmäßig deaktiviert sein. Prüfen Sie mit dem folgenden Befehl, 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 Forwarder auf einen automatischen Neustart einzustellen:

    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 Chronicle-Supportteam die Ausgabe über diesen Befehl anfordern, um das Problem zu beheben.

Forwarder unter Linux installieren

In diesem Abschnitt wird beschrieben, wie Sie Chronicle Forwarder mit einem Docker-Container auf einem Linux-System installieren.

Schritt 1: Konfigurationsdateien für Forwarder herunterladen, übertragen und installieren

Chronicle bietet für Ihr Betriebssystem (Linux oder Windows) spezifische Forwarder-Konfigurationsdateien. Sie können entsprechend Ihren Anforderungen die Konfigurationsdatei herunterladen. Nachdem Sie die folgenden Schritte ausgeführt haben, übertragen Sie die Konfigurationsdateien von Ihrem Laptop in das Forwarder-/opt/chronicle/config-Verzeichnis im Basisverzeichnis des Nutzers.

  1. Stellen Sie über ein Terminal eine Verbindung zum Host des Linux-Forwarders her.

  2. Erstellen Sie einen neuen Nutzer auf dem Host des Linux-Forwarders.

      adduser USERNAME
      passwd USERNAME
      usermod -aG wheel USERNAME
    

  3. Wechseln Sie in das Basisverzeichnis des neuen Nutzers, der den Docker-Container ausführt.

  4. Erstellen Sie ein Verzeichnis zum Speichern der Konfigurationsdateien für Chronicle-Forwarder:

      mkdir /opt/chronicle/config
    

  5. Wechseln Sie das Verzeichnis.

      cd /opt/chronicle/config
    

  6. Prüfen Sie nach der Übertragung der Dateien, ob sich die Konfigurationsdateien im Verzeichnis /opt/chronicle/config befinden:

      ls -l
    

Schritt 2: Forwarder im Docker-Container ausführen

Mit den folgenden Verfahren können Sie den Chronicle-Forwarder zum ersten Mal starten und auf die neueste Version des Chronicle-Containers aktualisieren:

Die --log-opt-Optionen sind seit Docker 1.13 verfügbar. Diese Optionen begrenzen die Größe der Containerlogdateien und müssen verwendet werden, solange Ihre Version von Docker sie unterstützt.

  1. Wenn Sie ein Upgrade ausführen, bereinigen Sie zuerst alle vorherigen Docker-Ausführungen. Im folgenden Beispiel lautet der Name des Docker-Containers cfps. Rufen Sie mit dem Befehl docker pull das neueste Docker-Image von Google Cloud ab, wie unten gezeigt.

    docker stop cfps
    
    docker rm cfps
    
  2. Rufen Sie das neueste Docker-Image von Google Cloud ab:

    docker pull gcr.io/chronicle-container/cf_production_stable
    
  3. Starten Sie den Chronicle-Forwarder aus dem Docker-Container:

    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
    

Forwarder-Logs ansehen

Führen Sie den folgenden Befehl aus, um die Chronicle-Forwarder-Logs aufzurufen:

  sudo docker logs cfps

Führen Sie den folgenden Befehl aus, um den Pfad der Datei aufzurufen, in der die Logs gespeichert sind:

docker inspect --format='{{.LogPath}}' CONTAINER_NAME
 

Führen Sie den folgenden Befehl aus, um die Logs zur Live-Ausführung aufzurufen:

  sudo docker logs cfps -f

Führen Sie den folgenden Befehl aus, um die Logs in einer Datei zu speichern:

  sudo docker logs cfps &> logs.txt

Forwarder deinstallieren

Mit den folgenden Docker-Befehlen können Sie den Chronicle-Forwarder beenden, deinstallieren oder entfernen.

So beenden oder deinstallieren Sie den Forwarder-Container:

    docker stop cfps
  

So entfernen Sie den Forwarder-Container:

    docker rm cfps
  

Forwarder aktualisieren

Der Chronicle-Forwarder besteht aus zwei Teilen und wird so aktualisiert:

  • Forwarder Bundle: Wird automatisch aktualisiert und ein Neustart ist nicht erforderlich.

  • Forwarder-Docker-Image: Wird manuell aktualisiert, nachdem der vorhandene Forwarder beendet und eine neue Instanz gestartet wurde, wie in Schritt 2 beschrieben.

Forwarder hinter einem Proxy installieren

In diesem Abschnitt wird beschrieben, wie Sie den Chronicle-Forwarder hinter einem Proxy installieren.

  1. Konfigurieren Sie Ihren Computer für die Verwendung des Proxys.

    1. Fügen Sie der Datei /etc/resolv.conf die folgenden Zeilen hinzu:

      nameserver = 10.0.0.1
      nameserver = 10.0.0.2
      
    2. Legen Sie die folgenden Umgebungsvariablen fest:

      $HTTP_PROXY = http://proxy.example.com:80
      $HTTPS_PROXY = https://proxy.example.com:80
      
  2. Konfigurieren Sie Docker für die Verwendung des Proxys.

    1. Erstellen Sie ein systemd-Drop-in-Verzeichnis für den Docker-Dienst.

      mkdir /etc/systemd/system/docker.service.d
      
    2. Erstellen Sie die Datei /etc/systemd/system/docker.service.d/http-proxy.conf, in der die Umgebungsvariablen HTTP_PROXY und HTTPS_PROXY hinzugefügt werden.

      [Service]
      Environment="HTTP_PROXY=http://proxy.example.com:80/"
      Environment="HTTPS_PROXY=https://proxy.example.com:80/"
      
    3. Änderungen löschen

      $ sudo systemctl daemon-reload
      
    4. Prüfen Sie, ob die Konfiguration geladen wurde.

      $ sudo systemctl show --property Environment docker
      Environment=HTTP_PROXY=http://proxy.example.com:80/
      Environment=HTTPS_PROXY=https://proxy.example.com:80/
      
    5. Starten Sie Docker neu.

      $ sudo systemctl restart docker
      
  3. Rufen Sie das aktuelle Docker-Image für Chronicle-Forwarder von Google Cloud ab.

    docker pull gcr.io/chronicle-container/cf_production_stable
    
  4. Führen Sie den Chronicle-Forwarder-Container aus, indem Sie Proxy-Umgebungsvariablen hinzufügen.

    docker run \
    --env = HTTP_PROXY="http://proxy.example.com:80/" \
    --env = HTTPS_PROXY="https://proxy.example.com:80/" \
    --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
    

Daten erheben

In den folgenden Abschnitten erfahren Sie, wie Sie den Chronicle-Forwarder für die Aufnahme verschiedener Datentypen konfigurieren, die an die Chronicle-Instanz weitergeleitet werden.

Splunk-Daten erfassen

Sie können den Chronicle-Forwarder so konfigurieren, dass Ihre Splunk-Daten an Chronicle weitergeleitet werden. Google Cloud konfiguriert den Chronicle-Forwarder mit den folgenden Informationen, um Ihre Daten aus Splunk weiterzuleiten:

  • URL für die Splunk REST API (z. B. https://10.0.113.15:8089).

  • Splunk-Abfragen zum Generieren von Daten für jeden der erforderlichen Datentypen (z. B. index=dns).

FORWARDER_NAME.conf
output:
collectors:
  - splunk:
      common:
        enabled: true
        data_type: WINDOWS_DNS
        data_hint: "#fields ts      uid     id.orig_h       id.orig_p       id.resp_h         id.resp_p       proto   trans_id        query   qclass  qclass_name"
        batch_n_seconds: 10
        batch_n_bytes: 819200
      url: https://127.0.0.1:8089
      is_ignore_cert: true
      minimum_window_size: 10s
      maximum_window_size: 30s
      query_string: search index=* sourcetype=dns
      query_mode: realtime
  • Stellen Sie dem Chronicle-Forwarder Ihre Splunk-Kontoanmeldedaten zur Verfügung. Dazu können Sie eine creds.txt-Datei erstellen.

So verwenden Sie eine creds.txt-Datei:

  1. Erstellen Sie eine lokale Datei für Ihre Splunk-Anmeldedaten und nennen Sie sie creds.txt.

  2. Geben Sie Ihren Nutzernamen in die erste Zeile und das Passwort in die zweite Zeile ein:

    cat creds.txt
    
    myusername
    mypassword
    
  3. Wenn Sie den Chronicle-Forwarder für den Zugriff auf eine Splunk-Instanz verwenden möchten, kopieren Sie die Datei creds.txt in das Konfigurationsverzeichnis (das Verzeichnis, in dem sich auch die Konfigurationsdateien befinden). Beispiel:

    cp creds.txt /opt/chronicle/config/creds.txt
    
  4. Prüfen Sie, ob sich die Datei creds.txt am richtigen Speicherort befindet:

    ls /opt/chronicle/config
    

Syslog-Daten erfassen

Der Chronicle-Forwarder kann als Syslog-Server verwendet werden. Sie können jede Appliance oder jeden Server, der das Senden von Syslog-Daten über eine TCP- oder UDP-Verbindung unterstützt, so konfigurieren, dass ihre Daten an den Chronicle-Forwarder weitergeleitet werden. Sie können die genauen Daten steuern, die die Appliance oder der Server an den Chronicle-Forwarder sendet. Der Chronicle-Forwarder kann die Daten dann an Chronicle weiterleiten.

Die von Google Cloud bereitgestellte Konfigurationsdatei FORWARDER_NAME.conf gibt an, welche Ports für die einzelnen weitergeleiteten Daten überwacht werden sollen (z. B. Port 10514). Standardmäßig akzeptiert der Chronicle-Forwarder sowohl TCP- als auch UDP-Verbindungen.

rsyslog konfigurieren

Zum Konfigurieren von rsyslog müssen Sie für jeden Port (z. B. jeden Datentyp) ein Ziel angeben. Die korrekte Syntax finden Sie in der Systemdokumentation. Die folgenden Beispiele veranschaulichen die rsyslog-Zielkonfiguration:

  • TCP-Log-Traffic: dns.* @@192.168.0.12:10514

  • UDP-Log-Traffic: dns.* @192.168.0.12:10514

TLS für Syslog-Konfigurationen aktivieren

Sie können TLS für die Syslog-Verbindung zum Chronicle-Forwarder aktivieren. Geben Sie in der Konfigurationsdatei für Chronicle-Forwarder (FORWARDER_NAME.conf) den Speicherort Ihres eigenen generierten Zertifikats und Ihres Zertifikatsschlüssels an, wie im folgenden Beispiel gezeigt:

Zertifikat "/opt/chronicle/external/certs/client_generate_cert.pem"
Zertifikatschlüssel "/opt/chronicle/external/certs/client_generate_cert.key"

Ändern Sie basierend auf dem gezeigten Beispiel die Konfigurationsdatei für Chronicle-Forwarder (FORWARDER_NAME.conf) so:

  collectors:
- syslog:
    common:
      enabled: true
      data_type: WINDOWS_DNS
      data_hint:
      batch_n_seconds: 10
      batch_n_bytes: 1048576
    tcp_address: 0.0.0.0:10515
    tcp_buffer_size: 65536
    connection_timeout_sec: 60
    certificate: "/opt/chronicle/external/certs/client_generated_cert.pem"
    certificate_key: "/opt/chronicle/external/certs/client_generated_cert.key"
    minimum_tls_version: "TLSv1_3"

Einige wichtige Hinweise:

  • Sie können die TCP-Puffergröße konfigurieren. Die Standardgröße des TCP-Zwischenspeichers beträgt 64 KB.

  • Der empfohlene Standardwert für „connection_timeout“ beträgt 60 Sekunden. Die TCP-Verbindung wird beendet, wenn sie für eine bestimmte Zeit inaktiv war.

  • Die Mindestversion für TLS wird mit der TLS-Version der Eingabeanfrage verglichen. Die TLS-Version der Eingabeanfrage sollte höher als die TLS-Mindestversion sein. Die Mindestversion von TLS sollte einen der folgenden Werte haben: TLSv1_0, TLSv1_1, TLSv1_2, TLSv1_3.

Sie können im Konfigurationsverzeichnis ein Verzeichnis „certs“ erstellen und die Zertifikatsdateien dort speichern.

Dateidaten erfassen

Ein Datei-Collector ist darauf ausgelegt, die Protokolle aus einer Datei abzurufen. Die Datei sollte an den Docker-Container gebunden sein.

Verwenden Sie diese Option, wenn Sie Protokolle manuell aus einer einzelnen Protokolldatei hochladen möchten. Dies kann zum Backfill von Logs für eine bestimmte Logdatei verwendet werden.

Starten Sie den Chronicle-Forwarder aus dem Docker-Container:

  docker run \
    --name cfps \
    --log-opt max-size=100m \
    --log-opt max-file=10 \
    --net=host \
    -v /opt/chronicle/config:/opt/chronicle/external \
    -v /var/log/crowdstrike/falconhostclient:/opt/chronicle/edr \
     gcr.io/chronicle-container/cf_production_stable

Dieser Docker-Befehl zum Ausführen ist wichtig, um dem Container das Ladevolumen zuzuordnen.

Basierend auf diesem Beispiel sollten Sie die Chronicle-Forwarder-Konfiguration (FORWARDER_NAME.conf-Datei) so ändern. Die Datei sample.txt sollte sich im Ordner /var/log/crowdstrike/falconhostclient befinden.

 collectors:
  - file:
       common:
         enabled: true
         data_type: CS_EDR
         data_hint:
         batch_n_seconds: 10
         batch_n_bytes: 1048576
       file_path: /opt/chronicle/edr/sample.txt
       filter:

Flag-Konfigurationen

skip_seek_to_end (boolesch): Dieses Flag ist standardmäßig auf false gesetzt und die Dateieingabe sendet nur neue Logzeilen als Eingabe. Wenn Sie diesen Wert auf true festlegen, werden alle vorherigen Logzeilen bei Neustarts von Forwardern noch einmal gesendet. Dadurch werden Logs dupliziert. Das Festlegen dieses Flags auf true ist in bestimmten Situationen hilfreich (z. B. bei Ausfällen), da ein Neustart des Forwarders die fehlenden Logzeilen noch einmal sendet.

poll (boolesch): Der File-Collector prüft mithilfe der Tail-Bibliothek auf Änderungen im Dateisystem. Wenn Sie dieses Flag auf true setzen, verwendet die Tail-Bibliothek die Abfragemethode anstelle der standardmäßigen Benachrichtigungsmethode.

Paketdaten erfassen

Der Chronicle-Forwarder kann Pakete mit libcap unter Linux direkt von einer Netzwerkschnittstelle erfassen. Weitere Informationen zu libcap finden Sie auf der Seite libcap – Linux-Handbuch.

Pakete werden anstelle von Logeinträgen erfasst und an Chronicle gesendet. Die Paketerfassung wird nur über eine lokale Schnittstelle durchgeführt. Wenn Sie die Paketerfassung für Ihr System aktivieren möchten, wenden Sie sich an den Chronicle-Support.

Google Cloud konfiguriert den Chronicle-Forwarder mit dem Ausdruck des Berkeley Packet Filter (BPF), der beim Erfassen von Paketen verwendet wird (z. B. Port 53 und nicht localhost). Weitere Informationen finden Sie unter Berkeley-Paketfilter.

Daten aus Kafka-Thema erfassen

Sie können Daten aus den Kafka-Themen genau wie aus Syslog aufnehmen. Mit den Nutzergruppen können Sie bis zu drei Forwarder bereitstellen und Daten aus demselben Kafka-Thema abrufen. Weitere Informationen finden Sie unter Kafka.

Weitere Informationen zu Kafka-Nutzergruppen finden Sie hier: https://docs.confluent.io/platform/current/clients/consumer.html

Beispielkonfiguration: Kafka-Eingabe

Die folgende Forwarder-Konfiguration zeigt, wie der Forwarder so eingerichtet wird, dass Daten aus den Kafka-Themen aufgenommen werden.

Die Datei FORWARDER_NAME.conf

collectors:
- kafka:
      common:
        batch_n_bytes: 1048576
        batch_n_seconds: 10
        data_hint: null
        data_type: NIX_SYSTEM
        enabled: true
      topic: example-topic
      group_id: chronicle-forwarder
      timeout: 60s
      brokers: ["broker-1:9092", "broker-2:9093"]
      tls:
        insecureSkipVerify: true
        certificate: "/path/to/cert.pem"
        certificate_key: "/path/to/cert.key"
- syslog:
      common:
        batch_n_bytes: 1048576
        batch_n_seconds: 10
        data_hint: null
        data_type: WINEVTLOG
        enabled: true
      tcp_address: 0.0.0.0:30001
      connection_timeout_sec: 60

Datei FORWARDER_NAME_auth.conf

collectors:
- kafka:
      username: user
      password: password
- syslog:

WebProxy-Daten erfassen

Der Chronicle-Forwarder kann WebProxy-Daten mithilfe von libcap unter Linux direkt aus einer Netzwerkschnittstelle erfassen. Weitere Informationen zu libcap finden Sie auf der Seite libcap – Linux-Handbuch. Wenden Sie sich an den Support von Chronicle, um die WebProxy-Datenerfassung für Ihr System zu aktivieren.

Ändern Sie die Chronicle-Forwarder-Konfiguration (Datei FORWARDER_NAME.conf) so:

- webproxy:
      common:
        enabled : true
        data_type: <Your LogType>
        batch_n_seconds: 10
        batch_n_bytes: 1048576
      interface: any
      bpf: tcp and dst port 80

Optionale Konfigurationen anpassen

Datenkomprimierung ein-/ausschalten

Durch die Logkomprimierung wird der Verbrauch der Netzwerkbandbreite beim Übertragen von Logs an Chronicle reduziert. Die Komprimierung kann jedoch zu einer höheren CPU-Auslastung führen. Der Kompromiss zwischen CPU-Auslastung und Bandbreite hängt von vielen Faktoren ab, einschließlich des Typs der Logdaten, der Kompressibilität dieser Daten, der Verfügbarkeit von CPU-Zyklen auf dem Host, auf dem der Forwarder ausgeführt wird, und der Notwendigkeit, den Verbrauch der Netzwerkbandbreite zu reduzieren.

Textbasierte Logs werden beispielsweise gut komprimiert und können bei geringer CPU-Auslastung erhebliche Bandbreiteneinsparungen bieten. Verschlüsselte Nutzlasten von Rohpaketen werden jedoch nicht gut komprimiert und verursachen eine höhere CPU-Auslastung.

Die Protokollkomprimierung ist standardmäßig deaktiviert. Das Aktivieren der Logkomprimierung kann den Bandbreitenverbrauch verringern. Durch das Aktivieren der Logkomprimierung kann sich jedoch auch die CPU-Auslastung erhöhen. Seien Sie sich der Kompromisse bewusst.

Um die Logkomprimierung zu aktivieren, setzen Sie das Feld compression in der Chronicle-Forwarder-Konfigurationsdatei auf true, wie im folgenden Beispiel gezeigt:

Die Datei FORWARDER_NAME.conf

output:
  compression: true
    url: malachiteingestion-pa.googleapis.com:443
    identity:
      identity:
      collector_id: 10479925-878c-11e7-9421-10604b7cb5c1
      customer_id: ebdc4bb9-878b-11e7-8455-10604b7cb5c1
...

Datei FORWARDER_NAME_auth.conf

output:
  identity:
    secret_key: |
    {
     "type": "service_account",
...
    }

Laufwerkszwischenspeicherung konfigurieren

Mit der Laufwerkspufferung können Sie zurückgestellte Nachrichten auf dem Laufwerk statt im Arbeitsspeicher zwischenspeichern. Die zurückgestellten Nachrichten können gespeichert werden, falls der Forwarder abstürzt oder der zugrunde liegende Host abstürzt. Beachten Sie, dass die Aktivierung der Laufwerkzwischenspeicherung die Leistung beeinträchtigen kann.

Wenn die Laufwerkzwischenspeicherung deaktiviert ist, verwendet der Forwarder 1 GB Arbeitsspeicher (RAM) für jeden Logtyp (z. B. pro Connector). Geben Sie den Konfigurationsparameter „max_memory_buffer_bytes“ an. Der maximal zulässige Arbeitsspeicher beträgt 4 GB.

Sie können die automatische Arbeitsspeicherpufferung so konfigurieren, dass ein dynamisch gemeinsam genutzter Zwischenspeicher für Collectors verwendet wird, um Trafficspitzen besser zu handhaben. Fügen Sie Ihrer Forwarder-Konfiguration Folgendes hinzu, um den dynamisch freigegebenen Zwischenspeicher zu aktivieren:

auto_buffer:
  enabled: true
  target_memory_utilization: 80

Wenn die automatische Zwischenspeicherung des Laufwerks aktiviert, aber target_memory_utilization nicht definiert ist, wird der Standardwert 70 verwendet.

Wenn Sie den Forwarder mit Docker ausführen, empfiehlt Google, zu Isolationszwecken ein von Ihrem Konfigurations-Volume getrenntes Volume bereitzustellen. Außerdem sollte jede Eingabe mit einem eigenen Verzeichnis oder Volume isoliert werden, um Konflikte zu vermeiden.

Beispielkonfiguration: Laufwerkzwischenspeicherung

Die folgende Konfiguration enthält Syntax zur Aktivierung der Zwischenspeicherung des Laufwerks:

collectors:
- syslog:
    common:
      write_to_disk_buffer_enabled: true
      # /buffers/NIX_SYSTEM is part of the external mounted volume for the
forwarder
      write_to_disk_dir_path: /buffers/NIX_SYSTEM
      max_file_buffer_bytes: 1073741824
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: NIX_SYSTEM
      enabled: true
    tcp_address: 0.0.0.0:30000
    connection_timeout_sec: 60
- syslog:
    common:
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: WINEVTLOG
      enabled: true
    tcp_address: 0.0.0.0:30001
    connection_timeout_sec: 60

Filter für reguläre Ausdrücke festlegen

Mit Filtern für reguläre Ausdrücke können Sie Logs anhand von Übereinstimmungen regulärer Ausdrücke mit Rohlogs filtern.

Die Filter verwenden die hier beschriebene RE2-Syntax: https://github.com/google/re2/wiki/Syntax

Die Filter müssen einen regulären Ausdruck enthalten und optional ein Verhalten bei einer Übereinstimmung definieren. Das Standardverhalten bei einer Übereinstimmung ist „Sperren“. Sie können sie auch explizit als Block konfigurieren.

Alternativ können Sie Filter mit dem Verhalten allow angeben. Wenn Sie allow-Filter angeben, blockiert der Forwarder alle Logs, die nicht mindestens einem allow-Filter entsprechen.

Sie können eine beliebige Anzahl von Filtern definieren. Blockfilter haben Vorrang vor allow-Filtern.

Wenn Filter definiert sind, muss ihnen ein Name zugewiesen werden. Die Namen aktiver Filter werden über Forwarder-Statusmesswerte an Chronicle gemeldet. Filter, die im Stammverzeichnis der Konfiguration definiert sind, werden mit Filtern zusammengeführt, die auf Collector-Ebene definiert wurden. Filter auf Collector-Ebene haben bei in Konflikt stehenden Namen Vorrang. Wenn keine Filter auf Stamm- oder Collector-Ebene definiert sind, werden alle zugelassen.

Beispielkonfiguration: Filter für reguläre Ausdrücke

In der folgenden Forwarder-Konfiguration werden die WINEVTLOG-Logs blockiert, die nicht mit dem Stammfilter (allow_filter) übereinstimmen. Bei dem regulären Ausdruck lässt der Filter nur Logs mit Prioritäten zwischen 0 und 99 zu. Alle NIX_SYSTEM-Logs, die „foo“ oder „bar“ enthalten, werden jedoch trotz allow_filter blockiert. Dies liegt daran, dass die Filter ein logisches ODER verwenden. Alle Logs werden verarbeitet, bis ein Filter ausgelöst wird.

regex_filters:
  allow_filter:
    regexp: ^<[1-9][0-9]?$>.*$
    behavior_on_match: allow
collectors:
- syslog:
    common:
      regex_filters:
        block_filter_1:
          regexp: ^.*foo.*$
          behavior_on_match: block
        block_filter_2:
          regexp: ^.*bar.*$
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: NIX_SYSTEM
      enabled: true
    tcp_address: 0.0.0.0:30000
    connection_timeout_sec: 60
- syslog:
    common:
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: WINEVTLOG
      enabled: true
    tcp_address: 0.0.0.0:30001
    connection_timeout_sec: 60

Beliebige Labels konfigurieren

Labels werden verwendet, um mithilfe von Schlüssel/Wert-Paaren beliebige Metadaten an Logs anzuhängen. Labels können für einen gesamten Forwarder oder innerhalb eines bestimmten Collectors eines Forwarders konfiguriert werden. Wenn beide angegeben sind, werden die Labels mit den Collector-Schlüsseln zusammengeführt und haben Vorrang vor den Schlüsseln des Forwarders, wenn sich die Schlüssel überschneiden.

Beispielkonfiguration: beliebige Labels

In der folgenden Forwarder-Konfiguration sind die Schlüssel/Wert-Paare „foo=bar“ und „meow=mix“ an WINEVTLOG-Logs angehängt und die Schlüssel/Wert-Paare „foo=baz“ und „meow=mix“ sind an die NIX_SYSTEM-Logs angehängt.

metadata:
  labels:
    foo: bar
    meow: mix
collectors:
syslog:
    common:
      metadata:
        labels:
          foo: baz
          meow: mix
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: NIX_SYSTEM
      enabled: true
    tcp_address: 0.0.0.0:30000
    connection_timeout_sec: 60
syslog:
    common:
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: WINEVTLOG
      enabled: true
    tcp_address: 0.0.0.0:30001
    connection_timeout_sec: 60

Namespaces konfigurieren

Verwenden Sie Namespace-Labels, um Logs von bestimmten Netzwerksegmenten zu identifizieren und Konflikte zwischen sich überschneidenden IP-Adressen aufzuheben. Sie können ein Namespace-Label für einen gesamten Forwarder oder innerhalb eines bestimmten Collectors des Forwarders konfigurieren. Wenn beide enthalten sind, hat der Namespace des jeweiligen Collectors Vorrang.

Jeder für den Forwarder konfigurierte Namespace wird mit den zugehörigen Assets auf der Chronicle-Benutzeroberfläche angezeigt. Sie können auch mit der Chronicle-Suchfunktion nach Namespaces suchen.

Informationen zum Aufrufen von Namespaces in der Chronicle-Benutzeroberfläche finden Sie hier.

Beispielkonfiguration: Namespaces

In der folgenden Forwarder-Konfiguration sind die WINEVTLOG-Logs an den FORWARDER-Namespace und NIX_SYSTEM-Logs an den CORPORATE-Namespace angehängt.

metadata:
  namespace: FORWARDER
collectors:
- syslog:
      common:
        metadata:
          namespace: CORPORATE
        batch_n_bytes: 1048576
        batch_n_seconds: 10
        data_hint: null
        data_type: NIX_SYSTEM
        enabled: true
      tcp_address: 0.0.0.0:30000
      connection_timeout_sec: 60
- syslog:
      common:
        batch_n_bytes: 1048576
        batch_n_seconds: 10
        data_hint: null
        data_type: WINEVTLOG
        enabled: true
      tcp_address: 0.0.0.0:30001
      connection_timeout_sec: 60

Load-Balancing- und Hochverfügbarkeitsoptionen konfigurieren

Der Chronicle-Forwarder für Linux kann in einer Umgebung bereitgestellt werden, in der ein Layer-4-Load-Balancer zwischen der Datenquelle und den Forwarder-Instanzen installiert ist. Dadurch kann ein Kunde die Logsammlung auf mehrere Forwarder verteilen oder Logs an einen anderen Forwarder senden, wenn ein Forwarder fehlschlägt. Diese Funktion wird nur mit dem Sammlungstyp „Syslog“ unterstützt.

Der Linux-Forwarder enthält einen integrierten HTTP-Server, der auf HTTP-Systemdiagnosen vom Load-Balancer antwortet. Der HTTP-Server sorgt auch dafür, dass Logs beim Starten oder Herunterfahren eines Forwarders nicht verloren gehen.

Konfigurieren Sie die Optionen für HTTP-Server, Load-Balancing und Hochverfügbarkeit im Abschnitt server der Forwarder-Konfigurationsdatei. Diese Optionen unterstützen das Festlegen von Zeitlimits und Statuscodes, die als Antwort auf Systemdiagnosen zurückgegeben werden, die in Container-Planer- und Orchestrierungsbasierten Bereitstellungen sowie von herkömmlichen Load-Balancern empfangen werden.

Verwenden Sie die folgenden URL-Pfade für Integritäts-, Bereitschafts- und Aktivitätsprüfungen. Die <host:port>-Werte werden in der Forwarder-Konfiguration definiert.

  • http://<host:port>/meta/available: Aktivitätsprüfungen für Container-Planer/Orchestratoren wie Kubernetes.
  • http://<host:port>/meta/ready: Bereitschaftsprüfungen und herkömmliche Systemdiagnosen des Load-Balancers

Die folgende Forwarder-Konfiguration ist ein Beispiel für Load-Balancing und Hochverfügbarkeit:

collectors:
- syslog:
    common:
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: NIX_SYSTEM
      enabled: true
    tcp_address: 0.0.0.0:30000
    connection_timeout_sec: 60
- syslog:
    common:
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: WINEVTLOG
      enabled: true
    tcp_address: 0.0.0.0:30001
    connection_timeout_sec: 60
server:
  graceful_timeout: 15s
  drain_timeout: 10s
  http:
    port: 8080
    host: 0.0.0.0
    read_timeout: 3s
    read_header_timeout: 3s
    write_timeout: 3s
    idle_timeout: 3s
    routes:
    - meta:
        available_status: 204
        ready_status: 204
        unready_status: 503
Konfigurationspfad Beschreibung
Server : Graceful_timeout Die Zeit, die der Forwarder eine fehlerhafte Bereitschafts-/Systemdiagnose zurückgibt und noch neue Verbindungen annimmt. Dies ist auch die Wartezeit zwischen dem Empfang eines Signals zum Stoppen und dem tatsächlichen Herunterfahren des Servers selbst. So hat der Load-Balancer Zeit, den Forwarder aus dem Pool zu entfernen.
Server : Drain_timeout Die Zeit, die der Forwarder wartet, bis aktive Verbindungen selbst beendet wurden, bevor er vom Server geschlossen wird.
Server : http : Port Die Portnummer, die der HTTP-Server auf Systemdiagnosen vom Load-Balancer überwacht. Muss zwischen 1024 und 65535 liegen.
server : http : Host Die IP-Adresse oder der Hostname, der in IP-Adressen aufgelöst werden kann und die der Server überwachen soll. Wenn das Feld leer ist, wird der Standardwert „local system“ (0.0.0.0) verwendet.
Server : http : read_timeout Wird zur Feinabstimmung des HTTP-Servers verwendet. In der Regel muss die Standardeinstellung nicht geändert werden. Die maximale Zeit, die zum Lesen der gesamten Anfrage (Header und Text) zur Verfügung steht. Sie können sowohl read_timeout als auch read_header_timeout festlegen.
Server : http : read_header_timeout Wird zur Feinabstimmung des HTTP-Servers verwendet. In der Regel muss die Standardeinstellung nicht geändert werden. Die maximal zulässige Zeit zum Lesen von Anfrageheadern. Beim Lesen der Verbindung wird das Zeitlimit nach dem Lesen des Headers zurückgesetzt.
Server : http : write_timeout Wird zur Feinabstimmung des HTTP-Servers verwendet. In der Regel muss die Standardeinstellung nicht geändert werden. Die maximal zulässige Zeit zum Senden einer Antwort. Er wird zurückgesetzt, wenn ein neuer Anfrageheader gelesen wird.
Server : http : inaktiver Zeitüberschreitung Wird zur Feinabstimmung des HTTP-Servers verwendet. In der Regel muss die Standardeinstellung nicht geändert werden. Die maximale Wartezeit für die nächste Anfrage, wenn inaktive Verbindungen aktiviert sind. Wenn „idle_timeout“ null ist, wird der Wert von read_timeout verwendet. Wenn beide null sind, wird read_header_timeout verwendet.
Routen : Meta : Bereitschaftsstatus Der Statuscode, den der Forwarder zurückgibt, wenn er bereit ist, den Traffic in einer der folgenden Situationen anzunehmen:
  • Die Bereitschaftsprüfung wird von einem Containerplaner oder -orchestrator wie Kubernetes empfangen.
  • Die Systemdiagnose wird von einem herkömmlichen Load-Balancer empfangen.
Routen : Meta : ungelesene_status Der Statuscode, der vom Forwarder zurückgegeben wird, wenn er nicht bereit ist, Traffic anzunehmen.
Routen : Meta : verfügbarer_Status Der Statuscode, den der Forwarder zurückgibt, wenn eine Aktivitätsprüfung empfangen wird und der Forwarder verfügbar ist Containerplaner und -orchestratoren wie Kubernetes senden häufig Aktivitätsprüfungen.

Häufig gestellte Fragen

Wie aktualisiere ich meinen Forwarder?

Der Windows-Forwarder wird nicht ständig aktualisiert, da er nur von wenigen Kunden verwendet wird. Der Linux-Forwarder wird ständig über ein Shell-Skript im Docker-Image aktualisiert, sodass Sie dafür keine ausführbare Datei bereitstellen müssen. Wenn ein Kunde jedoch einen Supportfall öffnet, um die neueste ausführbare Windows-Datei für den Forwarder zu erhalten, stellt das Supportteam dem Kunden über das Supportportal eine EXE-Datei zur Verfügung.

Was ist ein Docker-Container?

  • Docker-Container sind wie virtuelle Maschinen, die zusätzliche Sicherheit, Isolation und Ressourcenverwaltung bieten.

  • Virtuelle Maschinen haben sowohl einen privilegierten Bereich (Linux-Kernel) als auch einen Nutzerbereich (alles, mit dem Sie interagieren: libc, python, ls, tcpdump usw.).

  • Container haben nur einen Nutzerbereich (alles, mit dem Sie interagieren: libc, python, ls, tcpdump usw.) und sind auf den Berechtigungsbereich des Hosts angewiesen.

Warum sollten Sie Chronicle-Forwarder mithilfe eines Containers verteilen?

  • Mehr Sicherheit durch Isolierung:
    • Die Kundenumgebung und die Anforderungen wirken sich nicht auf den Chronicle-Forwarder aus.
    • Die Umgebung und Anforderungen von Chronicle-Forwarder wirken sich nicht auf den Kunden aus.
    • Der Mechanismus zur Containerverteilung ist bereits vorhanden und kann für Google Cloud und Kunden privat und separat sein. https://cloud.google.com/container-Registry/

Warum nur Linux für Container? Was ist mit Windows?

  • Container wurden zuerst für Linux entwickelt und sind produktionsreif.

  • Windows-Unterstützung für Container läuft. Container sind für Windows Server 2016 und Windows 10 verfügbar.

Benötigen Sie erweiterte Docker-Befehle?

  • Der Chronicle-Forwarder verwendet einen einzelnen Container, sodass Sie sich nicht mit Swarm, Orchestrierung, Kubernetes oder anderen erweiterten Docker-Konzepten oder -Befehlen vertraut machen müssen.