Microsoft Defender for IoT-Protokolle (CyberX) erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie Microsoft Defender for IoT-Logs (CyberX) mit Bindplane in Google Security Operations aufnehmen.

Microsoft Defender for IoT (früher CyberX) ist eine agentenlose IoT-/OT-Sicherheitsplattform, die Asset-Erkennung, Schwachstellenmanagement und kontinuierliche Bedrohungsüberwachung für industrielle Steuerungssysteme (Industrial Control Systems, ICS) und Betriebstechnologieumgebungen (Operational Technology, OT) bietet. Es erkennt anomales Verhalten und bekannte Bedrohungen in IoT-/OT-Netzwerken, ohne die Betriebsprozesse zu beeinträchtigen. Der Parser extrahiert Felder aus CyberX-Syslog und Schlüssel/Wert-formatierten Logs. Sie verwendet „grok“ und/oder „kv“, um die Log-Nachricht zu parsen, und ordnet diese Werte dann dem Unified Data Model (UDM) zu. Außerdem werden Standardmetadatenwerte für die Ereignisquelle und den Ereignistyp festgelegt.

Hinweise

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

  • Eine Google SecOps-Instanz
  • Windows Server 2016 oder höher oder Linux-Host mit systemd
  • 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 die Microsoft Defender for IoT-Sensorkonsole

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

  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/chronicle_w_labels:
            compression: gzip
            creds_file_path: '/path/to/ingestion-authentication-file.json'
            customer_id: 'YOUR_CUSTOMER_ID'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: 'CYBERX'
            raw_log_field: body
            ingestion_labels:
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    

Konfigurationsparameter

  • Ersetzen Sie die folgenden Platzhalter:

    • Empfängerkonfiguration:

      • udplog: Verwenden Sie udplog für UDP-Syslog oder tcplog für TCP-Syslog.
      • 0.0.0.0: IP-Adresse, an der gelauscht werden soll (0.0.0.0, um an allen Schnittstellen zu lauschen)
      • 514: Portnummer, die überwacht werden soll (Standard-Syslog-Port)
    • 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
      • YOUR_CUSTOMER_ID: Kunden-ID aus dem Abschnitt „Kunden-ID abrufen“
      • 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.
      • log_type: Logtyp genau wie in Chronicle (CYBERX)

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-Weiterleitung in Microsoft Defender for IoT (CyberX) konfigurieren

  1. Melden Sie sich in der Microsoft Defender for IoT-Sensorkonsole (früher CyberX) an.
  2. Gehen Sie zu den Systemeinstellungen > Weiterleitung.
  3. Klicken Sie auf Hinzufügen (oder +), um eine neue Weiterleitungsregel zu erstellen.
  4. Geben Sie die folgenden Konfigurationsdetails an:
    • Regelname: Geben Sie einen aussagekräftigen Namen ein, z. B. Google-SecOps-Bindplane.
    • Schweregrad: Wählen Sie Alle aus oder bestimmte Schweregrade: „Geringfügig“, „Schwerwiegend“, „Kritisch“.
    • Protokoll: Wählen Sie Alle aus (oder bestimmte Protokolle, die überwacht werden sollen).
    • Engine: Wählen Sie Alle oder bestimmte Erkennungs-Engines aus.
    • Aktion: Wählen Sie Syslog senden aus.
  5. In der Konfiguration des Syslog-Servers:
    • Host: Geben Sie die IP-Adresse des BindPlane-Agent-Hosts ein.
    • Port: Geben Sie 514 ein.
    • Protokoll: Wählen Sie UDP aus.
    • Format: Wählen Sie CEF (Common Event Format) aus.
    • Zeitzone: Wählen Sie UTC aus (empfohlen).
  6. Klicken Sie auf Speichern.
  7. Aktivieren Sie die Weiterleitungsregel, indem Sie sie auf Aktiv setzen.
  8. Prüfen Sie die Bindplane-Agent-Logs, um zu sehen, ob Syslog-Nachrichten gesendet werden.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
Zugriffsmaske security_result.detection_fields.value Wert von access_mask aus geparsten access_request_kvdata
Kontodomain principal.administrative_domain Wert von „principal_domain“ aus geparsten „principal_kvdata“
Kontodomain target.administrative_domain Wert von „target_domain“ aus den geparsten „target_kvdata“
Kontoname principal.user.userid Wert von „principal_account_name“ aus geparsten „principal_kvdata“
Kontoname target.user.userid Wert von „target_account_name“ aus den geparsten „target_kvdata“
Aktion security_result.action_details Wert der Aktion
Aktion security_result.action Abgeleitet. Wenn die Aktion „accept“, „passthrough“, „pass“, „permit“, „detected“ oder „close“ lautet, ordnen Sie sie „ALLOW“ zu. Wenn die Aktion „deny“, „dropped“ oder „blocked“ ist, ordnen Sie sie „BLOCK“ zu. Wenn die Aktion „timeout“ ist, ordnen Sie sie „FAIL“ zu. Andernfalls ordnen Sie sie „UNKNOWN_ACTION“ zu.
Algorithmusname security_result.detection_fields.value Wert von „algorithm_name“ aus den geparsten „cryptographic_kvdata“
App target.application Wert des Dienstes, wenn „app_protocol_output“ leer ist
appcat security_result.detection_fields.value Wert von „appcat“
Name der Anwendung principal.application Wert von „application_name“
Authentifizierungspaket security_result.about.resource.name Wert von „authentication_package“
Azure Defender für IoT-Warnung security_result.detection_fields.value Wert von „azure_defender_for_iot_alert“
channel security_result.detection_fields.value Wert des Channels
Clientadresse principal.ip, principal.asset.ip Wert von „source_ip“
Clientport principal.port Wert von „source_port“
craction security_result.detection_fields.value Wert von „craction“
Anmeldedaten des Anmeldedaten-Managers wurden gesichert security_result.description Wert der Beschreibung
Anmeldedaten des Anmeldedaten-Managers wurden gelesen. security_result.description Wert der Beschreibung
crscore security_result.severity_details Wert von „crscore“
crlevel security_result.severity, security_result.severity_details Wert von „crlevel“. Wenn „crlevel“ „HIGH“, „MEDIUM“, „LOW“ oder „CRITICAL“ ist, ordnen Sie es dem entsprechenden UDM-Schweregrad zu.
Kryptografischer Vorgang metadata.description Wert von „product_desc“
CyberX-Plattformname security_result.detection_fields.value Wert von cyberx_platform_name
Beschreibung security_result.description Wert der Beschreibung, wenn „Message“ leer ist
Ziel target.ip, target.asset.ip oder target.hostname Wenn das Ziel eine IP-Adresse ist, ordnen Sie es target.ip und target.asset.ip zu. Andernfalls wird „target.hostname“ zugeordnet.
Zieladresse target.ip, target.asset.ip Wert von „destination_ip“ aus den geparsten „network_information“
Ziel-DRA target.resource.name Wert von „destination_dra“
Ziel-IP target.ip, target.asset.ip Wert von „destination_ip“
Zielport target.port Wert von „destination_port“ aus den geparsten „network_information“
devid principal.resource.product_object_id Wert von „devid“
devname principal.resource.name Wert von „devname“
Richtung network.direction Wenn „Direction“ (Richtung) „incoming“ (eingehend), „inbound“ (eingehend) oder „response“ (Antwort) ist, ordnen Sie „INBOUND“ zu. Wenn „Direction“ (Richtung) „outgoing“ (ausgehend), „outbound“ (ausgehend) oder „request“ (Anfrage) ist, ordnen Sie „OUTBOUND“ (AUSGEHEND) zu.
dstip target.ip, target.asset.ip Wert von „dstip“, wenn „destination_ip“ leer ist
dstcountry target.location.country_or_region Wert von „dstcountry“
dstintf security_result.detection_fields.value Wert von „dstintf“
dstintfrole security_result.detection_fields.value Wert von „dstintfrole“
dstosname target.platform Wert von „dstosname“, wenn er „WINDOWS“, „LINUX“ oder „MAC“ ist.
dstport target.port Wert von „dstport“, wenn „destination_port“ leer ist
dstswversion target.platform_version Wert von „dstswversion“
Dauer network.session_duration.seconds Wert der Dauer
event_id security_result.rule_name Wird verwendet, um den Regelnamen als „EventID: %{event_id}“ zu erstellen.
event_in_sequence security_result.detection_fields.value Wert von „event_in_sequence“
Filter-Laufzeit-ID security_result.detection_fields.value Wert von „filter_run_time_id“ aus den geparsten Filterinformationen
Gruppenmitgliedschaft security_result.detection_fields.value Wert von „group_membership“, wenn „event_id“ nicht 4627 ist
Gruppenmitgliedschaft target.user.group_identifiers Werte aus der geparsten group_membership, wenn event_id = 4627
handle_id security_result.detection_fields.value Wert von „handle_id“ aus geparsten „object_kvdata“
Handle-ID security_result.detection_fields.value Wert von „handle_id“ aus geparsten „object_kvdata“
impersonation_level security_result.detection_fields.value Wert von „impersonation_level“ aus geparsten „logon_information_kvdata“
Schlüssellänge security_result.detection_fields.value Wert von „key_length“ aus den geparsten „auth_kvdata“
Schlüsselname security_result.detection_fields.value Wert von „key_name“ aus den geparsten „cryptographic_kvdata“
Schlüsseltyp security_result.detection_fields.value Wert von „key_type“ aus den geparsten „cryptographic_kvdata“
Keywords security_result.detection_fields.value Wert von Keywords
Name der Ebene security_result.detection_fields.value Wert von „layer_name“ aus den geparsten „filter_information“
Laufzeit-ID des Layers security_result.detection_fields.value Wert von „layer_run_time_id“ aus den geparsten „filter_information“
logid metadata.product_log_id Wert von „logid“
Anmelde-GUID principal.resource.product_object_id Wert von „logon_guid“
Anmelde-ID security_result.detection_fields.value Wert von „logon_id“
logon_type event.idm.read_only_udm.extensions.auth.mechanism Abgeleitet. Wenn „logon_type“ = „3“, dann „NETWORK“ zuordnen. Wenn „4“, dann „BATCH“. Wenn „5“, dann „SERVICE“. Wenn „8“, dann „NETWORK_CLEAR_TEXT“. Wenn „9“, dann „NEW_CREDENTIALS“. Wenn „10“, dann „REMOTE_INTERACTIVE“. Wenn „11“, dann „CACHED_INTERACTIVE“ zuordnen. Andernfalls, falls nicht leer, ordnen Sie „MECHANISM_OTHER“ zu.
Anmeldekonto security_result.detection_fields.value Wert von „logon_id“ aus der Grok-Analyse
Anmeldevorgang security_result.detection_fields.value Wert von „logon_process“ aus geparsten „auth_kvdata“
Pflichtlabel security_result.detection_fields.value Wert von „mandatory_label“
mastersrcmac principal.mac Wert von „mastersrcmac“
Nachricht security_result.description Wert der Mitteilung
new_process_id target.process.pid Wert von „new_process_id“ aus geparsten „process_kvdata“
new_process_name target.process.file.full_path Wert von „new_process_name“ aus geparsten „process_kvdata“
Objektname security_result.detection_fields.value Wert von „object_name“ aus geparsten „object_kvdata“
Objektserver security_result.detection_fields.value Wert von „object_server“ aus den geparsten „object_kvdata“
Objektart security_result.detection_fields.value Wert von „object_type“ aus geparsten „object_kvdata“
osname principal.platform Wert von „osname“, wenn er „WINDOWS“, „LINUX“ oder „MAC“ ist.
Paketname (nur NTLM) security_result.detection_fields.value Wert von „package_name“ aus den geparsten „auth_kvdata“
policyid security_result.rule_id Wert von „policyid“
policyname security_result.rule_name Wert von „policyname“
policytype security_result.rule_type Wert von „policytype“
Prozess-ID principal.process.pid Wert von „process_id“
Prozessname principal.process.file.full_path Wert von „creator_process_name“ aus geparsten „process_kvdata“
profile_changed security_result.detection_fields.value Wert von „profile_changed“
Profil geändert security_result.detection_fields.value Wert von „profile_changed“ aus Grok-Analyse
Proto network.ip_protocol Wenn „proto“ „17“ ist, wird „UDP“ zugeordnet. Wenn „6“ oder der Untertyp „wad“ ist, ordnen Sie „TCP“ zu. Wenn „41“, dann „IP6IN4“ zuordnen. Wenn der Dienst „PING“ ist oder das Protokoll „1“ ist oder der Dienst „ICMP“ enthält, ordnen Sie ihn „ICMP“ zu.
Protokoll network.application_protocol Wert von „app_protocol_output“, der aus dem Protokoll abgeleitet wurde
Name des Anbieters security_result.detection_fields.value Wert von „provider_name“ aus geparsten „provider_kvdata“ oder „cryptographic_kvdata“
rcvdbyte network.received_bytes Wert von „rcvdbyte“
rcvdpkt security_result.detection_fields.value Wert von rcvdpkt
restricted_admin_mode security_result.detection_fields.value Wert von „restricted_admin_mode“ aus geparsten „logon_information_kvdata“
Rückgabecode security_result.detection_fields.value Wert von „return_code“ aus den geparsten „cryptographic_kvdata“
Antwort security_result.detection_fields.value Wert der Antwort
rule_id security_result.rule_id Wert von „rule_id“
Sicherheits-ID principal.user.windows_sid Wert von „principal_security_id“ aus geparsten „principal_kvdata“
Sicherheits-ID target.user.windows_sid Wert von „target_security_id“ aus den geparsten „target_kvdata“
sentbyte network.sent_bytes Wert von „sentbyte“
sentpkt security_result.detection_fields.value Wert von „sentpkt“
Dienst network.application_protocol oder target.application Wert von „app_protocol_output“, der vom Dienst abgeleitet wird. Wenn „app_protocol_output“ leer ist, ordnen Sie „target.application“ zu.
Dienst-ID security_result.detection_fields.value Wert von „service_id“ aus geparsten „service_kvdata“
Dienstname security_result.detection_fields.value Wert von „service_name“ aus den geparsten „service_kvdata“
sessionid network.session_id Wert von „sessionid“
Schweregrad security_result.severity, security_result.severity_details Wenn der Schweregrad „ERROR“ oder „CRITICAL“ ist, ordnen Sie ihn dem entsprechenden UDM-Schweregrad zu. Wenn „INFO“, dann „INFORMATIONAL“ zuordnen. Wenn „MINOR“, ordnen Sie „LOW“ zu. Wenn „WARNING“, ordnen Sie „MEDIUM“ zu. Wenn „MAJOR“, dann „HIGH“. Ordnen Sie den Rohwert auch severity_details zu.
die Ausprägung security_result.severity, security_result.severity_details Wenn der Schweregrad „1“, „2“ oder „3“ ist, ordnen Sie ihn „LOW“ zu. Wenn „4“, „5“ oder „6“, dann „MEDIUM“. Wenn „7“, „8“ oder „9“, dann „HIGH“. Ordnen Sie den Rohwert auch severity_details zu.
Freigabename security_result.detection_fields.value Wert von „share_name“ aus den geparsten „share_information_kvdata“
Pfad teilen security_result.detection_fields.value Wert von „share_path“ aus den geparsten „share_information_kvdata“
Quelle principal.ip, principal.asset.ip oder principal.hostname, principal.asset.hostname Wenn „Source“ eine IP-Adresse ist, ordnen Sie sie „principal.ip“ und „principal.asset.ip“ zu. Andernfalls ordnen Sie sie principal.hostname und principal.asset.hostname zu.
Quelladresse principal.ip, principal.asset.ip Wert von „source_ip“ aus den geparsten „network_information“
Quell-DRA principal.resource.name Wert von „source_dra“
Quell-IP-Adresse principal.ip Wert von „source_ip“
Quellnetzwerkadresse principal.ip, principal.asset.ip Wert von „source_ip“
Quellport principal.port Wert von „source_port“ aus den geparsten „network_information“
Quellworkstation workstation_name Wert von „source_workstation_name“
srcip source_ip Wert von „srcip“, wenn „source_ip“ leer ist
srccountry principal.location.country_or_region Wert von „srccountry“
srcmac principal.mac Wert von „srcmac“
srcname hauptkonto.hostname, hauptkonto.asset.hostname Wert von „srcname“
srcport source_port Wert von „srcport“, wenn „source_port“ leer ist
srcswversion principal.platform_version Wert von „srcswversion“
Statuscode network.http.response_code Wert von „status_code“
Token-Erhebungstyp security_result.detection_fields.value Wert von „token_elevation_type“
transited_services security_result.detection_fields.value Wert von „transited_services“ aus geparsten „auth_kvdata“
transip principal.nat_ip Wert von transip
transport principal.nat_port Wert des Transports
Typ metadata.product_event_type Wird mit „subtype“ verwendet, um „metadata.product_event_type“ zu erstellen.
Typ security_result.detection_fields.value Wert des Typs
UUID metadata.product_log_id Wert der UUID
vd principal.administrative_domain Wert von „vd“
virtual_account security_result.detection_fields.value Wert von „virtual_account“ aus geparsten „logon_information_kvdata“
Name der Workstation hauptkonto.hostname, hauptkonto.asset.hostname Wert von „workstation_name“, wenn keine andere Hauptkonto-ID vorhanden ist
metadata.event_type metadata.event_type Abgeleitet. Wenn sowohl „principal_present“ als auch „target_present“ „true“ sind, ordnen Sie „NETWORK_CONNECTION“ zu. Wenn „user_present“ auf „true“ gesetzt ist, ordnen Sie „USER_RESOURCE_ACCESS“ zu. Wenn „principal_present“ auf „true“ gesetzt ist, ordnen Sie „STATUS_UPDATE“ zu. Andernfalls ordnen Sie das Ereignis „GENERIC_EVENT“ zu.
metadata.log_type metadata.log_type Fest codiert auf „CYBERX“
metadata.product_name metadata.product_name Fest codiert auf „CYBERX“
metadata.vendor_name metadata.vendor_name Fest codiert auf „CYBERX“
metadata.event_timestamp metadata.event_timestamp Wird aus dem Zeitstempelfeld auf oberster Ebene kopiert oder aus den Feldern „eventtime“ oder „date and time“ abgeleitet.

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