Fortinet FortiEDR-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie Fortinet FortiEDR-Logs mit Google Cloud Storage V2 oder dem Bindplane-Agent in Google Security Operations aufnehmen.
Fortinet FortiEDR ist eine Lösung zur Erkennung und Reaktion auf Endpunkte, die Echtzeitschutz, automatisierte Reaktion auf Vorfälle und Bedrohungsinformationen für Endpunkte in einem Unternehmen bietet.
Unterschiede bei der Erfassungsmethode
In diesem Leitfaden werden zwei Erhebungsmethoden beschrieben:
- Option 1: Syslog über Bindplane-Agent: FortiEDR sendet Syslog-Nachrichten an den Bindplane-Agent, der Logs an Google SecOps weiterleitet. Empfohlen für die Echtzeitaufnahme von Logs mit minimaler Infrastruktur.
- Option 2: Syslog zu GCS über Cloud Function: FortiEDR sendet Syslog-Nachrichten an eine Cloud Function, die Logs zur Aufnahme in Google SecOps in GCS schreibt. Empfohlen für die zentrale Logspeicherung und Batchverarbeitung.
Wählen Sie die Methode aus, die am besten zu Ihrer Infrastruktur und Ihren Anforderungen passt.
Option 1: Fortinet FortiEDR-Logs mit dem BindPlane-Agenten erfassen
Hinweise
Prüfen Sie, ob die folgenden Voraussetzungen erfüllt sind:
- Google SecOps-Instanz
- Windows Server 2016 oder höher oder Linux-Host mit systemd
- Netzwerkverbindung zwischen Bindplane-Agent und Fortinet FortiEDR Central Manager
- Wenn Sie den Agent hinter einem Proxy ausführen, müssen die Firewallports gemäß den Anforderungen des Bindplane-Agents geöffnet sein.
- Berechtigter Zugriff auf die Fortinet FortiEDR-Verwaltungskonsole
- FortiEDR-Version 5.0 oder höher
Authentifizierungsdatei für die Aufnahme in Google SecOps abrufen
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie die SIEM-Einstellungen > Collection Agent auf.
- Klicken Sie auf Herunterladen, um die Datei zur Authentifizierung der Aufnahme herunterzuladen.
Speichern Sie die Datei sicher auf dem System, auf dem der Bindplane-Agent installiert wird.
Google SecOps-Kundennummer abrufen
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie die SIEM-Einstellungen > Profile auf.
Kopieren und speichern Sie die Kunden-ID aus dem Bereich Organisationsdetails.
BindPlane-Agent installieren
Installieren Sie den Bindplane-Agent auf Ihrem Windows- oder Linux-Betriebssystem gemäß der folgenden Anleitung.
Fenstereinbau
- Öffnen Sie die Eingabeaufforderung oder PowerShell als Administrator.
Führen Sie dazu diesen Befehl aus:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quietWarten Sie, bis die Installation abgeschlossen ist.
Überprüfen Sie die Installation mit folgendem Befehl:
sc query observiq-otel-collector
Der Dienst sollte als RUNNING (Wird ausgeführt) angezeigt werden.
Linux-Installation
- Öffnen Sie ein Terminal mit Root- oder Sudo-Berechtigungen.
Führen Sie dazu diesen Befehl aus:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.shWarten Sie, bis die Installation abgeschlossen ist.
Überprüfen Sie die Installation mit folgendem Befehl:
sudo systemctl status observiq-otel-collector
Der Dienst sollte als aktiv (wird ausgeführt) angezeigt werden.
Zusätzliche Installationsressourcen
Weitere Installationsoptionen und Informationen zur Fehlerbehebung finden Sie in der Installationsanleitung für den Bindplane-Agent.
BindPlane-Agent zum Erfassen von Syslog-Daten und Senden an Google SecOps konfigurieren
Konfigurationsdatei suchen
Linux:
sudo nano /etc/bindplane-agent/config.yaml
Windows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Konfigurationsdatei bearbeiten
Ersetzen Sie den gesamten Inhalt von config.yaml durch die folgende Konfiguration:
receivers:
tcplog:
listen_address: "0.0.0.0:514"
exporters:
chronicle/fortiedr:
compression: gzip
creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
customer_id: 'YOUR_CUSTOMER_ID'
endpoint: malachiteingestion-pa.googleapis.com
log_type: FORTINET_FORTIEDR
raw_log_field: body
ingestion_labels:
env: production
service:
pipelines:
logs/fortiedr_to_chronicle:
receivers:
- tcplog
exporters:
- chronicle/fortiedr
Konfigurationsparameter
Ersetzen Sie die folgenden Platzhalter:
Empfängerkonfiguration:
listen_address: IP-Adresse und Port, auf dem gelauscht werden soll. Verwenden Sie0.0.0.0:514, um alle Schnittstellen auf Port 514 zu überwachen.
Exporter-Konfiguration:
creds_file_path: Vollständiger Pfad zur Datei für die Authentifizierung bei der Aufnahme:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
customer_id: Kunden-ID aus dem vorherigen Schritt.endpoint: Regionale Endpunkt-URL:- USA:
malachiteingestion-pa.googleapis.com - Europa:
europe-malachiteingestion-pa.googleapis.com - Asien:
asia-southeast1-malachiteingestion-pa.googleapis.com
- USA:
ingestion_labels: Optionale Labels im YAML-Format.
Konfigurationsdatei speichern
Speichern Sie die Datei nach der Bearbeitung:
- Linux: Drücken Sie
Ctrl+O, dannEnterund dannCtrl+X. - Windows: Klicken Sie auf Datei > Speichern.
Bindplane-Agent neu starten, um die Änderungen zu übernehmen
Linux
sudo systemctl restart observiq-otel-collectorPrüfen Sie, ob der Dienst ausgeführt wird:
sudo systemctl status observiq-otel-collectorLogs auf Fehler prüfen:
sudo journalctl -u observiq-otel-collector -f
Windows
Wählen Sie eine der folgenden Optionen aus:
So verwenden Sie die Eingabeaufforderung oder PowerShell als Administrator:
net stop observiq-otel-collector && net start observiq-otel-collectorServices Console verwenden:
- Drücken Sie
Win+R, geben Sieservices.mscein und drücken Sie die Eingabetaste. - Suchen Sie nach observIQ OpenTelemetry Collector.
Klicken Sie mit der rechten Maustaste und wählen Sie Neu starten aus.
Prüfen Sie, ob der Dienst ausgeführt wird:
sc query observiq-otel-collectorLogs auf Fehler prüfen:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- Drücken Sie
Syslog-Weiterleitung für Fortinet FortiEDR konfigurieren
Syslog-Ziel konfigurieren
- Melden Sie sich in der FortiEDR Central Manager-Konsole an.
- Gehen Sie zu Administration > Export Settings > Syslog.
- Klicken Sie auf die Schaltfläche Neuen Syslog definieren.
- Geben Sie im Feld Syslog Name einen aussagekräftigen Namen ein, z. B.
Chronicle-Integration. - Geben Sie im Feld Host die IP-Adresse des Bindplane-Agent-Hosts ein.
- Geben Sie in das Feld Port die Zahl
514ein. - Wählen Sie im Drop-down-Menü Protokoll die Option TCP aus.
- Wählen Sie im Drop-down-Menü Format die Option Semikolon aus (Standardformat mit durch Semikolon getrennten Feldern).
- Klicken Sie auf die Schaltfläche Testen, um die Verbindung zum BindPlane-Agent zu testen.
- Prüfen Sie, ob der Test erfolgreich war.
- Klicken Sie auf die Schaltfläche Speichern, um das Syslog-Ziel zu speichern.
Syslog-Benachrichtigungen pro Ereignistyp aktivieren
- Wählen Sie auf der Seite Syslog die soeben erstellte Syslog-Zielzeile aus.
- Verwenden Sie im Bereich BENACHRICHTIGUNGEN rechts die Schieberegler, um das Ziel pro Ereignistyp zu aktivieren oder zu deaktivieren:
- Systemereignisse: Aktivieren Sie diese Option, um FortiEDR-Systemzustandsereignisse zu senden.
- Sicherheitsereignisse: Aktivieren Sie diese Option, um aggregierte Sicherheitsereignisse zu senden.
- Audit-Trail: Aktivieren Sie diese Option, um Audit-Log-Ereignisse zu senden.
- Klicken Sie für jeden aktivierten Ereignistyp auf die Schaltfläche rechts davon.
- Setzen Sie ein Häkchen bei den Feldern, die Sie in die Syslog-Nachrichten aufnehmen möchten.
- Klicken Sie auf Speichern.
Playbook-Benachrichtigungen konfigurieren
Syslog-Nachrichten werden nur für Sicherheitsereignisse gesendet, die auf Geräten auftreten, die einer Playbook-Richtlinie mit aktivierter Option Syslog-Benachrichtigung senden zugewiesen sind.
- Rufen Sie die Sicherheitseinstellungen > Playbooks auf.
- Wählen Sie die Playbook-Richtlinie aus, die für die Geräte gilt, die Sie überwachen möchten, z. B. Standard-Playbook.
- Suchen Sie im Abschnitt Benachrichtigungen nach der Zeile Syslog.
- Aktivieren Sie die Option Syslog-Benachrichtigung senden, indem Sie die Kästchen für die Ereignisklassifizierungen auswählen, die Sie senden möchten:
- Schädlich: Sicherheitsereignisse, die als schädlich eingestuft wurden.
- Verdächtig: Sicherheitsereignisse, die als verdächtig eingestuft wurden.
- PUP: Potenziell unerwünschte Programme.
- Nicht eindeutig: Ereignisse mit nicht eindeutiger Klassifizierung.
- Wahrscheinlich sicher: Ereignisse, die als wahrscheinlich sicher eingestuft werden (optional).
Klicken Sie auf Speichern.
Option 2: Fortinet FortiEDR-Logs mit GCS erfassen
Hinweise
Prüfen Sie, ob die folgenden Voraussetzungen erfüllt sind:
- Eine Google SecOps-Instanz
- Ein GCP-Projekt mit aktivierter Cloud Storage API
- Berechtigungen zum Erstellen und Verwalten von GCS-Buckets
- Berechtigungen zum Verwalten von IAM-Richtlinien für GCS-Buckets
- Berechtigungen zum Erstellen von Cloud Run-Diensten, Pub/Sub-Themen und Cloud Scheduler-Jobs
- Berechtigter Zugriff auf die Fortinet FortiEDR-Verwaltungskonsole
- FortiEDR-Version 5.0 oder höher
Google Cloud Storage-Bucket erstellen
- Gehen Sie zur Google Cloud Console.
- Wählen Sie Ihr Projekt aus oder erstellen Sie ein neues.
- Rufen Sie im Navigationsmenü Cloud Storage > Buckets auf.
- Klicken Sie auf Bucket erstellen.
Geben Sie die folgenden Konfigurationsdetails an:
Einstellung Wert Bucket benennen Geben Sie einen global eindeutigen Namen ein, z. B. fortiedr-logs.Standorttyp Wählen Sie je nach Bedarf aus (Region, Dual-Region, Multi-Region). Standort Wählen Sie den Speicherort aus, z. B. us-central1.Speicherklasse Standard (empfohlen für Logs, auf die häufig zugegriffen wird) Zugriffskontrolle Einheitlich (empfohlen) Schutzmaßnahmen Optional: Objektversionsverwaltung oder Aufbewahrungsrichtlinie aktivieren Klicken Sie auf Erstellen.
Dienstkonto für Cloud Run-Funktion erstellen
Die Cloud Run-Funktion benötigt ein Dienstkonto mit Berechtigungen zum Schreiben in den GCS-Bucket und zum Aufrufen durch Pub/Sub.
Dienstkonto erstellen
- Wechseln Sie in der GCP Console zu IAM & Verwaltung > Dienstkonten.
- Klicken Sie auf Dienstkonto erstellen.
- Geben Sie die folgenden Konfigurationsdetails an:
- Name des Dienstkontos: Geben Sie
fortiedr-syslog-collector-saein. - Beschreibung des Dienstkontos: Geben Sie
Service account for Cloud Run function to collect FortiEDR syslog logsein.
- Name des Dienstkontos: Geben Sie
- Klicken Sie auf Erstellen und fortfahren.
- Fügen Sie im Abschnitt Diesem Dienstkonto Zugriff auf das Projekt erteilen die folgenden Rollen hinzu:
- Klicken Sie auf Rolle auswählen.
- Suchen Sie nach Storage-Objekt-Administrator und wählen Sie die Rolle aus.
- Klicken Sie auf + Weitere Rolle hinzufügen.
- Suchen Sie nach Cloud Run Invoker und wählen Sie die Rolle aus.
- Klicken Sie auf + Weitere Rolle hinzufügen.
- Suchen Sie nach Cloud Functions Invoker und wählen Sie die Rolle aus.
- Klicken Sie auf Weiter.
- Klicken Sie auf Fertig.
Diese Rollen sind erforderlich für:
- Storage-Objekt-Administrator: Protokolle in GCS-Bucket schreiben und Statusdateien verwalten
- Cloud Run-Aufrufer: Pub/Sub darf die Funktion aufrufen.
- Cloud Functions-Invoker: Funktionsaufruf zulassen
IAM-Berechtigungen für GCS-Bucket erteilen
Gewähren Sie dem Dienstkonto Schreibberechtigungen für den GCS-Bucket:
- Rufen Sie Cloud Storage > Buckets auf.
- Klicken Sie auf den Namen Ihres Buckets.
- Wechseln Sie zum Tab Berechtigungen.
- Klicken Sie auf Zugriff erlauben.
- Geben Sie die folgenden Konfigurationsdetails an:
- Hauptkonten hinzufügen: Geben Sie die E-Mail-Adresse des Dienstkontos ein (z. B.
fortiedr-syslog-collector-sa@PROJECT_ID.iam.gserviceaccount.com). - Rollen zuweisen: Wählen Sie Storage-Objekt-Administrator aus.
- Hauptkonten hinzufügen: Geben Sie die E-Mail-Adresse des Dienstkontos ein (z. B.
- Klicken Sie auf Speichern.
Pub/Sub-Thema erstellen
Erstellen Sie ein Pub/Sub-Thema, in dem Cloud Scheduler veröffentlicht und das von der Cloud Run-Funktion abonniert wird.
- Rufen Sie in der GCP Console Pub/Sub > Themen auf.
- Klicken Sie auf Thema erstellen.
- Geben Sie die folgenden Konfigurationsdetails an:
- Themen-ID: Geben Sie
fortiedr-syslog-triggerein. - Übernehmen Sie die anderen Einstellungen.
- Themen-ID: Geben Sie
- Klicken Sie auf Erstellen.
Cloud Run-Funktion zum Empfangen von Syslog erstellen
Die Cloud Run-Funktion empfängt Syslog-Nachrichten von FortiEDR über HTTP und schreibt sie in GCS.
- Rufen Sie in der GCP Console Cloud Run auf.
- Klicken Sie auf Dienst erstellen.
- Wählen Sie Funktion aus, um eine Funktion mit einem Inline-Editor zu erstellen.
Geben Sie im Abschnitt Konfigurieren die folgenden Konfigurationsdetails an:
Einstellung Wert Dienstname fortiedr-syslog-collectorRegion Wählen Sie die Region aus, die Ihrem GCS-Bucket entspricht (z. B. us-central1).Laufzeit Wählen Sie Python 3.12 oder höher aus. Im Abschnitt Trigger (optional):
- Klicken Sie auf + Trigger hinzufügen.
- Wählen Sie HTTPS aus.
- Wählen Sie unter Authentifizierung die Option Nicht authentifizierte Aufrufe zulassen aus.
- Klicken Sie auf Speichern.
Scrollen Sie zu Container, Netzwerk, Sicherheit und maximieren Sie diesen Bereich.
Rufen Sie den Tab Sicherheit auf:
- Dienstkonto: Wählen Sie das Dienstkonto aus (
fortiedr-syslog-collector-sa).
- Dienstkonto: Wählen Sie das Dienstkonto aus (
Rufen Sie den Tab Container auf:
- Klicken Sie auf Variablen und Secrets.
Klicken Sie für jede Umgebungsvariable auf + Variable hinzufügen:
Variablenname Beispielwert Beschreibung GCS_BUCKETfortiedr-logsName des GCS-Buckets GCS_PREFIXfortiedr-syslogPräfix für Protokolldateien
Scrollen Sie im Bereich Variablen und Secrets zu Anfragen:
- Zeitüberschreitung für Anfrage: Geben Sie
60Sekunden ein.
- Zeitüberschreitung für Anfrage: Geben Sie
Rufen Sie den Tab Einstellungen auf:
- Im Abschnitt Ressourcen:
- Arbeitsspeicher: Wählen Sie 256 MiB oder höher aus.
- CPU: Wählen Sie 1 aus.
- Im Abschnitt Ressourcen:
Im Abschnitt Versionsskalierung:
- Mindestanzahl von Instanzen: Geben Sie
0ein. - Maximale Anzahl von Instanzen: Geben Sie
10ein (oder passen Sie den Wert an die erwartete Last an).
- Mindestanzahl von Instanzen: Geben Sie
Klicken Sie auf Erstellen.
Warten Sie ein bis zwei Minuten, bis der Dienst erstellt wurde.
Nachdem der Dienst erstellt wurde, wird automatisch der Inline-Code-Editor geöffnet.
Funktionscode hinzufügen
- Geben Sie main in das Feld Einstiegspunkt ein.
Erstellen Sie im Inline-Codeeditor zwei Dateien:
- Erste Datei: main.py::
import functions_framework from google.cloud import storage import json import os from datetime import datetime, timezone from flask import Request # Initialize Storage client storage_client = storage.Client() # Environment variables GCS_BUCKET = os.environ.get('GCS_BUCKET') GCS_PREFIX = os.environ.get('GCS_PREFIX', 'fortiedr-syslog') @functions_framework.http def main(request: Request): """ Cloud Run function to receive syslog messages from FortiEDR and write to GCS. Args: request: Flask Request object containing syslog message """ if not GCS_BUCKET: print('Error: Missing GCS_BUCKET environment variable') return ('Missing GCS_BUCKET environment variable', 500) try: # Get request body request_data = request.get_data(as_text=True) if not request_data: print('Warning: Empty request body') return ('Empty request body', 400) # Parse syslog messages (one per line) lines = request_data.strip().split('\n') if not lines: print('Warning: No syslog messages found') return ('No syslog messages found', 400) # Get GCS bucket bucket = storage_client.bucket(GCS_BUCKET) # Write to GCS as NDJSON now = datetime.now(timezone.utc) timestamp = now.strftime('%Y%m%d_%H%M%S_%f') object_key = f"{GCS_PREFIX}/logs_{timestamp}.ndjson" blob = bucket.blob(object_key) # Convert each line to JSON object with raw syslog message records = [] for line in lines: if line.strip(): records.append({'raw': line.strip(), 'timestamp': now.isoformat()}) ndjson = '\n'.join([json.dumps(record, ensure_ascii=False) for record in records]) + '\n' blob.upload_from_string(ndjson, content_type='application/x-ndjson') print(f"Wrote {len(records)} records to gs://{GCS_BUCKET}/{object_key}") return (f"Successfully processed {len(records)} records", 200) except Exception as e: print(f'Error processing syslog: {str(e)}') return (f'Error processing syslog: {str(e)}', 500)- Zweite Datei: requirements.txt::
functions-framework==3.* google-cloud-storage==2.* flask==3.*Klicken Sie auf Bereitstellen, um die Funktion zu speichern und bereitzustellen.
Warten Sie, bis die Bereitstellung abgeschlossen ist (2–3 Minuten).
Rufen Sie nach der Bereitstellung den Tab Trigger auf und kopieren Sie die Trigger-URL (z. B.
https://fortiedr-syslog-collector-abc123-uc.a.run.app).
Fortinet FortiEDR-Syslog-Weiterleitung an Cloud Function konfigurieren
Syslog-Ziel konfigurieren
- Melden Sie sich in der FortiEDR Central Manager-Konsole an.
- Gehen Sie zu Administration > Export Settings > Syslog.
- Klicken Sie auf die Schaltfläche Neuen Syslog definieren.
- Geben Sie im Feld Syslog Name einen aussagekräftigen Namen ein, z. B.
Chronicle-GCS-Integration. - Geben Sie im Feld Host den Hostnamen der Cloud Function-Trigger-URL ein, z. B.
fortiedr-syslog-collector-abc123-uc.a.run.app. - Geben Sie in das Feld Port die Zahl
443ein. - Wählen Sie im Drop-down-Menü Protokoll die Option TCP aus.
- Wählen Sie im Drop-down-Menü Format die Option Semikolon aus (Standardformat mit durch Semikolon getrennten Feldern).
- Klicken Sie auf die Schaltfläche Test, um die Verbindung zur Cloud Functions-Funktion zu testen.
- Prüfen Sie, ob der Test erfolgreich war.
Klicken Sie auf die Schaltfläche Speichern, um das Syslog-Ziel zu speichern.
Syslog-Benachrichtigungen pro Ereignistyp aktivieren
- Wählen Sie auf der Seite Syslog die soeben erstellte Syslog-Zielzeile aus.
- Verwenden Sie im Bereich BENACHRICHTIGUNGEN rechts die Schieberegler, um das Ziel pro Ereignistyp zu aktivieren oder zu deaktivieren:
- Systemereignisse: Aktivieren Sie diese Option, um FortiEDR-Systemzustandsereignisse zu senden.
- Sicherheitsereignisse: Aktivieren Sie diese Option, um aggregierte Sicherheitsereignisse zu senden.
- Audit-Trail: Aktivieren Sie diese Option, um Audit-Log-Ereignisse zu senden.
- Klicken Sie für jeden aktivierten Ereignistyp auf die Schaltfläche rechts davon.
- Setzen Sie ein Häkchen bei den Feldern, die Sie in die Syslog-Nachrichten aufnehmen möchten.
- Klicken Sie auf Speichern.
Playbook-Benachrichtigungen konfigurieren
Syslog-Nachrichten werden nur für Sicherheitsereignisse gesendet, die auf Geräten auftreten, die einer Playbook-Richtlinie mit aktivierter Option Syslog-Benachrichtigung senden zugewiesen sind.
- Rufen Sie die Sicherheitseinstellungen > Playbooks auf.
- Wählen Sie die Playbook-Richtlinie aus, die für die Geräte gilt, die Sie überwachen möchten, z. B. Standard-Playbook.
- Suchen Sie im Abschnitt Benachrichtigungen nach der Zeile Syslog.
- Aktivieren Sie die Option Syslog-Benachrichtigung senden, indem Sie die Kästchen für die Ereignisklassifizierungen auswählen, die Sie senden möchten:
- Schädlich: Sicherheitsereignisse, die als schädlich eingestuft wurden.
- Verdächtig: Sicherheitsereignisse, die als verdächtig eingestuft wurden.
- PUP: Potenziell unerwünschte Programme.
- Nicht eindeutig: Ereignisse mit nicht eindeutiger Klassifizierung.
- Wahrscheinlich sicher: Ereignisse, die als wahrscheinlich sicher eingestuft werden (optional).
Klicken Sie auf Speichern.
Integration testen
- Rufen Sie in der FortiEDR Central Manager-Konsole Administration > Export Settings > Syslog auf.
- Wählen Sie die Zeile mit dem Syslog-Ziel aus.
- Klicken Sie auf die Schaltfläche Testen, um eine Testnachricht zu senden.
- Rufen Sie in der GCP Console Cloud Run > Dienste auf.
- Klicken Sie auf den Funktionsnamen (
fortiedr-syslog-collector). - Klicken Sie auf den Tab Logs.
Prüfen Sie, ob die Funktion erfolgreich ausgeführt wurde. Darauf sollten Sie achten:
Wrote X records to gs://fortiedr-logs/fortiedr-syslog/logs_YYYYMMDD_HHMMSS_MMMMMM.ndjson Successfully processed X recordsRufen Sie Cloud Storage > Buckets auf.
Klicken Sie auf den Namen Ihres Buckets.
Rufen Sie den Präfixordner (
fortiedr-syslog/) auf.Prüfen Sie, ob eine neue
.ndjson-Datei mit dem aktuellen Zeitstempel erstellt wurde.
Wenn in den Logs Fehler angezeigt werden, gehen Sie so vor:
- Leerer Anfragetext: FortiEDR sendet keine Daten an Cloud Function.
- Umgebungsvariable GCS_BUCKET fehlt: Prüfen Sie, ob Umgebungsvariablen festgelegt sind.
- Berechtigung verweigert: Prüfen Sie, ob das Dienstkonto die Rolle „Storage-Objekt-Administrator“ für den Bucket hat.
Google SecOps-Dienstkonto abrufen
Google SecOps verwendet ein eindeutiges Dienstkonto, um Daten aus Ihrem GCS-Bucket zu lesen. Sie müssen diesem Dienstkonto Zugriff auf Ihren Bucket gewähren.
Feed in Google SecOps konfigurieren, um Fortinet FortiEDR-Logs aufzunehmen
- Rufen Sie die SIEM-Einstellungen > Feeds auf.
- Klicken Sie auf Neuen Feed hinzufügen.
- Klicken Sie auf Einzelnen Feed konfigurieren.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B.
FortiEDR Syslog Logs. - Wählen Sie Google Cloud Storage V2 als Quelltyp aus.
Wählen Sie Fortinet FortiEDR als Logtyp aus.
Klicken Sie auf Dienstkonto abrufen.
Es wird eine eindeutige E-Mail-Adresse für das Dienstkonto angezeigt, z. B.:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comKopieren Sie diese E-Mail-Adresse. Sie verwenden es in der nächsten Aufgabe.
Klicken Sie auf Weiter.
Geben Sie Werte für die folgenden Eingabeparameter an:
Storage-Bucket-URL: Geben Sie den GCS-Bucket-URI mit dem Präfixpfad ein:
gs://fortiedr-logs/fortiedr-syslog/Ersetzen Sie:
fortiedr-logs: Der Name Ihres GCS-Buckets.fortiedr-syslog: Optionales Präfix/Ordnerpfad, in dem Logs gespeichert werden (für den Stamm leer lassen).
Option zum Löschen der Quelle: Wählen Sie die gewünschte Löschoption aus:
- Nie: Es werden nach Übertragungen nie Dateien gelöscht (empfohlen für Tests).
- Übertragene Dateien löschen: Dateien werden nach der erfolgreichen Übertragung gelöscht.
- Übertragene Dateien und leere Verzeichnisse löschen: Löscht Dateien und leere Verzeichnisse nach der erfolgreichen Übertragung.
Maximales Dateialter: Dateien einschließen, die in den letzten Tagen geändert wurden. Der Standardwert ist 180 Tage.
Asset-Namespace: Der Asset-Namespace.
Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet werden soll.
Klicken Sie auf Weiter.
Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
Dem Google SecOps-Dienstkonto IAM-Berechtigungen gewähren
Das Google SecOps-Dienstkonto benötigt die Rolle Storage-Objekt-Betrachter für Ihren GCS-Bucket.
- Rufen Sie Cloud Storage > Buckets auf.
- Klicken Sie auf den Namen Ihres Buckets.
- Wechseln Sie zum Tab Berechtigungen.
- Klicken Sie auf Zugriff erlauben.
- Geben Sie die folgenden Konfigurationsdetails an:
- Hauptkonten hinzufügen: Fügen Sie die E‑Mail-Adresse des Google SecOps-Dienstkontos ein.
- Rollen zuweisen: Wählen Sie Storage-Objekt-Betrachter aus.
Klicken Sie auf Speichern.
UDM-Zuordnungstabelle
| Logfeld | UDM-Zuordnung | Logik |
|---|---|---|
| Land | target.location.country_or_region | Wert wird direkt kopiert, wenn er nicht „N/A“ oder leer ist |
| srccountry | principal.location.country_or_region | Wert wird direkt kopiert, wenn er nicht „Reserved“ oder leer ist |
| dstcountry | target.location.country_or_region | Wert wird direkt kopiert, wenn er nicht leer ist |
| srcip | principal.ip | Wert direkt kopiert |
| dstip | target.ip | Wert wird direkt kopiert, wenn er nicht „N/A“ ist. |
| Ziel | target.ip | Wird als IP-Adresse aus dem Ziel extrahiert, sofern gültig |
| dst | target.ip | Als IP-Adresse aus „dst“ extrahiert, falls gültig |
| srcmac | principal.mac | Wert direkt kopiert |
| dstosname | target.platform | Auf LINUX setzen, wenn LINUX zutrifft; auf WINDOWS, wenn WINDOWS zutrifft; auf MAC, wenn MAC zutrifft |
| srcport | principal.port | In Ganzzahl konvertiert |
| dstport | target.port | In Ganzzahl konvertiert |
| spt | principal.port | In Ganzzahl konvertiert |
| dpt | target.port | In Ganzzahl konvertiert |
| sessionid | network.session_id | Wert direkt kopiert |
| sentbyte | network.sent_bytes | In vorzeichenlose Ganzzahl konvertiert |
| rcvdbyte | network.received_bytes | In vorzeichenlose Ganzzahl konvertiert |
| Dauer | network.session_duration.seconds | In Ganzzahl konvertiert |
| Aktion | security_result.summary | Wert direkt kopiert |
| level | security_result.severity_details | Auf „level: %{level}“ festgelegt |
| policyid | security_result.rule_id | Wert direkt kopiert |
| policyname | security_result.rule_name | Wert direkt kopiert |
| policytype | security_result.rule_type | Wert direkt kopiert |
| Dienst | target.application | Wert direkt kopiert |
| intermediary_ip | target.ip | Wert wird direkt kopiert, wenn „message_type“ „Audit“ ist oder „loginStatus“ nicht leer ist. |
| Vermittler | Vermittler | Wert direkt kopiert |
| devname | target.hostname | Wert direkt kopiert |
| server_host | target.hostname | Wert wird direkt kopiert, wenn „message_type“ „Audit“ ist oder „loginStatus“ nicht leer ist. |
| server_host | intermediary.hostname | Wert wird direkt als Label kopiert, wenn er nicht „Audit“ oder „loginStatus“ ist. |
| deviceInformation | target.resource.name, target.resource.resource_type | device_name extrahiert und resource_type auf DEVICE festgelegt |
| component_name | additional.fields | Als Label mit dem Schlüssel „Component Name“ festlegen |
| process_name | principal.application | Wert direkt kopiert |
| Prozesspfad | target.file.full_path | Wert direkt kopiert |
| asset_os | target.platform | Auf WINDOWS setzen, wenn .Windows. übereinstimmt; LINUX, wenn .Linux übereinstimmt. |
| os_version | target.platform_version | Aus „asset_os“ extrahiert |
| asset_os | principal.platform | Auf WINDOWS setzen, wenn .Windows. übereinstimmt; LINUX, wenn .Linux übereinstimmt. |
| os_version | principal.platform_version | Aus „asset_os“ extrahiert |
| usr_name | userId | Wert direkt kopiert |
| Nutzer | userId | Wert direkt kopiert, wenn nicht WG oder ADDC |
| id | userId | Wert direkt kopiert |
| userId | target.user.userid | Wert wird direkt kopiert, wenn „message_type“ „Audit“ ist oder „loginStatus“ nicht leer ist. |
| userId | principal.user.userid | Wert wird direkt kopiert, wenn es sich nicht um „Audit“ oder „loginStatus“ handelt. |
| userDisplayName | target.user.user_display_name | Wert wird direkt kopiert, wenn „message_type“ „Audit“ ist oder „loginStatus“ nicht leer ist. |
| userDisplayName | principal.user.user_display_name | Wert wird direkt kopiert, wenn es sich nicht um „Audit“ oder „loginStatus“ handelt. |
| userPrincipalName | principal.user.userid | Wert direkt kopiert |
| Beschreibung | metadata.description | Wert wird direkt kopiert, wenn er nicht leer ist |
| Details | metadata.description | Wert wird direkt kopiert, wenn er nicht leer ist |
| mfaResult | metadata.description | Wert wird direkt kopiert, wenn er nicht leer ist |
| data7 | metadata.description | Wert wird direkt kopiert, wenn er nicht leer ist |
| message_type | metadata.description | Wert direkt kopiert, wenn „description_details“ leer ist |
| src_ip, srcip | principal.ip | Wert aus „src_ip“, falls nicht leer, andernfalls „src“, andernfalls „Source“, andernfalls „ipAddress“ |
| src_ip | principal.ip | Wird als IP-Adresse aus „src_ip“ extrahiert, sofern gültig |
| mac_address | principal.mac | Als Array verarbeitet, in Kleinbuchstaben umgewandelt, bei gültiger MAC-Adresse zusammengeführt |
| event_id | target.process.pid | Wert wird direkt kopiert, wenn „message_type“ „Audit“ ist oder „loginStatus“ nicht leer ist. |
| event_id | metadata.product_log_id | Wert wird direkt kopiert, wenn es sich nicht um „Audit“ oder „loginStatus“ handelt. |
| event_type | metadata.event_type | Wert direkt kopiert |
| Schweregrad | security_result.severity | Auf INFORMATIONAL festgelegt, wenn „Niedrig“ oder leer; MEDIUM, wenn „Mittel“; HIGH, wenn „Hoch“; CRITICAL, wenn „Kritisch“ |
| Aktion | security_result.action | Auf ALLOW setzen, wenn Übereinstimmungen (?i)Allow; BLOCK, wenn Übereinstimmungen (?i)Block; andernfalls action_details |
| security_action | security_result.action | Wert direkt kopiert |
| Regel | Regeln | Wert direkt kopiert |
| Regeln | security_result.rule_name | Wert direkt kopiert |
| Klassifizierung | security_result.summary | Wert direkt kopiert |
| Zuerst erfasst | security_result.detection_fields | Als Label mit dem Schlüssel „First Seen“ festlegen |
| Zuletzt erfasst | security_result.detection_fields | Als Label mit dem Schlüssel „Last Seen“ festlegen |
| Organisation | target.administrative_domain | Wert wird direkt kopiert, wenn „message_type“ „Audit“ ist oder „loginStatus“ nicht leer ist. |
| Organisation | additional.fields | Als Label mit dem Schlüssel „Organization“ festlegen, wenn es sich nicht um „Audit“ oder „loginStatus“ handelt |
| security_result | security_result | Zusammengeführt aus sec_result |
| metadata.vendor_name | Auf „FORTINET“ festgelegt | |
| metadata.product_name | Legen Sie diesen Wert auf „FORTINET_FORTIEDR“ fest. |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten