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 cloudbasierter 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-Agent und der Infoblox BloxOne-Plattform
  • 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 das Infoblox-Portal

Authentifizierungsdatei für die Aufnahme in Google SecOps abrufen

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

Google SecOps-Kundennummer abrufen

  1. Melden Sie sich in der Google SecOps-Konsole an.
  2. Rufen Sie die SIEM-Einstellungen > Profile auf.
  3. 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

  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. Warten Sie, bis die Installation abgeschlossen ist.

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

  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. Warten Sie, 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 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/bloxone:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.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 die gewartet werden soll:
      • 0.0.0.0, um alle Schnittstellen zu überwachen (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 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
    • customer_id: Die Kundennummer, die aus der Google SecOps Console kopiert wurde
    • endpoint: 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.

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-Agent 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. Logs auf Fehler prüfen:

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

    • Eingabeaufforderung oder PowerShell als Administrator:

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • Services-Konsole:

      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. Klicken Sie mit der rechten Maustaste 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. Klicken Sie auf Konfigurieren> Verwaltung > Data 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 an, 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 einen Schlüssel mit dem Ziel zu verknüpfen:
      • 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 additional_list-Array zu durchlaufen und Daten basierend auf dem Wert des Felds key zu extrahieren. Sie wird nicht direkt der 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 Array additional_list zu extrahieren. Die Logik zum Extrahieren und Zuordnen des Werts hängt vom entsprechenden key ab. Beispiel:
 – Wenn additional_list.key gleich intel:source:ip:geoIP:location ist, extrahieren Sie die Werte für Längen- und Breitengrad mit „grok“ und ordnen Sie sie principal.location.region_latitude bzw. principal.location.region_longitude zu.
: Wenn additional_list.key gleich intel:destination:ip:geoIP:location ist, extrahieren Sie die Breiten- und Längengradwerte mit „grok“ und ordnen Sie sie target.location.region_latitude bzw. target.location.region_longitude zu.
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 additional_string-Array 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, wird der Wert principal.location.country_or_region zugeordnet.
: Wenn additional_string.key gleich intel:destination:ip:geoIP:country ist, wird der Wert target.location.country_or_region zugeordnet.
: Wenn additional_string.key gleich log:source:ip ist, wird der Wert src.ip zugeordnet.
: Wenn additional_string.key gleich log:source:port ist, wird der Wert nach der Konvertierung in eine Ganzzahl src.port zugeordnet.
: Wenn additional_string.key gleich log:source:hostname ist, 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 Zuordnung basierend auf der folgenden Logik:
 – Wenn confidence gleich LOW ist, wird 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 Direkt zugeordnet nach der Umwandlung in Kleinbuchstaben.
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 wird direkt security_result.action_details zugeordnet.
security_result.action wird anhand der folgenden Logik abgeleitet:
 – Wenn policy_action Redirect oder Log ist, wird ALLOW zugeordnet.
 – Wenn policy_action BLOCK ist, wird 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 Zuordnung basierend auf der folgenden Logik:
 – Wenn qtype gleich A ist, wird der Wert 1 zugeordnet (in eine vorzeichenlose Ganzzahl konvertiert).
: Wenn qtype gleich PTR ist, wird der Wert 12 zugeordnet (in eine vorzeichenlose Ganzzahl konvertiert).
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 Mit raw.name verkettet (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 wird 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 LOW zugeordnet.
 – Wenn raw.deviceseverity in [4, 5, 6] enthalten ist, wird MEDIUM zugeordnet.
 – Wenn raw.deviceseverity im Bereich [7, 8] liegt, ordnen Sie HIGH zu.
 – Wenn raw.deviceseverity im Bereich [9, 10] liegt, ordnen Sie CRITICAL zu.
raw.dvc principal.ip, principal.asset.ip Direkt zugeordnet.
raw.dvchost principal.hostname, principal.asset.hostname Direkt zugeordnet, aber nur, wenn sie 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 auf Grundlage einer in der Datei dns_record_type.include definierten Nachschlagetabelle abzuleiten.
raw.infobloxdnsrcode network.dns.response_code Wird verwendet, um network.dns.response_code auf Grundlage einer in der Datei dns_response_code.include definierten Suchtabelle abzuleiten.
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 NXDOMAIN ist, wird network.dns.response_code auf 3 festgelegt (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 HIGH ist, wird 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 anhand der entsprechenden raw-Felder 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 wird der Wert auf GENERIC_EVENT gesetzt.
network.dns.questions.type Auf 1 für A-Einträge und auf 12 für PTR-Einträge festlegen, in eine vorzeichenlose Ganzzahl konvertiert.
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 dem Änderungsprotokoll zugeordnet
app_name principal.application Aus dem Änderungsprotokoll zugeordnet
endpoint_groups", "user_groups", "dns_view", "dhcp_fingerprint", "policy_name", "tclass", "tproperty", "threat_indicator", "category", and "rcode security_result.detection_fields Aus dem Änderungsprotokoll zugeordnet

Änderungsprotokoll

Änderungsprotokoll für diesen Parser ansehen

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