Forescout NAC-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie Forescout Network Access Control (NAC)-Logs mit Bindplane in Google Security Operations aufnehmen. Der Parser verarbeitet sowohl Syslog- als auch CEF-formatierte Logs von Forescout NAC. Felder werden mithilfe von Grok-Mustern extrahiert, dem Unified Data Model (UDM) zugeordnet und Ereignisse werden anhand von Keywords und extrahierten Feldern kategorisiert. Dabei werden An- und Abmeldungen, Netzwerkverbindungen, E-Mail-Ereignisse und Systemstatusaktualisierungen berücksichtigt. Für die Verarbeitung von „CounterACT“- und „Virtual Firewall“-Ereignissen wird eine spezielle Logik implementiert, einschließlich der Zuordnung von Schweregraden und der Anreicherung des Nutzerkontexts.
Hinweise
Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:
- Google SecOps-Instanz
- Windows 2016 oder höher oder ein Linux-Host mit
systemd
- Wenn die Ausführung hinter einem Proxy erfolgt, sind die Firewallports geöffnet.
- ForeScout CounterAct v8.0 oder die neueste Version muss installiert sein.
- Das ForeScout CounterAct-Kernmodul für Erweiterungen, Syslog-Plug-in v3.5, sollte installiert sein.
- Privilegierter Zugriff auf Forescout Appliance und CounterACT-Plug-in
Authentifizierungsdatei für die Aufnahme in Google SecOps abrufen
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie SIEM-Einstellungen > Collection Agents auf.
- Laden Sie die Authentifizierungsdatei für die Aufnahme herunter. Speichern Sie die Datei sicher auf dem System, auf dem BindPlane installiert wird.
Google SecOps-Kundennummer abrufen
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie die SIEM-Einstellungen > „Profil“ 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" /quiet
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.sh
Zusätzliche Installationsressourcen
Weitere Installationsoptionen finden Sie im Installationsleitfaden.
BindPlane-Agent zum Erfassen von Syslog-Daten und Senden an Google SecOps konfigurieren
- Rufen Sie die Konfigurationsdatei auf:
- Suchen Sie die Datei
config.yaml
. Normalerweise befindet es sich unter Linux im Verzeichnis/etc/bindplane-agent/
oder unter Windows im Installationsverzeichnis. - Öffnen Sie die Datei mit einem Texteditor (z. B.
nano
,vi
oder Notepad).
- Suchen Sie die Datei
Bearbeiten Sie die Datei
config.yaml
so:receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds_file_path: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization ingestion_labels: log_type: 'FORESCOUT_NAC' raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
Ersetzen Sie den Port und die IP-Adresse nach Bedarf in Ihrer Infrastruktur.
Ersetzen Sie
<customer_id>
durch die tatsächliche Kunden-ID.Aktualisieren Sie
/path/to/ingestion-authentication-file.json
auf den Pfad, in dem die Authentifizierungsdatei im Abschnitt Authentifizierungsdatei für die Aufnahme von Google SecOps abrufen gespeichert wurde.
Bindplane-Agent neu starten, um die Änderungen zu übernehmen
Führen Sie den folgenden Befehl aus, um den Bindplane-Agent unter Linux neu zu starten:
sudo systemctl restart bindplane-agent
Wenn Sie den Bindplane-Agent unter Windows neu starten möchten, können Sie entweder die Konsole Services verwenden oder den folgenden Befehl eingeben:
net stop BindPlaneAgent && net start BindPlaneAgent
CounterACT Syslog-Plug-in installieren
- Rufen Sie die Seite Forescount Base Plugins auf und laden Sie die Plug-in-Datei .fpi herunter.
- Speichern Sie die Datei auf dem Computer, auf dem die CounterACT Console installiert ist.
- Melden Sie sich in der CounterACT Console an.
- Wählen Sie Optionen > „Plug-ins“ > „Installieren“ aus.
- Suchen Sie nach der gespeicherten FPI-Datei des Plug-ins und wählen Sie sie aus.
- Klicken Sie auf Installieren.
- Akzeptieren Sie die Lizenzvereinbarung, um fortzufahren.
- Klicken Sie nach Abschluss der Installation auf Schließen.
- Wählen Sie das Plug-in im Bereich Plug-in aus und klicken Sie auf Start.
- Wählen Sie die CounterACT Appliances aus, auf denen das Plug-in gestartet werden soll. Es wird empfohlen, das Plug-in auf allen Appliances in der Umgebung auszuführen.
- Klicken Sie auf OK.
- Klicken Sie auf Schließen.
Syslog im Forescout CounterACT Syslog-Plug-in konfigurieren
- Klicken Sie im Bereich Plug-ins auf Syslog > Konfigurieren.
- Wählen Sie im Dialogfeld ein beliebiges Gerät oder den Enterprise Manager aus und klicken Sie auf OK.
- Klicken Sie unter Send Events To (Ereignisse senden an) auf Add (Hinzufügen).
- Geben Sie die folgenden Konfigurationsdetails an:
- Serveradresse: Geben Sie die IP-Adresse des Bindplane-Agents ein.
- Serverport: Geben Sie die Portnummer des Bindplane-Agents ein (z. B.
514
für UDP). - Server Protocol: Wählen Sie UDP aus.
- Identität: Freitextfeld zur Identifizierung der Syslog-Nachricht.
- Optional: Einrichtung: Syslog-Nachrichteneinrichtung, die als Teil des Felds „Nachrichtenpriorität“ übertragen wird. Wenn der Wert für die Einrichtung nicht angegeben ist, wird er auf
local5
festgelegt. - Schweregrad: Wählen Sie Info aus.
- Rufen Sie den Tab Syslog-Trigger auf.
- Aktivieren Sie nicht das Kästchen Nur Nachrichten senden, die von der Aktion „Nachricht an Syslog senden“ generiert wurden.
- Aktivieren Sie nur das Kästchen Include timestamp and CounterACT device identifier in all messages (Zeitstempel und CounterACT-Geräte-ID in alle Nachrichten einfügen).
- Klicken Sie auf Optionen, um festzulegen, welche Ereignistypen Syslog-Meldungen auslösen:
- Logs für NAC-Richtlinien einbeziehen.
- Ereignisse für Übereinstimmung und Nichtübereinstimmung von NAC-Richtlinien einbeziehen.
- Wählen Sie andere Ereignisse aus, falls verfügbar.
- Rufen Sie den Tab Standardmäßige Aktionskonfiguration auf.
- Geben Sie die folgenden Konfigurationsdetails an:
- Serveradresse: Geben Sie die IP-Adresse des Bindplane-Agents ein.
- Serverport: Geben Sie die Portnummer des Bindplane-Agents ein (z. B.
514
für UDP). - Server Protocol: Wählen Sie UDP aus.
- Nachrichtenidentität: Freitextfeld zur Identifizierung der Syslog-Nachricht.
- Optional: Einrichtung: Syslog-Einrichtung, die als Teil des Prioritätsfelds der Nachricht übertragen wird. Wenn der Wert für die Einrichtung nicht angegeben ist, wird er auf
local5
gesetzt. - Schweregrad: Wählen Sie Info aus.
- Klicken Sie auf OK.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
act |
security_result.action_details |
Direkt aus dem Feld act in CEF-Logs zugeordnet. |
app |
network.application_protocol |
Direkt aus dem Feld app in CEF-Logs zugeordnet. |
Available_memory |
additional.fields |
Aus kv_data extrahiert, wenn event_type „Systemstatistiken“ ist. Der Schlüssel ist „Available memory“ (Verfügbarer Speicher) und der Wert ist der extrahierte String. |
Available_swap |
additional.fields |
Aus kv_data extrahiert, wenn event_type „Systemstatistiken“ ist. Der Schlüssel ist „Available swap“ und der Wert ist der extrahierte String. |
application_status |
additional.fields |
Wird aus kv_data extrahiert, wenn event_type „Application status“ (Anwendungsstatus) ist. Der Schlüssel ist „Application status“ (Antragsstatus) und der Wert ist der extrahierte String. |
Assigned_hosts |
additional.fields |
Wird aus kv_log_data extrahiert, wenn event_type „Application status“ (Anwendungsstatus) ist. Der Schlüssel ist „Assigned hosts“ und der Wert ist der extrahierte String. |
Category |
security_result.description |
Teil von security_result.description , wenn et_lower „nac policy log“ ist. Mit anderen Details verkettet. |
command |
principal.process.command_line |
Aus dem Feld rnmsg in CEF-Logs extrahiert, wenn es mit „command:“ beginnt. |
Connected_clients |
additional.fields |
Wird aus kv_log_data extrahiert, wenn event_type „Application status“ (Anwendungsstatus) ist. Der Schlüssel ist „Connected clients“ und der Wert ist der extrahierte String. |
CPU_usage |
additional.fields |
Aus kv_data extrahiert, wenn event_type „Systemstatistiken“ ist. Der Schlüssel ist „CPU-Auslastung“ und der Wert ist der extrahierte String. |
cs1 |
additional.fields |
Direkt aus dem Feld cs1 in CEF-Logs zugeordnet. Der Schlüssel ist „Compliancy Policy Name“. |
cs2 |
additional.fields |
Direkt aus dem Feld cs2 in CEF-Logs zugeordnet. Der Schlüssel ist „Compliancy Policy Subrule Name“. |
cs3 |
additional.fields |
Direkt aus dem Feld cs3 in CEF-Logs zugeordnet. Der Schlüssel ist „Host Compliancy Status“. |
cs4 |
additional.fields |
Direkt aus dem Feld cs4 in CEF-Logs zugeordnet. Der Schlüssel ist „Compliancy Event Trigger“. |
data |
security_result.description |
Wird in verschiedenen Teilen des Parsers verwendet, um Informationen zu extrahieren und zu den endgültigen UDM-Feldern beizutragen. Nicht direkt einem einzelnen UDM-Feld zugeordnet. |
details |
security_result.description |
Wird in mehreren Fällen verwendet, um security_result.description zu füllen, z. B. beim Parsen von „Log“-Ereignissen und Änderungen an Nutzersitzungen. Kann für spezifische Informationen weiter analysiert werden. |
Destination |
target.ip , target.hostname |
Wird aus kv_data oder data geparst. Wenn sie in eine IP-Adresse umgewandelt werden kann, wird sie target.ip zugeordnet. Andernfalls wird sie target.hostname zugeordnet. |
deviceExternalId |
about.asset.asset_id |
Direkt aus dem Feld deviceExternalId in CEF-Protokollen zugeordnet, mit dem Präfix „Forescout.CommandCenter:“. |
dhost |
target.hostname |
Direkt aus dem Feld dhost in CEF-Logs zugeordnet. |
dmac |
target.mac |
Direkt aus dem Feld dmac in CEF-Logs zugeordnet. |
dntdom |
target.administrative_domain |
Direkt aus dem Feld dntdom in CEF-Logs zugeordnet. |
dst |
target.ip |
Direkt aus dem Feld dst in CEF-Logs zugeordnet. |
dpt |
target.port |
Direkt aus dem Feld dpt in CEF-Logs zugeordnet. |
duser |
target.user.user_display_name |
Direkt aus dem Feld duser in CEF-Logs zugeordnet. |
dvc |
about.ip |
Direkt aus dem Feld dvc in CEF-Logs zugeordnet. |
dvchost |
about.hostname |
Direkt aus dem Feld dvchost in CEF-Logs zugeordnet. |
EM_connection_status |
additional.fields |
Wird aus kv_log_data extrahiert, wenn event_type „Application status“ (Anwendungsstatus) ist. Der Schlüssel ist „EM connection status“ und der Wert ist der extrahierte String. |
Engine_status |
additional.fields |
Wird aus kv_log_data extrahiert, wenn event_type „Application status“ (Anwendungsstatus) ist. Der Schlüssel ist „Engine status“ und der Wert ist der extrahierte String. |
event_type |
metadata.description , security_result.summary |
Aus der Lognachricht geparst. Wird verwendet, um den UDM-Ereignistyp und andere Felder zu bestimmen. Wenn es sich bei dem Ereignis um ein „GENERIC_EVENT“ handelt, wird es auch für die Beschreibung verwendet. |
eventtype |
additional.fields |
Direkt aus dem Feld eventtype in CEF-Logs zugeordnet. Der Schlüssel ist „eventtype“. |
externalId |
metadata.product_log_id |
Direkt aus dem Feld externalId in CEF-Logs zugeordnet. |
from\[...\] to\[...\] |
principal.ip , target.ip |
Extrahiert Quell- und Ziel-IPs aus dem Muster „von[...] bis[...]“. |
Host |
principal.ip , principal.hostname |
Wird aus kv_data geparst, wenn et_lower „block event“ ist. Wenn in eine IP-Adresse konvertierbar, wird sie principal.ip zugeordnet, andernfalls principal.hostname . |
Hostname |
principal.hostname , principal.asset.hostname |
Wird principal.hostname und principal.asset.hostname zugeordnet, wenn in Ereignissen zur Erkennung von Property-Änderungen vorhanden. |
Installed_Plugins |
additional.fields |
Wird aus kv_log_data extrahiert, wenn event_type „Application status“ (Anwendungsstatus) ist. Der Schlüssel ist „Installed Plugins“ und der Wert ist der extrahierte String. |
iporhost |
intermediary.ip , intermediary.hostname |
Aus header_data geparst. Wenn in eine IP-Adresse konvertierbar, wird sie intermediary.ip zugeordnet, andernfalls intermediary.hostname . |
Is Virtual Firewall blocking rule |
security_result.action , security_result.rule_name |
Wenn „true“, wird security_result.action auf „BLOCK“ und security_result.rule_name auf „Virtual Firewall blocking“ festgelegt. |
log_description |
security_result.summary |
Direkt security_result.summary zugeordnet, sofern vorhanden. |
log_type |
metadata.log_type |
Auf den konstanten Wert „FORESCOUT_NAC“ festgelegt. |
MAC |
principal.mac |
Aus kv_data in Ereignissen für erkannte Property-Änderungen geparst und als MAC-Adresse formatiert. |
mail_from |
network.email.from |
Direkt aus dem Feld mail_from zugeordnet, das aus mail_details extrahiert wurde. |
mail_subject |
network.email.subject |
Direkt aus dem Feld mail_subject zugeordnet, das aus mail_details extrahiert wurde. |
mail_to |
network.email.to |
Direkt aus dem Feld mail_to zugeordnet, das aus mail_details extrahiert wurde. |
Match |
security_result.rule_name |
Direkt aus dem Feld Match zugeordnet, wenn et_lower „nac policy log“ ist. |
metadata.event_type |
metadata.event_type |
Wird durch verschiedene Bedingungen im Parser bestimmt, einschließlich des Vorhandenseins bestimmter Felder und Keywords in der Log-Nachricht. Die Standardeinstellung ist GENERIC_EVENT und wird anhand der geparsten Daten aktualisiert. Beispiele sind USER_LOGIN , USER_LOGOUT , NETWORK_CONNECTION , SCAN_NETWORK , STATUS_UPDATE , EMAIL_TRANSACTION und USER_UNCATEGORIZED . |
metadata.product_name |
metadata.product_name |
Für die meisten Ereignisse auf „FORESCOUT NAC“ festgelegt oder auf den Wert des Felds product , falls es vorhanden ist. Bei CEF-Ereignissen ist der Wert auf „CounterAct“ festgelegt. |
metadata.vendor_name |
metadata.vendor_name |
Für die meisten Ereignisse auf „FORESCOUT“ festgelegt. Bei CEF-Ereignissen wird der Wert aus dem Feld cs1Label übernommen, sofern es vorhanden ist, oder auf „ForeScout Technologies“ festgelegt. |
msg |
metadata.description |
Direkt aus dem Feld msg in CEF-Logs zugeordnet. |
pid |
intermediary.process.pid |
Direkt aus dem Feld pid zugeordnet, das aus header_data extrahiert wurde. |
policy_details |
security_result.description |
Teil von security_result.description , wenn et_lower „nac policy log“ ist. Mit anderen Details verkettet. |
product |
metadata.product_name |
Direkt metadata.product_name zugeordnet, sofern vorhanden. |
proto |
network.ip_protocol |
Direkt aus dem Feld proto in CEF-Logs zugeordnet. |
Reason |
security_result.description |
Direkt aus dem Feld Reason zugeordnet, wenn et_lower „Blockereignis“ ist. |
resource |
principal.resource.name |
Direkt aus dem Feld resource in CEF-Logs zugeordnet. |
rnmsg |
security_result.description , principal.process.command_line |
Wenn sie mit „command:“ beginnt, wird der Teil nach „command:“ principal.process.command_line zugeordnet. Andernfalls wird sie security_result.description zugeordnet. |
rt |
metadata.event_timestamp |
Direkt aus dem Feld rt in CEF-Protokollen zugeordnet und in einen Zeitstempel konvertiert. |
Rule |
security_result.rule_id |
Direkt aus dem Feld Rule zugeordnet, wenn et_lower „nac policy log“ ist. |
security_result.severity |
security_result.severity |
Abgeleitet aus dem Feld severity_level . 0–3 entspricht NIEDRIG, 4–6 entspricht MITTEL, 7–8 entspricht HOCH und 9–10 entspricht KRITISCH. |
security_result.severity_details |
security_result.severity_details |
Direkt aus dem Feld severity in CEF-Logs zugeordnet. |
Service |
target.port , network.ip_protocol |
Wird analysiert, um Port und Protokoll zu extrahieren. Der Port ist target.port und das Protokoll network.ip_protocol zugeordnet. |
session_id |
network.session_id |
Direkt aus dem Feld session_id zugeordnet. |
severity |
security_result.severity_details |
Direkt aus dem Feld severity in CEF-Logs zugeordnet. |
severity_level |
security_result.severity |
Wird verwendet, um die security_result.severity zu bestimmen. |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten