Fortinet FortiClient-Logs erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie Fortinet FortiClient-Logs mit dem Bindplane-Agent in Google Security Operations aufnehmen.

FortiClient ist eine Endpunktsicherheitslösung, die Antiviren-, Webfilter-, VPN-, Schwachstellenscan- und Anwendungsfirewall-Funktionen für Windows-, macOS-, Linux- und Chromebook-Endpunkte bietet. FortiClient wird zentral über FortiClient EMS (Endpoint Management Server) verwaltet, der Sicherheitsrichtlinien und Konfigurationsprofile an Endpunkte sendet.

Hinweise

Prüfen Sie, ob die folgenden Voraussetzungen erfüllt sind:

  • Eine Google SecOps-Instanz
  • Windows Server 2016 oder höher oder Linux-Host mit systemd
  • Netzwerkverbindung zwischen Bindplane-Agent und FortiClient-Endpunkten
  • Wenn Sie den Agent hinter einem Proxy ausführen, müssen die Firewallports gemäß den Anforderungen des Bindplane-Agents geöffnet sein.
  • Privilegierter Zugriff auf die FortiClient EMS-Verwaltungskonsole
  • FortiClient EMS-Version 7.0 oder höher mit lizenzierten FortiClient-Endpunkten

Authentifizierungsdatei für die Aufnahme in Google SecOps abrufen

  1. Melden Sie sich in der Google SecOps-Konsole an.
  2. Rufen Sie die SIEM-Einstellungen > Collection Agent auf.
  3. Klicken Sie auf Herunterladen, um die Datei zur Authentifizierung der Aufnahme herunterzuladen.
  4. Speichern Sie die Datei sicher auf dem System, auf dem der Bindplane-Agent installiert wird.

Google SecOps-Kundennummer abrufen

  1. Melden Sie sich in der Google SecOps-Konsole an.
  2. Rufen Sie die SIEM-Einstellungen > Profile auf.
  3. 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

  1. Öffnen Sie die Eingabeaufforderung oder PowerShell als Administrator.
  2. Führen Sie dazu diesen Befehl aus:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. Warten Sie, bis die Installation abgeschlossen ist.

  4. Ü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

  1. Öffnen Sie ein Terminal mit Root- oder Sudo-Berechtigungen.
  2. 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.sh
    
  3. Warten Sie, bis die Installation abgeschlossen ist.

  4. Ü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:
    udplog:
    listen_address: "0.0.0.0:514"

exporters:
    chronicle/forticlient:
    compression: gzip
    creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
    customer_id: 'your-customer-id-here'
    endpoint: malachiteingestion-pa.googleapis.com
    log_type: FORTINET_FORTICLIENT
    raw_log_field: body
    ingestion_labels:
        env: production
        source: forticlient

service:
    pipelines:
    logs/forticlient_to_chronicle:
        receivers:
        - udplog
        exporters:
        - chronicle/forticlient

Konfigurationsparameter

Ersetzen Sie die folgenden Platzhalter:

Empfängerkonfiguration:

  • listen_address: IP-Adresse und Port, auf dem gelauscht werden soll. Verwenden Sie 0.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
  • customer_id: Kundennummer aus der Google SecOps Console
  • endpoint: Regionale Endpunkt-URL:
    • USA: malachiteingestion-pa.googleapis.com
    • Europa: europe-malachiteingestion-pa.googleapis.com
    • Asien: asia-southeast1-malachiteingestion-pa.googleapis.com
    • Eine vollständige Liste finden Sie unter Regionale Endpunkte.
  • log_type: FORTINET_FORTICLIENT
  • ingestion_labels: Optionale Labels im YAML-Format

Konfigurationsdatei speichern

Speichern Sie die Datei nach der Bearbeitung:

  • Linux: Drücken Sie Ctrl+O, dann Enter und dann Ctrl+X.
  • Windows: Klicken Sie auf Datei > Speichern.

Bindplane-Agent neu starten, um die Änderungen zu übernehmen

  • Linux

    sudo systemctl restart observiq-otel-collector
    
    1. Prüfen Sie, ob der Dienst ausgeführt wird:

      sudo systemctl status observiq-otel-collector
      
    2. Logs 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-collector
      
    • Services Console verwenden:

      1. Drücken Sie Win+R, geben Sie services.msc ein und drücken Sie die Eingabetaste.
      2. Suchen Sie nach observIQ OpenTelemetry Collector.
      3. Klicken Sie mit der rechten Maustaste und wählen Sie Neu starten aus.

      4. Prüfen Sie, ob der Dienst ausgeführt wird:

        sc query observiq-otel-collector
        
      5. Logs auf Fehler prüfen:

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

FortiClient-Endpunkt-Logging so konfigurieren, dass Logs an den BindPlane-Agent gesendet werden

Die Protokollierung von FortiClient-Endpunkten wird zentral über FortiClient EMS konfiguriert, indem Endpunktprofile mit XML-Konfiguration bearbeitet werden. EMS überträgt die Logging-Konfiguration an FortiClient-Endpunkte, die dann Logs direkt an den Syslog-Listener des Bindplane-Agents senden.

In FortiClient EMS anmelden

  1. Melden Sie sich in der FortiClient EMS-Webkonsole an.
  2. Rufen Sie Endpunktprofile > Profile verwalten auf.

Endpunktprofil bearbeiten oder erstellen

  1. Wählen Sie ein vorhandenes Profil aus, um es zu bearbeiten, oder klicken Sie auf Hinzufügen, um ein neues Profil zu erstellen.
  2. Geben Sie im Feld Profilname einen aussagekräftigen Namen ein, z. B. Chronicle-Logging-Profile.
  3. Klicken Sie auf Erweitert.
  4. Klicken Sie auf den Tab XML-Konfiguration.
  5. Klicken Sie auf Bearbeiten.

Remote-Logging in XML konfigurieren

In EMS werden zwei Bereiche angezeigt. Verwenden Sie den Bereich auf der rechten Seite, um die XML-Konfiguration zu bearbeiten.

Suchen Sie in <system> nach dem Abschnitt <log_settings>. Falls nicht, fügen Sie sie hinzu. Suchen Sie in <log_settings> nach dem Abschnitt <remote_logging> oder fügen Sie ihn hinzu und konfigurieren Sie ihn so:

<forticlient_configuration>
    <system>
    <log_settings>
        <onnet_local_logging>1</onnet_local_logging>
        <level>6</level>
        <log_events>ipsecvpn,sslvpn,scheduler,update,firewall,av,proxy,shield,webfilter,endpoint,fssoma,configd,vuln,sandboxing,antiexploit</log_events>
        <remote_logging>
        <log_upload_enabled>1</log_upload_enabled>
        <log_protocol>syslog</log_protocol>
        <netlog_server>192.168.1.100</netlog_server>
        <netlog_categories>7</netlog_categories>
        <log_upload_freq_minutes>5</log_upload_freq_minutes>
        </remote_logging>
    </log_settings>
    </system>
</forticlient_configuration>

Konfigurationsparameter:

  • <log_upload_enabled>: Auf 1 setzen, um die Remote-Protokollierung zu aktivieren.
  • <log_protocol>: Auf syslog setzen, um Logs an einen Syslog-Server zu senden. Verwenden Sie stattdessen faz, um Logs an FortiAnalyzer zu senden.
  • <netlog_server>: Geben Sie die IP-Adresse des Bindplane-Agent-Hosts ein (z. B. 192.168.1.100). Dieser Parameter wird nur verwendet, wenn <log_protocol> auf syslog festgelegt ist.
  • <netlog_categories>: Geben Sie die Bitmaske der hochzuladenden Logkategorien ein:
    • 1 = Traffic-Logs
    • 2 = Logs zu Sicherheitslücken
    • 4 = Ereignisprotokolle
    • 7 = Alle Kategorien (1 + 2 + 4)
  • <log_upload_freq_minutes>: Geben Sie die Häufigkeit des Log-Uploads in Minuten ein (z. B. 5 für alle 5 Minuten).
  • <level>: FortiClient-Protokollierungsstufe. Geben Sie Folgendes ein:
    • 0 = Notfall
    • 1 = Alert
    • 2 = Kritisch
    • 3 = Fehler
    • 4 = Warnung
    • 5 = Benachrichtigung
    • 6 = Information (empfohlen)
    • 7 = Debug
  • <log_events>: Durch Kommas getrennte Liste der zu protokollierenden FortiClient-Ereignisse oder -Prozesse. Fügen Sie die Ereignisse ein, die Sie erfassen möchten (z. B. ipsecvpn,sslvpn,firewall,av,webfilter,endpoint).

Profil speichern

  1. Klicken Sie auf XML testen, um die XML-Konfiguration zu validieren.
  2. Klicken Sie auf Speichern, um das Profil zu speichern.

Profil auf Endpunkte anwenden

  1. Rufen Sie Endpunktrichtlinien > Richtlinien verwalten auf.
  2. Wählen Sie eine vorhandene Richtlinie aus oder klicken Sie auf Hinzufügen, um eine neue Richtlinie zu erstellen.
  3. Wählen Sie im Drop-down-Menü Profil das Profil aus, das Sie erstellt oder bearbeitet haben.
  4. Wählen Sie im Bereich Endpunktgruppen die Endpunktgruppen aus, auf die Sie die Richtlinie anwenden möchten.
  5. Klicken Sie auf Speichern.

Das EMS überträgt die Profilkonfiguration bei der nächsten Telemetrie-Kommunikation an die Endpunkte. FortiClient-Endpunkte beginnen mit dem Senden von Logs an den Syslog-Listener des BindPlane-Agents.

Logweiterleitung prüfen

  1. Prüfen Sie auf dem Bindplane-Agent-Host die Agent-Logs, um zu bestätigen, dass Logs empfangen werden:

    Linux:

    sudo journalctl -u observiq-otel-collector -f
    

    Windows:

    type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
    
  2. Prüfen Sie auf einem FortiClient-Endpunkt, ob das Remote-Logging aktiviert ist. Sehen Sie dazu in den FortiClient-Logs nach:

    Windows:

    C:\Program Files\Fortinet\FortiClient\logs\
    

    macOS:

    /Library/Application Support/Fortinet/FortiClient/logs/
    

    Linux:

    /var/log/forticlient/
    
  3. Prüfen Sie in der Google SecOps-Konsole, ob FortiClient-Logs aufgenommen werden:

    • Rufen Sie die Suche auf.
    • Geben Sie eine Suchanfrage für FortiClient-Logs ein (z. B. metadata.log_type = "FORTINET_FORTICLIENT").
    • Prüfen Sie, ob Logs in den Suchergebnissen angezeigt werden.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
emsserial, devid, usingpolicy, itime, fctsn, logver, site, fctver, browsetime, event_id, SubjectUserName, SubjectLogonId, ThreadID additional.fields Labels, die mit Schlüssel und Wert aus jedem Feld erstellt und in „additional.fields“ zusammengeführt wurden
timestamp metadata.collected_timestamp Als UNIX-Zeitstempel geparst
ts metadata.event_timestamp Geparsed mit Datumsfilter unter Verwendung der Formate „MMM d HH:mm:ss“, „MMM  d HH:mm:ss“, „JJJJ-MM-TT HH:mm:ss“
deviceip, client_ip, devicemac, hostname, user, uid metadata.event_type Auf USER_RESOURCE_ACCESS festgelegt, wenn Nutzer-/UID und Maschinen-ID vorhanden sind; USER_UNCATEGORIZED, wenn Maschinen-ID vorhanden ist; andernfalls GENERIC_EVENT
eventtype metadata.product_event_type Wert direkt kopiert
id metadata.product_log_id In String konvertiert, Wert kopiert
Dienst network.application_protocol In Großbuchstaben und dann auf das vordefinierte Protokoll festgelegt, wenn es mit der Liste übereinstimmt (z.B. „SSH“ für „22“, „SSH“, „SSHD“; „HTTP“ für „80“, „8080“, „HTTP“), andernfalls Dienst, falls in erweiterter Liste, andernfalls leer
direction network.direction Auf INBOUND gesetzt, wenn (?i)inbound zutrifft; auf OUTBOUND gesetzt, wenn (?i)outbound zutrifft
Proto network.ip_protocol Auf „TCP“ festlegen, wenn proto == „6“
rcvdbyte network.received_bytes In „uinteger“ konvertiert, Wert kopiert, wenn nicht leer/0
sentbyte network.sent_bytes In „uinteger“ konvertiert, Wert kopiert, wenn nicht leer/0
sessionid network.session_id Wert direkt kopiert
pcdomain principal.administrative_domain Wert direkt kopiert
srcproduct principal.application Wert direkt kopiert
Hostname principal.hostname Wert direkt kopiert
deviceip, client_ip principal.ip Wert aus „deviceip“, falls nicht leer, andernfalls aus „client_ip“, falls gültige IP
devicemac principal.mac In MAC-Format konvertiert, Wert kopiert, falls gültig
os, source principal.platform Auf WINDOWS setzen, wenn os/source mit (?i)windows übereinstimmt; auf MAC, wenn mit (?i)mac|ios; auf LINUX, wenn mit (?i)linux.
source_ver principal.platform_version Wert direkt kopiert
srcport principal.port In Ganzzahl konvertiert, Wert kopiert
ProcessId principal.process.pid Wert direkt kopiert
srcname, source_type, type principal.resource.attribute.labels Labels, die mit Schlüssel und Wert aus jedem Feld erstellt und in „attribute.labels“ zusammengeführt wurden
devname principal.resource.name Wert direkt kopiert
ProviderGuid principal.resource.product_object_id Wert direkt kopiert
Untertyp principal.resource.resource_subtype Wert direkt kopiert
URL principal.url Wert direkt kopiert
uid, fctuid principal.user.product_object_id Wert aus „uid“, falls nicht leer, andernfalls „fctuid“
Nutzer principal.user.user_display_name Wert direkt kopiert
Nutzer principal.user.userid Wert direkt kopiert
SubjectUserSid principal.user.windows_sid Wert kopiert, wenn er mit dem Regex für die Sitzungs-ID übereinstimmt
utmaction security_result.action Auf ALLOW setzen, wenn in [accept,allow,passthrough,pass,permit,detected]; auf BLOCK setzen, wenn in [deny,dropped,blocked,block]; andernfalls UNKNOWN_ACTION
utmevent security_result.category_details Wert direkt kopiert
utmaction security_result.description Auf „utmaction: festgelegt
userinitiated security_result.detection_fields Label mit dem Schlüssel „userinitiated“ und dem Wert aus „userinitiated“ erstellt, zusammengeführt
level security_result.severity Auf INFORMATIONAL setzen, wenn level == „info“
Bedrohung security_result.threat_name Wert direkt kopiert
emshostname, remotename target.hostname Wert aus „emshostname“, falls nicht leer, andernfalls „remotename“
dstip target.ip Gültige IP-Adresse aus „dstip“ extrahiert
dstport target.port In Ganzzahl konvertiert, Wert kopiert, wenn nicht 0
metadata.product_name Auf „FORTINET_FORTICLIENT“ festlegen
metadata.vendor_name Auf „FORTINET_FORTICLIENT“ festlegen

Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten