AlgoSec Security Management-Protokolle erfassen
In diesem Dokument wird beschrieben, wie Sie AlgoSec-Sicherheitsmanagement-Logs mithilfe eines Bindplane-Agents in Google Security Operations aufnehmen. Der Parser extrahiert die Felder und verarbeitet sowohl CEF- als auch nicht CEF-formatierte Protokolle. Es werden gängige Felder wie Zeitstempel, IP-Adressen und Ereignisdetails analysiert und dann basierend auf dem Produkt (Suite, Firewall Analyzer, FireFlow) und der Ereignis-ID dem UDM zugeordnet. Dabei werden die entsprechenden Metadaten- und Sicherheitsergebnisfelder festgelegt. Außerdem werden bestimmte Ereignistypen wie Anmeldung/Abmeldung, administrative Benachrichtigungen und Analyseberichte verarbeitet, wobei relevante Details extrahiert und Schweregrade festgelegt werden.
Hinweise
- Sie benötigen eine Google SecOps-Instanz.
- Sie müssen Windows 2016 oder höher oder einen Linux-Host mit
systemd
verwenden. - Wenn die Ausführung hinter einem Proxy erfolgt, müssen die Firewallports geöffnet sein.
- Sie benötigen Berechtigungen für AlgoSec Firewall Analyzer, FireFlow und AppViz.
Authentifizierungsdatei für die Aufnahme in Google SecOps abrufen
- Melden Sie sich in der Google SecOps Console an.
- Gehen Sie zu SIEM-Einstellungen > Erfassungsagenten.
- Lade die Datei zur Authentifizierung der Datenaufnahme 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 Console an.
- Gehen Sie zu SIEM-Einstellungen > Profil.
- Kopieren und speichern Sie die Kundennummer aus dem Bereich Organisationsdetails.
Bindplane-Agent installieren
Windows-Installation
- Öffnen Sie die Eingabeaufforderung oder die 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
Weitere Installationsressourcen
- Weitere Installationsoptionen finden Sie in diesem Installationsleitfaden.
Bindplane-Agent so konfigurieren, dass er Syslog-Daten aufnimmt und an Google SecOps sendet
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: '/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: ALGOSEC 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 Kundennummer.Aktualisieren Sie
/path/to/ingestion-authentication-file.json
im Abschnitt Authentifizierungsdatei für die Datenaufnahme von Google SecOps abrufen auf den Pfad, unter dem die Authentifizierungsdatei gespeichert wurde.
Starten Sie den Bindplane-Agent neu, um die Änderungen anzuwenden
Führen Sie den folgenden Befehl aus, um den Bindplane-Agenten unter Linux neu zu starten:
sudo systemctl restart bindplane-agent
Sie können den Bindplane-Agenten unter Windows entweder über die Dienste-Konsole oder mit dem folgenden Befehl neu starten:
net stop BindPlaneAgent && net start BindPlaneAgent
Syslog für Firewall Analyzer konfigurieren
- Melden Sie sich mit SSH bei der AFA-Appliance an.
Rufen Sie das Konfigurationsverzeichnis von syslog-ng auf:
cd /etc/syslog-ng
Sichern Sie die vorhandene Konfiguration:
cp syslog-ng.conf syslog-ng.conf.orig
Bearbeiten Sie die syslog-ng-Konfigurationsdatei:
vi syslog-ng.conf
Fügen Sie die folgenden Zeilen hinzu, um den Remote-Syslog-Server zu definieren:
destination d_remote { udp("<bindplane-server-ip>" port(514)); }; log { source(s_sys); destination(d_remote); };
- Ersetzen Sie
<bindplane-server-ip>
durch die IP-Adresse des Bindplane-Agents.
- Ersetzen Sie
Speichern Sie die Datei und beenden Sie den Editor.
Starten Sie den syslog-ng-Dienst neu, um die Änderungen anzuwenden:
service syslog-ng restart
Optional: Syslog-Konfiguration prüfen:
- Gehen Sie zu Verwaltung > Syslog-Servereinstellungen.
- Klicken Sie auf Konnektivität testen.
Syslog für FireFlow konfigurieren
- Melden Sie sich auf dem FireFlow-Computer als root an.
Öffnen Sie die Datei
/etc/syslog.conf
zur Bearbeitung.vi /etc/syslog.conf
Fügen Sie der Datei die folgende Zeile hinzu:
local0.*@<BindplaneAgent>
.- Ersetzen Sie
<BindplaneAgent>
durch die IP-Adresse des Bindplane-Agent-Servers.
- Ersetzen Sie
Syslog für AppViz konfigurieren
- Melden Sie sich über SSH in der AppViz-Appliance an.
Rufen Sie das Konfigurationsverzeichnis von syslog-ng auf:
cd /etc/syslog-ng
Sichern Sie die vorhandene Konfiguration:
cp syslog-ng.conf syslog-ng.conf.orig
Bearbeiten Sie die syslog-ng-Konfigurationsdatei:
vi syslog-ng.conf
Fügen Sie Folgendes hinzu, um den Remote-Syslog-Server zu definieren:
destination d_remote { udp("<bindplane-server-ip>" port(514)); }; log { source(s_sys); destination(d_remote); };
- Ersetzen Sie
<bindplane-server-ip>
durch die IP-Adresse des Bindplane-Agents.
- Ersetzen Sie
Speichern Sie die Datei und beenden Sie den Editor.
Starten Sie den syslog-ng-Dienst neu, um die Änderungen anzuwenden:
service syslog-ng restart
Syslog-Konfiguration prüfen:
- Klicken Sie in der AppViz-Benutzeroberfläche auf Verwaltung > Syslog-Servereinstellungen.
- Klicken Sie auf Konnektivität testen.
Syslog für Anmelde- und Abmeldeereignisse konfigurieren
- Melden Sie sich über SSH bei der ASMS-Appliance an.
Rufen Sie das Konfigurationsverzeichnis von syslog-ng auf:
cd /etc/syslog-ng
Sichern Sie die vorhandene Konfiguration:
cp syslog-ng.conf syslog-ng.conf.orig
Bearbeiten Sie die syslog-ng-Konfigurationsdatei:
vi syslog-ng.conf
Fügen Sie Folgendes hinzu, um den Remote-Syslog-Server zu definieren:
destination d_remote { udp("<bindplane-server-ip>" port(514)); }; log { source(s_sys); destination(d_remote); };
- Ersetzen Sie
<bindplane-server-ip>
durch die IP-Adresse Ihres syslog-Servers.
- Ersetzen Sie
Speichern Sie die Datei und beenden Sie den Editor.
Starten Sie den syslog-ng-Dienst neu, um die Änderungen anzuwenden:
service syslog-ng restart
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
by_user |
principal.user.user_display_name |
Dem UDM-Feld wird der Wert des Felds by_user aus dem Rohprotokoll zugewiesen. |
collection_time |
metadata.event_timestamp |
Die Felder „seconds“ und „nanos“ werden kombiniert, um einen Zeitstempel zu erstellen. |
comm |
target.process.command_line |
Dem UDM-Feld wird der Wert des Felds comm zugewiesen, der mithilfe von Grok aus dem Feld desc extrahiert wurde. |
datetime |
metadata.event_timestamp |
Datum und Uhrzeit werden aus dem Rohprotokoll extrahiert und zum Ausfüllen des Ereigniszeitstempels verwendet. |
desc |
metadata.description |
Der Wert des Felds desc aus dem Rohprotokoll wird diesem UDM-Feld zugewiesen, wenn keine andere Beschreibung verfügbar ist. |
dest_ip |
target.ip |
Dem UDM-Feld wird der Wert des Felds dest_ip aus dem Rohprotokoll zugewiesen. |
dest_port |
target.port |
Dem UDM-Feld wird der Wert des Felds dest_port aus dem Rohprotokoll zugewiesen. |
details |
security_result.summary |
Dem UDM-Feld wird der Wert des Felds details aus dem Rohprotokoll zugewiesen. |
device |
principal.asset.hostname |
Dem UDM-Feld wird der Wert des Felds device aus dem Rohprotokoll zugewiesen. |
dst_ip |
target.ip |
Dem UDM-Feld wird der Wert des Felds dst_ip aus dem Rohprotokoll zugewiesen. |
dst_port |
target.port |
Dem UDM-Feld wird der Wert des Felds dst_port aus dem Rohprotokoll zugewiesen. |
event_id |
metadata.product_event_type |
Dem UDM-Feld wird der Wert des Felds event_id aus dem Rohprotokoll zugewiesen. Außerdem wird es in der Parserlogik verwendet, um metadata.event_type und andere Felder zu bestimmen. |
event_name |
metadata.product_event_type |
Dem UDM-Feld wird der Wert des Felds event_name aus dem Rohprotokoll zugewiesen. |
firewall |
target.hostname |
Dem UDM-Feld wird der Wert des Felds firewall aus dem Rohprotokoll zugewiesen. |
host |
principal.hostname |
Dem UDM-Feld wird der Wert des Felds host aus dem Rohprotokoll zugewiesen. |
host_type |
principal.asset.category |
Dem UDM-Feld wird der Wert des Felds host_type aus dem Rohprotokoll zugewiesen. |
iporhost |
principal.ip / principal.hostname / target.ip / target.hostname / observer.ip / observer.hostname |
Wenn der Wert eine IP-Adresse ist, wird er je nach Protokollquelle und Ereignistyp principal.ip , target.ip oder observer.ip zugeordnet. Bei einem Hostnamen wird er principal.hostname , target.hostname oder observer.hostname zugeordnet. |
IP |
principal.ip |
Dem UDM-Feld wird der Wert des Felds IP aus dem Rohprotokoll zugewiesen. |
kv_data |
security_result.summary |
Dem UDM-Feld wird der Wert des Felds kv_data aus dem Rohprotokoll zugewiesen. |
log_type |
metadata.log_type |
Hartcodiert auf ALGOSEC . |
metric |
security_result.action_details |
Dem UDM-Feld wird der Wert des Felds metric aus dem Rohprotokoll zugewiesen. |
msg |
security_result.summary /security_result.description |
Der Wert des Felds msg aus dem Rohprotokoll wird je nach Kontext entweder in die Zusammenfassung oder in die Beschreibung des Sicherheitsergebnisses eingefügt. Außerdem wird es zum Extrahieren der Felder risk_level , risk_count , risk_code und risk_title verwendet. |
pid |
target.process.pid |
Dem UDM-Feld wird der Wert des Felds pid zugewiesen, der mithilfe von Grok aus dem Feld desc extrahiert wurde. |
product |
metadata.product_name |
Dem UDM-Feld wird der Wert des Felds product aus dem Rohprotokoll zugewiesen. |
report |
security_result.description |
Der Wert des Felds report aus dem Rohprotokoll ist in der Beschreibung des Sicherheitsergebnisses enthalten. |
report_data.Device IP |
target.ip |
Dem UDM-Feld wird der Wert des Felds Device IP aus den geparsten JSON-Daten zugewiesen. |
report_data.Highest Risk Level |
security_result.description |
Der Wert des Felds Highest Risk Level aus den geparsten JSON-Daten ist in der Beschreibung des Sicherheitsergebnisses enthalten. Außerdem wird damit der Schweregrad des Sicherheitsergebnisses bestimmt. |
report_data.Security Rating Score |
security_result.description |
Der Wert des Felds Security Rating Score aus den geparsten JSON-Daten ist in der Beschreibung des Sicherheitsergebnisses enthalten. |
Requestor.Email |
principal.user.email_addresses |
Dem UDM-Feld wird der Wert des Felds Email im Requestor -Objekt aus den geparsten JSON-Daten zugewiesen. |
Requestor.Name |
principal.user.user_display_name |
Dem UDM-Feld wird der Wert des Felds Name im Requestor -Objekt aus den geparsten JSON-Daten zugewiesen. |
RequestType |
target.resource.attribute.labels |
Der Wert des Felds RequestType aus dem Rohprotokoll wird der Zielressource als Label hinzugefügt. |
risk_title |
security_result.summary |
Dem UDM-Feld wird der Wert des Felds risk_title aus dem Rohprotokoll zugewiesen. |
src_ip |
principal.ip |
Dem UDM-Feld wird der Wert des Felds src_ip aus dem Rohprotokoll zugewiesen. |
src_port |
principal.port |
Dem UDM-Feld wird der Wert des Felds src_port aus dem Rohprotokoll zugewiesen. |
status |
security_result.description /security_result.action_details |
Der Wert des Felds status aus dem Rohprotokoll wird je nach Kontext in der Beschreibung des Sicherheitsergebnisses oder in den Aktionsdetails aufgeführt. Außerdem wird damit der Schweregrad des Sicherheitsergebnisses bestimmt. |
target_app |
target.application |
Dem UDM-Feld wird der Wert des Felds target_app aus dem Rohprotokoll zugewiesen. |
TemplateName |
metadata.description |
Dem UDM-Feld wird der Wert des Felds TemplateName aus dem Rohprotokoll zugewiesen. |
url |
security_result.url_back_to_product |
Dem UDM-Feld wird der Wert des Felds url aus dem Rohprotokoll zugewiesen. |
user |
principal.user.userid |
Dem UDM-Feld wird der Wert des Felds user aus dem Rohprotokoll zugewiesen. |
vendor |
metadata.vendor_name |
Dem UDM-Feld wird der Wert des Felds vendor aus dem Rohprotokoll zugewiesen. |
version |
metadata.product_version |
Dem UDM-Feld wird der Wert des Felds version aus dem Rohprotokoll zugewiesen. |
WorkFlow |
target.resource.attribute.labels |
Der Wert des Felds WorkFlow aus dem Rohprotokoll wird der Zielressource als Label hinzugefügt. |
(Parser Logic) | extensions.auth.type |
Hartcodiert auf MACHINE . |
(Parser Logic) | security_result.action |
Wird anhand des Felds event_id und anderer Felder ermittelt. Normalerweise ALLOW oder BLOCK . |
(Parser Logic) | security_result.category |
Für Firewall Analyzer-Ereignisse hartcodiert auf POLICY_VIOLATION . |
(Parser Logic) | security_result.description |
Anhand anderer Felder erstellt, um Kontext und Details zum Ereignis bereitzustellen. |
(Parser Logic) | security_result.severity |
Wird anhand der Felder event_id , msg und anderer Felder ermittelt. Normalerweise auf LOW , MEDIUM oder HIGH festgelegt. |
(Parser Logic) | metadata.event_type |
Wird anhand des Felds event_id und anderer Felder ermittelt. Beispiele: USER_LOGIN , USER_LOGOUT , USER_RESOURCE_ACCESS , GENERIC_EVENT , STATUS_UNCATEGORIZED , SCAN_HOST , NETWORK_CONNECTION und STATUS_UPDATE . |
(Parser Logic) | is_alert |
Wird auf true gesetzt, wenn security_result.severity gleich HIGH ist. |
(Parser Logic) | is_significant |
Wird auf true gesetzt, wenn security_result.severity gleich HIGH ist. |
Änderungen
2022-11-27
Optimierung:
- Das CEF-Format wurde geparst und die zugehörigen nicht geparsten Protokolle wurden mit einem ereignisspezifischen bedingten Block verarbeitet.
- Außerdem wurde ein Drop-Tag hinzugefügt, um fehlerhafte Protokolle zu entfernen.
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten