Fortinet FortiClient-Logs erfassen
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
- 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:
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 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: Kundennummer aus der Google SecOps Consoleendpoint: 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.
- USA:
log_type:FORTINET_FORTICLIENTingestion_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
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
- Melden Sie sich in der FortiClient EMS-Webkonsole an.
- Rufen Sie Endpunktprofile > Profile verwalten auf.
Endpunktprofil bearbeiten oder erstellen
- Wählen Sie ein vorhandenes Profil aus, um es zu bearbeiten, oder klicken Sie auf Hinzufügen, um ein neues Profil zu erstellen.
- Geben Sie im Feld Profilname einen aussagekräftigen Namen ein, z. B.
Chronicle-Logging-Profile. - Klicken Sie auf Erweitert.
- Klicken Sie auf den Tab XML-Konfiguration.
- 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>: Auf1setzen, um die Remote-Protokollierung zu aktivieren.<log_protocol>: Aufsyslogsetzen, um Logs an einen Syslog-Server zu senden. Verwenden Sie stattdessenfaz, 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>aufsyslogfestgelegt ist.<netlog_categories>: Geben Sie die Bitmaske der hochzuladenden Logkategorien ein:1= Traffic-Logs2= Logs zu Sicherheitslücken4= Ereignisprotokolle7= Alle Kategorien (1 + 2 + 4)
<log_upload_freq_minutes>: Geben Sie die Häufigkeit des Log-Uploads in Minuten ein (z. B.5für alle 5 Minuten).<level>: FortiClient-Protokollierungsstufe. Geben Sie Folgendes ein:0= Notfall1= Alert2= Kritisch3= Fehler4= Warnung5= Benachrichtigung6= 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
- Klicken Sie auf XML testen, um die XML-Konfiguration zu validieren.
- Klicken Sie auf Speichern, um das Profil zu speichern.
Profil auf Endpunkte anwenden
- Rufen Sie Endpunktrichtlinien > Richtlinien verwalten auf.
- Wählen Sie eine vorhandene Richtlinie aus oder klicken Sie auf Hinzufügen, um eine neue Richtlinie zu erstellen.
- Wählen Sie im Drop-down-Menü Profil das Profil aus, das Sie erstellt oder bearbeitet haben.
- Wählen Sie im Bereich Endpunktgruppen die Endpunktgruppen aus, auf die Sie die Richtlinie anwenden möchten.
- 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
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 -fWindows:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"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/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: |
| 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