BloxOne Threat Defense-Logs erfassen

Parserversion: 8.0

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie BloxOne Threat Defense-Logs mit dem Bindplane-Agent in Google Security Operations aufnehmen.

Infoblox BloxOne Threat Defense ist ein in der Cloud verwalteter DNS-Sicherheitsdienst, der Syslog-Nachrichten im CEF-Format für DNS-Abfragen, Threat Intelligence-Ereignisse und Richtlinienaktionen generiert. Der Parser normalisiert Felder und ordnet sie dem Unified Data Model (UDM) zu.

Hinweis

Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:

  • Eine Google SecOps-Instanz
  • Windows Server 2016 oder höher oder Linux-Host mit systemd
  • Netzwerkverbindung zwischen dem Bindplane-Agenten und der Infoblox BloxOne-Plattform
  • Wenn der Agent hinter einem Proxy ausgeführt wird, müssen die Firewallports gemäß den Anforderungen des Bindplane-Agents geöffnet sein.
  • Privilegierter Zugriff auf das Infoblox-Portal

Google SecOps-Anmeldedaten für den Bindplane-Agenten abrufen

Wählen Sie eine der folgenden Methoden aus, um den Bindplane-Agent bei Google SecOps zu authentifizieren:

  • Neue Bereitstellungen: Verwenden Sie die Chronicle API (Option 1).
  • Alte Bereitstellungen: Verwenden Sie die Datei für die Authentifizierung bei der Aufnahme (Option 2) weiterhin, bis die Ingestion API am 20. Juli 2027 eingestellt wird.
  1. Melden Sie sich in der Google Cloud -Konsole an und wählen Sie das Google Cloud -Projekt aus, das mit Ihrer Google SecOps-Instanz verknüpft ist.
  2. Rufen Sie IAM & Verwaltung > Dienstkonten auf.
  3. Klicken Sie auf Dienstkonto erstellen.
  4. Geben Sie die folgenden Konfigurationsdetails an:
    • Name des Dienstkontos: Geben Sie einen Namen für das Konto ein, z. B. bindplane-ingest.
    • Dienstkontobeschreibung: Geben Sie eine Beschreibung ein, z. B. Bindplane agent log ingestion.
  5. Klicken Sie auf Erstellen und fortfahren.
  6. Klicken Sie im Abschnitt Diesem Dienstkonto Zugriff auf das Projekt erteilen auf Rolle auswählen und wählen Sie Chronicle-Bearbeiter aus.
  7. Klicken Sie auf Weiter und dann auf Fertig.
  8. Klicken Sie auf das erstellte Dienstkonto und rufen Sie dann den Tab Schlüssel auf.
  9. Klicken Sie auf Schlüssel hinzufügen > Neuen Schlüssel erstellen.
  10. Wählen Sie JSON aus und klicken Sie auf Erstellen. Die Schlüsseldatei wird auf Ihren Computer heruntergeladen.
  11. Speichern Sie die Schlüsseldatei als ingestion-auth.json im Bindplane-Collector-Verzeichnis (/opt/observiq-otel-collector/ingestion-auth.json unter Linux oder C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json unter Windows) oder aktualisieren Sie creds_file_path in config.yaml, sodass der Pfad mit dem Pfad übereinstimmt, unter dem Sie die Datei speichern.
  12. Rufen Sie IAM & Verwaltung > Einstellungen auf und kopieren Sie die Projektnummer. Sie benötigen sie für die Konfiguration des Exporters.

Option 2: Authentifizierungsdatei für die Datenaufnahme herunterladen (Legacy)

  1. Melden Sie sich in der Google SecOps-Konsole an.
  2. Rufen Sie die SIEM-Einstellungen > Collection Agents auf.
  3. Laden Sie die Authentifizierungsdatei für die Datenaufnahme herunter.
  4. Speichern Sie die Datei sicher auf dem System, auf dem der Bindplane-Agent installiert werden soll.

Google SecOps-Kundennummer abrufen

  1. Melden Sie sich in der Google SecOps-Konsole an.
  2. Rufen Sie die SIEM-Einstellungen > Profil auf.
  3. Kopieren und speichern Sie die Kundennummer aus dem Bereich Organization Details (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 Installationsanleitung für den Bindplane-Agenten.

Bindplane-Agent so konfigurieren, dass Syslog-Daten aufgenommen und an Google SecOps gesendet werden

Konfigurationsdatei suchen

  • Linux:

    sudo nano /opt/observiq-otel-collector/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/bloxone:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: chronicle.googleapis.com
        log_type: BLOXONE
        raw_log_field: body
    
    service:
      pipelines:
        logs/bloxone_to_chronicle:
          receivers:
            - udplog
          exporters:
            - chronicle/bloxone
    

Konfigurationsparameter

Ersetzen Sie die folgenden Platzhalter:

  • Empfängerkonfiguration:

    • listen_address: IP-Adresse und Port, auf dem gelauscht werden soll:
      • 0.0.0.0, um auf allen Schnittstellen zuzuhören (empfohlen)
      • Port 514 ist der Standard-Syslog-Port (erfordert Root unter Linux; verwenden Sie 1514 für Nicht-Root).
  • Exporter-Konfiguration:

    • creds_file_path: Vollständiger Pfad zur JSON-Schlüsseldatei des Dienstkontos (Option 1):
      • Linux: /opt/observiq-otel-collector/ingestion-auth.json
      • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • customer_id: Kundennummer, die aus der Google SecOps-Konsole kopiert wurde
    • location: Ersetzen Sie <LOCATION> durch die Region Ihrer Google SecOps-Instanz (z. B. us, europe oder asia-southeast1). Der Exporter stellt diesem Wert chronicle.googleapis.com voran. Eine vollständige Liste finden Sie unter Regionale Endpunkte.
    • project: Ersetzen Sie <PROJECT_NUMBER> durch die Projektnummer aus IAM & Verwaltung > Einstellungen.
    • endpoint: Behalten Sie die Einstellung chronicle.googleapis.com bei.

Legacy-Ingestion-API-Exporter

  • Wenn Sie die Authentifizierungsdatei für die Datenaufnahme aus Option 2 verwenden, ersetzen Sie den Block exporters durch Folgendes. Legen Sie für creds_file_path den Pfad zur Authentifizierungsdatei für die Datenaufnahme fest. Wenn sich Ihre Instanz außerhalb der USA befindet, ersetzen Sie malachiteingestion-pa.googleapis.com durch Ihren regionalen Endpunkt (z. B. europe-malachiteingestion-pa.googleapis.com).

    exporters:
      chronicle/bloxone:
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: BLOXONE
        raw_log_field: body
    

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

  • Führen Sie den folgenden Befehl aus, um den Bindplane-Agenten unter Linux neu zu starten:

    sudo systemctl restart observiq-otel-collector
    
    1. Prüfen Sie, ob der Dienst ausgeführt wird:

      sudo systemctl status observiq-otel-collector
      
    2. Prüfen Sie die Logs auf Fehler:

      sudo journalctl -u observiq-otel-collector -f
      
  • Wählen Sie eine der folgenden Optionen aus, um den Bindplane-Agenten unter Windows neu zu starten:

    • Eingabeaufforderung oder PowerShell als Administrator:

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • Dienstkonsole:

      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. Rechtsklicken Sie 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"
        

Syslog in Infoblox BloxOne konfigurieren

  1. Melden Sie sich im Infoblox-Portal an.
  2. Gehen Sie zu Konfigurieren > Verwaltung > Daten-Connector.
  3. Wählen Sie den Tab Zielkonfiguration aus.
  4. Klicken Sie auf Erstellen > Syslog.
  5. Geben Sie die folgenden Konfigurationsdetails an:
    • Name: Geben Sie einen aussagekräftigen Namen ein (z. B. Google SecOps-Collector).
    • Beschreibung: Geben Sie eine kurze Beschreibung ein.
    • Status: Wählen Sie Aktivieren aus.
    • Tags: Klicken Sie auf Hinzufügen und geben Sie Folgendes an, um dem Ziel einen Schlüssel zuzuordnen:
      • KEY: Geben Sie einen aussagekräftigen Namen für den Schlüssel ein.
      • VALUE: Geben Sie den Wert für den Schlüssel ein.
    • Format: Wählen Sie CEF aus.
    • Protokoll: Wählen Sie UDP oder TCP aus (je nach Konfiguration des Bindplane-Agents).
    • FQDN/IP: Geben Sie die IP-Adresse des Bindplane-Agents ein.
    • Port: Geben Sie den Bindplane-Agent-Port ein (Standard ist 514 für UDP).
  6. Klicken Sie auf Speichern & schließen.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
additional_list.key Dieses Feld wird in einer Schleife verwendet, um das Array additional_list zu durchlaufen und Daten basierend auf dem Wert des Felds key zu extrahieren. Es wird nicht direkt dem UDM zugeordnet.
additional_list.value principal.location.region_latitude, principal.location.region_longitude, target.location.region_latitude, target.location.region_longitude Dieses Feld wird in Verbindung mit additional_list.key verwendet, um bestimmte Werte aus dem additional_list-Array zu extrahieren. Die Logik zum Extrahieren und Zuordnen des Werts hängt vom entsprechenden key ab. Beispiel:
 – Wenn additional_list.key den Wert intel:source:ip:geoIP:location hat, extrahieren Sie die Werte für Breiten- und Längengrad mit Grok und ordnen Sie sie principal.location.region_latitude bzw. principal.location.region_longitude zu.
: Wenn additional_list.key den Wert intel:destination:ip:geoIP:location hat, werden die Werte für Breiten- und Längengrad mit Grok extrahiert und target.location.region_latitude bzw. target.location.region_longitude zugeordnet.
additional_string.key Ähnlich wie bei additional_list.key wird dieses Feld in einer Schleife verwendet, um das additional_string-Array zu durchlaufen und Daten basierend auf dem key-Wert zu extrahieren. Sie wird nicht direkt der UDM zugeordnet.
additional_string.value additional.fields.value.string_value, principal.location.country_or_region, target.location.country_or_region, src.ip, src.port, src.hostname, network.ip_protocol Wird mit additional_string.key verwendet, um Werte aus dem Array additional_string zu extrahieren. Die Logik für die Zuordnung des Werts hängt vom entsprechenden key ab. Beispiel:
 – Wenn additional_string.key intel:source:ip:ip2asn:start_ip, intel:source:ip:ip2asn:finish_ip, intel:destination:ip:ip2asn:start_ip oder intel:destination:ip:ip2asn:finish_ip ist, ordnen Sie den Wert mit dem entsprechenden Schlüssel additional.fields.value.string_value zu.
 – Wenn additional_string.key gleich intel:source:ip:geoIP:country ist, ordnen Sie den Wert principal.location.country_or_region zu.
: Wenn additional_string.key den Wert intel:destination:ip:geoIP:country hat, wird der Wert target.location.country_or_region zugeordnet.
: Wenn additional_string.key den Wert log:source:ip hat, wird der Wert src.ip zugeordnet.
: Wenn additional_string.key gleich log:source:port ist, wird der Wert nach der Konvertierung in eine Ganzzahl auf src.port abgebildet.
: Wenn additional_string.key den Wert log:source:hostname hat, wird der Wert src.hostname zugeordnet.
: Wenn additional_string.key gleich log:cdh:input:protocol ist, wird der Wert nach der Umwandlung in Großbuchstaben auf network.ip_protocol abgebildet.
app_category security_result.category_details Direkt zugeordnet.
confidence security_result.confidence Die Zuordnung erfolgt nach folgender Logik:
 – Wenn confidence den Wert LOW hat, wird es LOW_CONFIDENCE zugeordnet.
 – Wenn confidence MEDIUM ist, wird MEDIUM_CONFIDENCE zugeordnet.
 – Wenn confidence HIGH ist, wird HIGH_CONFIDENCE zugeordnet.
country principal.location.name Direkt zugeordnet, aber nur, wenn raw.infobloxb1region leer ist.
device principal.ip, principal.asset.ip Direkt zugeordnet, aber nur, wenn raw.dvc leer ist.
dhcp_fingerprint security_result.detection_fields.value Direkt mit dem Schlüssel dhcp_fingerprint zugeordnet.
dns_view security_result.detection_fields.value Direkt mit dem Schlüssel dns_view zugeordnet.
endpoint_groups security_result.detection_fields.value Direkt mit dem Schlüssel endpoint_groups zugeordnet.
event_time metadata.event_timestamp.seconds Wird als ISO8601-Zeitstempel geparst und der Sekundenwert wird extrahiert. Wird nur verwendet, wenn das Feld timestamp leer ist.
feed_name principal.resource.name feed_name wird principal.resource.name zugeordnet.
feed_type principal.resource.attribute.labels.value Direkt mit dem Schlüssel feed_type zugeordnet.
mac_address principal.mac Nach der Umwandlung in Kleinbuchstaben direkt zugeordnet.
network principal.hostname, principal.asset.hostname Direkt zugeordnet, aber nur, wenn sowohl raw.dvchost als auch raw.dvc leer sind.
os_version principal.platform_version Direkt zugeordnet.
policy_action security_result.action_details, security_result.action policy_action ist direkt security_result.action_details zugeordnet.
security_result.action wird anhand der folgenden Logik abgeleitet:
– Wenn policy_action Redirect oder Log ist, wird es ALLOW zugeordnet.
: Wenn policy_action den Wert BLOCK hat, wird es BLOCK zugeordnet.
policy_name security_result.detection_fields.value Direkt mit dem Schlüssel policy_name zugeordnet.
qname network.dns.questions.name Direkt zugeordnet.
qtype network.dns.questions.type Die Zuordnung erfolgt nach folgender Logik:
 – Wenn qtype den Wert A hat, wird der Wert 1 zugeordnet (in eine vorzeichenlose Ganzzahl konvertiert).
: Wenn qtype den Wert PTR hat, wird er dem Wert 12 zugeordnet (in eine vorzeichenlose Ganzzahl umgewandelt).
raw.act security_result.action_details Direkt zugeordnet.
raw.app network.application_protocol Direkt zugeordnet nach der Umwandlung in Großbuchstaben.
raw.deviceeventclassid metadata.product_event_type Verkettet mit raw.name (getrennt durch -) und metadata.product_event_type zugeordnet.
raw.devicevendor metadata.vendor_name Direkt zugeordnet.
raw.deviceproduct metadata.product_name Direkt zugeordnet.
raw.deviceversion metadata.product_version Direkt zugeordnet.
raw.deviceseverity security_result.severity_details, security_result.severity raw.deviceseverity ist direkt security_result.severity_details zugeordnet.
security_result.severity wird anhand der folgenden Logik abgeleitet:
 – Wenn raw.deviceseverity in [0, 1, 2, 3] enthalten ist, wird es LOW zugeordnet.
 – Wenn raw.deviceseverity in [4, 5, 6] enthalten ist, ordnen Sie MEDIUM zu.
 – Wenn raw.deviceseverity im Bereich [7, 8] liegt, wird HIGH zugeordnet.
: Wenn raw.deviceseverity in [9, 10] liegt, wird es CRITICAL zugeordnet.
raw.dvc principal.ip, principal.asset.ip Direkt zugeordnet.
raw.dvchost principal.hostname, principal.asset.hostname Direkt zugeordnet, aber nur, wenn der Wert nicht gleich raw.dvc ist.
raw.infobloxb1connectiontype additional.fields.value.string_value Direkt mit dem Schlüssel infobloxb1connectiontype zugeordnet.
raw.infobloxb1ophname observer.hostname, observer.asset.hostname Direkt zugeordnet.
raw.infobloxb1ophipaddress observer.ip Direkt zugeordnet.
raw.infobloxb1policyname security_result.detection_fields.value Direkt mit dem Schlüssel infobloxb1policyname zugeordnet.
raw.infobloxdnsqclass dns_question.class, dns_answer.class Wird verwendet, um dns_question.class und dns_answer.class auf Grundlage einer in der Datei dns_query_class_mapping.include definierten Nachschlagetabelle abzuleiten.
raw.infobloxdnsqtype dns_question.type, dns_answer.type Wird verwendet, um dns_question.type und dns_answer.type basierend auf einer in der Datei dns_record_type.include definierten Suchtabelle abzuleiten.
raw.infobloxdnsrcode network.dns.response_code Wird verwendet, um network.dns.response_code basierend auf einer Suchtabelle abzuleiten, die in der Datei dns_response_code.include definiert ist.
raw.infobloxpolicyid security_result.detection_fields.value Direkt mit dem Schlüssel infobloxpolicyid zugeordnet.
raw.msg metadata.description raw.msg wird direkt metadata.description zugeordnet, nachdem führende und nachfolgende Anführungszeichen entfernt wurden.
raw.name metadata.product_event_type Mit raw.deviceeventclassid verkettet (getrennt durch -) und metadata.product_event_type zugeordnet.
rcode security_result.detection_fields.value, network.dns.response_code rcode wird mit dem Schlüssel rcode direkt security_result.detection_fields.value zugeordnet.
Wenn rcode den Wert NXDOMAIN hat, wird network.dns.response_code auf 3 gesetzt (in eine vorzeichenlose Ganzzahl konvertiert).
rdata network.dns.answers.data Direkt zugeordnet.
rip target.ip, target.asset.ip Direkt zugeordnet.
severity security_result.severity Zuordnung basierend auf der folgenden Logik:
 – Wenn severity INFO ist (unabhängig von der Groß-/Kleinschreibung), wird INFORMATIONAL zugeordnet.
: Wenn severity den Wert HIGH hat, wird es HIGH zugeordnet.
tclass security_result.detection_fields.value Direkt mit dem Schlüssel tclass zugeordnet.
threat_indicator security_result.detection_fields.value Direkt mit dem Schlüssel threat_indicator zugeordnet.
timestamp metadata.event_timestamp.seconds Wird als ISO8601-Zeitstempel geparst und der Sekundenwert wird extrahiert.
user principal.user.user_display_name Direkt zugeordnet.
user_groups security_result.detection_fields.value Direkt mit dem Schlüssel user_groups zugeordnet.
– principal.resource.resource_subtype Wird auf Feed gesetzt, wenn feed_name nicht leer ist.
– metadata.log_type Legen Sie BLOXONE fest.
– additional.fields.key Legen Sie basierend auf den entsprechenden raw-Feldern infobloxancount, infobloxarcount, infobloxb1connectiontype, infobloxnscount, intel:destination:ip:ip2asn:finish_ip, intel:destination:ip:ip2asn:start_ip, intel:source:ip:ip2asn:finish_ip oder intel:source:ip:ip2asn:start_ip fest.
– metadata.event_type Wird auf STATUS_UPDATE gesetzt, wenn has_principal gleich true ist, andernfalls auf GENERIC_EVENT.
– network.dns.questions.type Wird für A-Einträge auf 1 und für PTR-Einträge auf 12 gesetzt und in eine vorzeichenlose Ganzzahl umgewandelt.
– network.dns.answers.name, network.dns.answers.type, network.dns.answers.class Aus raw.msg extrahiert, indem der DNS-Antwortstring geparst wurde.
– intermediary.hostname, intermediary.ip, intermediary.asset.ip Aus raw.msg extrahiert, indem der DNS-Antwortstring geparst wurde.
intermediaryhost intermediary.hostname Aus Änderungsprotokoll zugeordnet
app_name principal.application Aus Änderungsprotokoll zugeordnet
endpoint_groups", "user_groups", "dns_view", "dhcp_fingerprint", "policy_name", "tclass", "tproperty", "threat_indicator", "category", and "rcode security_result.detection_fields Aus Änderungsprotokoll zugeordnet

Änderungsprotokoll

Änderungsprotokoll für diesen Parser ansehen

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