Fortinet FortiClient-Logs erfassen

Parserversion:5.0

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-, Sicherheitslücken-Scan- und Anwendungsfirewall-Funktionen für Windows-, macOS-, Linux- und Chromebook-Endpunkte bietet. FortiClient wird zentral über FortiClient EMS (Endpoint Management Server) verwaltet, das Sicherheitsrichtlinien und Konfigurationsprofile an Endpunkte überträgt.

Hinweis

Folgende Voraussetzungen müssen erfüllt sein:

  • 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 Google SecOps-Aufnahme 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 Authentifizierungsdatei für die 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.

Windows-Installation

  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. Warte, bis die Installation abgeschlossen ist.

  4. Überprüfen Sie die Installation mit folgendem Befehl:

    sc query observiq-otel-collector
    

Der Dienst sollte als RUNNING 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. Warte, 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 im Installationsleitfaden 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: Kunden-ID 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:

    • Über 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-Agenten 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, das Sie bearbeiten möchten, 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 das Remote-Logging zu aktivieren.
  • <log_protocol>: Auf syslog festgelegt, um Logs an einen Syslog-Server zu senden. Verwenden Sie stattdessen faz, um Protokolle 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 Protokollkategorien 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-Logging-Ebene. Geben Sie einen der folgenden Werte ein:
    • 0 = Notfall
    • 1 = Benachrichtigung
    • 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 überprüfen

  1. Prüfen Sie auf dem BindPlane-Agent-Host die Agentenlogs, 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 Console, 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 Mit Datumsfilter mit den Formaten „MMM d HH:mm:ss“, „MMM  d HH:mm:ss“, „yyyy-MM-dd HH:mm:ss“ geparst
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; GENERIC_EVENT andernfalls
eventtype metadata.product_event_type Wert direkt kopiert
id metadata.product_log_id In String umgewandelt, 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 auf den Dienst, wenn er in der erweiterten Liste enthalten ist, 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-Adresse
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 übereinstimmt; auf LINUX, wenn mit (?i)linux übereinstimmt.
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
subtype 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 regulären Ausdruck für die SID ü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“ wurde erstellt und zusammengeführt.
level security_result.severity Wird auf INFORMATIONAL gesetzt, 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 umgewandelt, Wert kopiert, wenn nicht 0
metadata.product_name Auf „FORTINET_FORTICLIENT“ festgelegt
metadata.vendor_name Auf „FORTINET_FORTICLIENT“ festgelegt
sec_action security_result.action Aus dem Änderungsprotokoll zugeordnet
date" and time metadata.event_timestamp Aus dem Änderungsprotokoll zugeordnet

Änderungsprotokoll

Änderungsprotokoll für diesen Parser ansehen

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