AlgoSec Security Management-Protokolle erfassen

Unterstützt in:

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

  1. Melden Sie sich in der Google SecOps Console an.
  2. Gehen Sie zu SIEM-Einstellungen > Erfassungsagenten.
  3. 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

  1. Melden Sie sich in der Google SecOps Console an.
  2. Gehen Sie zu SIEM-Einstellungen > Profil.
  3. Kopieren und speichern Sie die Kundennummer aus dem Bereich Organisationsdetails.

Bindplane-Agent installieren

Windows-Installation

  1. Öffnen Sie die Eingabeaufforderung oder die 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
    

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
    

Weitere Installationsressourcen

Bindplane-Agent so konfigurieren, dass er Syslog-Daten aufnimmt und an Google SecOps sendet

  1. Rufen Sie die Konfigurationsdatei auf:

    1. Suchen Sie die Datei config.yaml. Normalerweise befindet es sich unter Linux im Verzeichnis /etc/bindplane-agent/ oder unter Windows im Installationsverzeichnis.
    2. Öffnen Sie die Datei mit einem Texteditor, z. B. nano, vi oder Notepad.
  2. Bearbeiten Sie die Datei config.yamlso:

    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
    
  3. Ersetzen Sie den Port und die IP-Adresse nach Bedarf in Ihrer Infrastruktur.

  4. Ersetzen Sie <customer_id> durch die tatsächliche Kundennummer.

  5. 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

  1. Melden Sie sich mit SSH bei der AFA-Appliance an.
  2. Rufen Sie das Konfigurationsverzeichnis von syslog-ng auf:

    cd /etc/syslog-ng
    
  3. Sichern Sie die vorhandene Konfiguration:

    cp syslog-ng.conf syslog-ng.conf.orig
    
  4. Bearbeiten Sie die syslog-ng-Konfigurationsdatei:

    vi syslog-ng.conf
    
  5. 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.
  6. Speichern Sie die Datei und beenden Sie den Editor.

  7. Starten Sie den syslog-ng-Dienst neu, um die Änderungen anzuwenden:

    service syslog-ng restart
    
  8. Optional: Syslog-Konfiguration prüfen:

    1. Gehen Sie zu Verwaltung > Syslog-Servereinstellungen.
    2. Klicken Sie auf Konnektivität testen.

Syslog für FireFlow konfigurieren

  1. Melden Sie sich auf dem FireFlow-Computer als root an.
  2. Öffnen Sie die Datei /etc/syslog.conf zur Bearbeitung.

    vi /etc/syslog.conf
    
  3. Fügen Sie der Datei die folgende Zeile hinzu: local0.*@<BindplaneAgent>.

    • Ersetzen Sie <BindplaneAgent> durch die IP-Adresse des Bindplane-Agent-Servers.

Syslog für AppViz konfigurieren

  1. Melden Sie sich über SSH in der AppViz-Appliance an.
  2. Rufen Sie das Konfigurationsverzeichnis von syslog-ng auf:

    cd /etc/syslog-ng
    
  3. Sichern Sie die vorhandene Konfiguration:

    cp syslog-ng.conf syslog-ng.conf.orig
    
  4. Bearbeiten Sie die syslog-ng-Konfigurationsdatei:

    vi syslog-ng.conf
    
  5. 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.
  6. Speichern Sie die Datei und beenden Sie den Editor.

  7. Starten Sie den syslog-ng-Dienst neu, um die Änderungen anzuwenden:

    service syslog-ng restart
    
  8. Syslog-Konfiguration prüfen:

    1. Klicken Sie in der AppViz-Benutzeroberfläche auf Verwaltung > Syslog-Servereinstellungen.
    2. Klicken Sie auf Konnektivität testen.

Syslog für Anmelde- und Abmeldeereignisse konfigurieren

  1. Melden Sie sich über SSH bei der ASMS-Appliance an.
  2. Rufen Sie das Konfigurationsverzeichnis von syslog-ng auf:

    cd /etc/syslog-ng
    
  3. Sichern Sie die vorhandene Konfiguration:

    cp syslog-ng.conf syslog-ng.conf.orig
    
  4. Bearbeiten Sie die syslog-ng-Konfigurationsdatei:

    vi syslog-ng.conf
    
  5. 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.
  6. Speichern Sie die Datei und beenden Sie den Editor.

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