Raccogliere i log di Microsoft Defender for IoT (CyberX)

Supportato in:

Questo documento spiega come importare i log di Microsoft Defender for IoT (CyberX) in Google Security Operations utilizzando Bindplane.

Microsoft Defender for IoT (in precedenza CyberX) è una piattaforma di sicurezza IoT/OT senza agenti che fornisce rilevamento degli asset, gestione delle vulnerabilità e monitoraggio continuo delle minacce per ambienti di sistemi di controllo industriale (ICS) e tecnologia operativa (OT). Rileva comportamenti anomali e minacce note nelle reti IoT/OT senza influire sui processi operativi. L'analizzatore estrae i campi dai log formattati in formato syslog e chiave-valore di CyberX. Utilizza grok e/o kv per analizzare il messaggio di log e quindi mappa questi valori al modello UDM (Unified Data Model). Imposta anche i valori predefiniti dei metadati per l'origine e il tipo di evento.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Un'istanza Google SecOps
  • Windows Server 2016 o versioni successive oppure host Linux con systemd
  • Se l'agente viene eseguito dietro un proxy, assicurati che le porte del firewall siano aperte in base ai requisiti dell'agente Bindplane
  • Accesso privilegiato alla console del sensore Microsoft Defender for IoT

Recuperare il file di autenticazione importazione di Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Agenti di raccolta.
  3. Scarica il file di autenticazione importazione. Salva il file in modo sicuro sul sistema in cui verrà installato Bindplane.

Recuperare l'ID cliente Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Profilo.
  3. Copia e salva l'ID cliente dalla sezione Dettagli dell'organizzazione.

Installa l'agente Bindplane

Installa l'agente Bindplane sul sistema operativo Windows o Linux seguendo le istruzioni riportate di seguito.

Installazione di Windows

  1. Apri Prompt dei comandi o PowerShell come amministratore.
  2. Esegui questo comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. Attendi il completamento dell'installazione.

  4. Verifica l'installazione eseguendo il comando:

    sc query observiq-otel-collector
    

Il servizio dovrebbe essere visualizzato come IN ESECUZIONE.

Installazione di Linux

  1. Apri un terminale con privilegi di root o sudo.
  2. Esegui questo comando:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. Attendi il completamento dell'installazione.

  4. Verifica l'installazione eseguendo il comando:

    sudo systemctl status observiq-otel-collector
    

Il servizio dovrebbe essere visualizzato come attivo (in esecuzione).

Risorse aggiuntive per l'installazione

Per ulteriori opzioni di installazione e risoluzione dei problemi, consulta la Guida all'installazione dell'agente Bindplane.

Configura l'agente Bindplane per importare syslog e inviarli a Google SecOps

Individua il file di configurazione

  • Linux:

    sudo nano /etc/bindplane-agent/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

Modifica il file di configurazione

  • Sostituisci l'intero contenuto di config.yaml con la seguente configurazione:

    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
    

Parametri di configurazione

  • Sostituisci i seguenti segnaposto:

    • Configurazione del ricevitore:

      • udplog: utilizza udplog per syslog UDP o tcplog per syslog TCP
      • 0.0.0.0: indirizzo IP su cui ascoltare (0.0.0.0 per ascoltare su tutte le interfacce)
      • 514: Numero di porta su cui ascoltare (porta syslog standard)
    • Configurazione dell'esportatore:

      • creds_file_path: percorso completo del file di autenticazione importazione:
        • Linux: /etc/bindplane-agent/ingestion-auth.json
        • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • YOUR_CUSTOMER_ID: l'ID cliente della sezione Recupera ID cliente
      • endpoint: URL endpoint regionale:
        • Stati Uniti: malachiteingestion-pa.googleapis.com
        • Europa: europe-malachiteingestion-pa.googleapis.com
        • Asia: asia-southeast1-malachiteingestion-pa.googleapis.com
        • Per l'elenco completo, vedi Endpoint regionali.
      • log_type: Tipo di log esattamente come appare in Chronicle (CYBERX)

Salvare il file di configurazione

  • Dopo la modifica, salva il file:
    • Linux: premi Ctrl+O, poi Enter e infine Ctrl+X.
    • Windows: fai clic su File > Salva.

Riavvia l'agente Bindplane per applicare le modifiche

  • Per riavviare l'agente Bindplane in Linux, esegui questo comando:

    sudo systemctl restart observiq-otel-collector
    
    1. Verifica che il servizio sia in esecuzione:

        sudo systemctl status observiq-otel-collector
      
    2. Controlla i log per individuare eventuali errori:

        sudo journalctl -u observiq-otel-collector -f
      
  • Per riavviare l'agente Bindplane in Windows, scegli una delle seguenti opzioni:

    • Prompt dei comandi o PowerShell come amministratore:

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • Console dei servizi:

      1. Premi Win+R, digita services.msc e premi Invio.
      2. Individua observIQ OpenTelemetry Collector.
      3. Fai clic con il tasto destro del mouse e seleziona Riavvia.

      4. Verifica che il servizio sia in esecuzione:

        sc query observiq-otel-collector
        
      5. Controlla i log per individuare eventuali errori:

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

Configurare l'inoltro di Syslog in Microsoft Defender for IoT (CyberX)

  1. Accedi alla console del sensore Microsoft Defender for IoT (in precedenza CyberX).
  2. Vai a Impostazioni di sistema > Inoltro.
  3. Fai clic su Aggiungi (o +) per creare una nuova regola di forwarding.
  4. Fornisci i seguenti dettagli di configurazione:
    • Nome regola: inserisci un nome descrittivo (ad esempio, Google-SecOps-Bindplane).
    • Gravità: seleziona Tutti (o seleziona livelli di gravità specifici: Minore, Grave, Critica).
    • Protocollo: seleziona Tutti (o seleziona protocolli specifici da monitorare).
    • Motore: seleziona Tutti (o seleziona motori di rilevamento specifici).
    • Azione: seleziona Invia syslog.
  5. Nella configurazione Syslog Server:
    • Host: inserisci l'indirizzo IP dell'host dell'agente Bindplane.
    • Porta: inserisci 514.
    • Protocollo: seleziona UDP.
    • Formato: seleziona CEF (Common Event Format).
    • Fuso orario: seleziona UTC (opzione consigliata).
  6. Fai clic su Salva.
  7. Attiva la regola di forwarding impostandola su Attiva.
  8. Verifica che i messaggi syslog vengano inviati controllando i log dell'agente Bindplane.

Tabella di mappatura UDM

Campo log Mappatura UDM Logic
Maschera di accesso security_result.detection_fields.value Valore di access_mask da access_request_kvdata analizzato
Dominio dell'account principal.administrative_domain Valore di principal_domain da principal_kvdata analizzato
Dominio dell'account target.administrative_domain Valore di target_domain da target_kvdata analizzato
Nome account principal.user.userid Valore di principal_account_name da principal_kvdata analizzato
Nome account target.user.userid Valore di target_account_name da target_kvdata analizzato
azione security_result.action_details Valore dell'azione
azione security_result.action Derivato. Se l'azione è "accept", "passthrough", "pass", "permit", "detected" o "close", mappala su "ALLOW". Se l'azione è "deny", "dropped" o "blocked", mappala su "BLOCK". Se l'azione è "timeout", mappala su "FAIL". In caso contrario, mappalo su "UNKNOWN_ACTION".
Nome algoritmo security_result.detection_fields.value Valore di algorithm_name da cryptographic_kvdata analizzato
app target.application Valore del servizio se app_protocol_output è vuoto
appcat security_result.detection_fields.value Valore di appcat
Nome applicazione principal.application Valore di application_name
pacchetto di autenticazione security_result.about.resource.name Valore di authentication_package
Avviso di Azure Defender for IoT security_result.detection_fields.value Valore di azure_defender_for_iot_alert
canale security_result.detection_fields.value Valore del canale
Indirizzo client principal.ip, principal.asset.ip Valore di source_ip
Porta client principal.port Valore di source_port
craction security_result.detection_fields.value Valore di frazione
Le credenziali di Gestore delle credenziali sono state sottoposte a backup security_result.description Valore della descrizione
Le credenziali di Gestore delle credenziali sono state lette. security_result.description Valore della descrizione
crscore security_result.severity_details Valore di crscore
crlevel security_result.severity, security_result.severity_details Valore di crlevel. Se crlevel è "HIGH", "MEDIUM", "LOW" o "CRITICAL", esegui il mapping alla gravità UDM corrispondente.
Operazione crittografica metadata.description Valore di product_desc
Nome della piattaforma CyberX security_result.detection_fields.value Valore di cyberx_platform_name
Descrizione security_result.description Valore della descrizione se il messaggio è vuoto
Destinazione target.ip, target.asset.ip o target.hostname Se Destination è un indirizzo IP, mappalo su target.ip e target.asset.ip. In caso contrario, esegui il mapping su target.hostname.
Indirizzo di destinazione target.ip, target.asset.ip Valore di destination_ip da network_information analizzato
DRA di destinazione target.resource.name Valore di destination_dra
IP di destinazione target.ip, target.asset.ip Valore di destination_ip
Porta di destinazione target.port Valore di destination_port da network_information analizzato
devid principal.resource.product_object_id Valore di devid
devname principal.resource.name Valore di devname
Direzione network.direction Se Direction è "incoming", "inbound" o "response", mappalo su "INBOUND". Se la direzione è "in uscita", "in uscita" o "richiesta", mappala su "IN USCITA".
dstip target.ip, target.asset.ip Valore di dstip se destination_ip è vuoto
dstcountry target.location.country_or_region Valore di dstcountry
dstintf security_result.detection_fields.value Valore di dstintf
dstintfrole security_result.detection_fields.value Valore di dstintfrole
dstosname target.platform Valore di dstosname se è "WINDOWS", "LINUX" o "MAC".
dstport target.port Valore di dstport se destination_port è vuoto
dstswversion target.platform_version Valore di dstswversion
duration network.session_duration.seconds Valore della durata
event_id security_result.rule_name Utilizzato per creare il nome della regola come "EventID: %{event_id}"
event_in_sequence security_result.detection_fields.value Valore di event_in_sequence
ID runtime filtro security_result.detection_fields.value Valore di filter_run_time_id da filter_information analizzato
Appartenenza al gruppo security_result.detection_fields.value Valore di group_membership se event_id non è 4627
Appartenenza al gruppo target.user.group_identifiers Valori di group_membership analizzati se event_id è 4627
handle_id security_result.detection_fields.value Valore di handle_id da object_kvdata analizzato
ID handle security_result.detection_fields.value Valore di handle_id da object_kvdata analizzato
impersonation_level security_result.detection_fields.value Valore di impersonation_level da logon_information_kvdata analizzato
Lunghezza della chiave security_result.detection_fields.value Valore di key_length da auth_kvdata analizzato
Nome chiave security_result.detection_fields.value Valore di key_name da cryptographic_kvdata analizzato
Tipo di chiave security_result.detection_fields.value Valore di key_type da cryptographic_kvdata analizzato
parole chiave security_result.detection_fields.value Valore delle parole chiave
Nome livello security_result.detection_fields.value Valore di layer_name da filter_information analizzato
ID runtime del livello security_result.detection_fields.value Valore di layer_run_time_id da filter_information analizzato
logid metadata.product_log_id Valore di logid
GUID di accesso principal.resource.product_object_id Valore di logon_guid
ID accesso security_result.detection_fields.value Valore di logon_id
logon_type event.idm.read_only_udm.extensions.auth.mechanism Derivato. Se logon_type è "3", mappalo a "NETWORK". Se "4", mappalo su "BATCH". Se "5", mappalo su "SERVICE". Se "8", mappalo su "NETWORK_CLEAR_TEXT". Se "9", mappalo a "NEW_CREDENTIALS". Se "10", mappalo su "REMOTE_INTERACTIVE". Se "11", mappalo su "CACHED_INTERACTIVE". Altrimenti, se non è vuoto, mappalo su "MECHANISM_OTHER".
Account di accesso security_result.detection_fields.value Valore di logon_id dall'analisi grok
Procedura di accesso security_result.detection_fields.value Valore di logon_process da auth_kvdata analizzato
Etichetta obbligatoria security_result.detection_fields.value Valore di mandatory_label
mastersrcmac principal.mac Valore di mastersrcmac
Messaggio security_result.description Valore del messaggio
new_process_id target.process.pid Valore di new_process_id da process_kvdata analizzato
new_process_name target.process.file.full_path Valore di new_process_name da process_kvdata analizzato
Nome oggetto security_result.detection_fields.value Valore di object_name da object_kvdata analizzato
Object Server security_result.detection_fields.value Valore di object_server da object_kvdata analizzato
Tipo di oggetto security_result.detection_fields.value Valore di object_type da object_kvdata analizzato
osname principal.platform Valore di osname se è "WINDOWS", "LINUX" o "MAC".
Nome pacchetto (solo NTLM) security_result.detection_fields.value Valore di package_name da auth_kvdata analizzato
policyid security_result.rule_id Valore di policyid
policyname security_result.rule_name Valore di policyname
policytype security_result.rule_type Valore di policytype
ID processo principal.process.pid Valore di process_id
Nome processo principal.process.file.full_path Valore di creator_process_name da process_kvdata analizzato
profile_changed security_result.detection_fields.value Valore di profile_changed
Profilo modificato security_result.detection_fields.value Valore di profile_changed dall'analisi grok
proto network.ip_protocol Se proto è "17", mappalo a "UDP". Se "6" o il sottotipo è "wad", mappalo su "TCP". Se "41", mappa a "IP6IN4". Se il servizio è "PING" o il protocollo è "1" o il servizio contiene "ICMP", mappalo su "ICMP".
Protocollo network.application_protocol Valore di app_protocol_output derivato da Protocol
Nome provider security_result.detection_fields.value Valore di provider_name da provider_kvdata o cryptographic_kvdata analizzati
rcvdbyte network.received_bytes Valore di rcvdbyte
rcvdpkt security_result.detection_fields.value Valore di rcvdpkt
restricted_admin_mode security_result.detection_fields.value Valore di restricted_admin_mode da logon_information_kvdata analizzato
Codice di reso security_result.detection_fields.value Valore di return_code da cryptographic_kvdata analizzato
risposta security_result.detection_fields.value Valore della risposta
rule_id security_result.rule_id Valore di rule_id
ID sicurezza principal.user.windows_sid Valore di principal_security_id da principal_kvdata analizzato
ID sicurezza target.user.windows_sid Valore di target_security_id da target_kvdata analizzato
sentbyte network.sent_bytes Valore di sentbyte
sentpkt security_result.detection_fields.value Valore di sentpkt
servizio network.application_protocol o target.application Valore di app_protocol_output derivato dal servizio. Se app_protocol_output è vuoto, mappalo su target.application.
ID servizio security_result.detection_fields.value Valore di service_id da service_kvdata analizzato
Nome servizio security_result.detection_fields.value Valore di service_name da service_kvdata analizzato
sessionid network.session_id Valore di sessionid
Gravità security_result.severity, security_result.severity_details Se la gravità è "ERROR" o "CRITICAL", esegui il mapping alla gravità UDM corrispondente. Se "INFO", mappalo su "INFORMATIONAL". Se "MINOR", mappalo su "LOW". Se "WARNING", mappalo su "MEDIUM". Se "MAJOR", mappalo a "HIGH". Mappa anche il valore non elaborato su severity_details.
gravità security_result.severity, security_result.severity_details Se la gravità è "1", "2" o "3", mappala su "LOW". Se "4", "5" o "6", mappalo su "MEDIA". Se "7", "8" o "9", mappalo su "HIGH". Mappa anche il valore non elaborato su severity_details.
Nome condivisione security_result.detection_fields.value Valore di share_name da share_information_kvdata analizzato
Percorso condivisione security_result.detection_fields.value Valore di share_path da share_information_kvdata analizzato
Origine principal.ip, principal.asset.ip o principal.hostname, principal.asset.hostname Se l'origine è un indirizzo IP, mappala a principal.ip e principal.asset.ip. Altrimenti, esegui il mapping a principal.hostname e principal.asset.hostname.
Indirizzo di origine principal.ip, principal.asset.ip Valore di source_ip da network_information analizzato
DRA di origine principal.resource.name Valore di source_dra
IP di origine principal.ip Valore di source_ip
Indirizzo di rete di origine principal.ip, principal.asset.ip Valore di source_ip
Porta di origine principal.port Valore di source_port da network_information analizzato
Workstation di origine workstation_name Valore di source_workstation_name
srcip source_ip Valore di srcip se source_ip è vuoto
srccountry principal.location.country_or_region Valore di srccountry
srcmac principal.mac Valore di srcmac
srcname principal.hostname, principal.asset.hostname Valore di srcname
srcport source_port Valore di srcport se source_port è vuoto
srcswversion principal.platform_version Valore di srcswversion
Codice di stato network.http.response_code Valore di status_code
Tipo di elevazione del token security_result.detection_fields.value Valore di token_elevation_type
transited_services security_result.detection_fields.value Valore di transited_services da auth_kvdata analizzato
transip principal.nat_ip Valore di transip
trasporto principal.nat_port Valore del trasporto
tipo metadata.product_event_type Utilizzato con il sottotipo per creare metadata.product_event_type
Tipo security_result.detection_fields.value Valore di tipo
UUID metadata.product_log_id Valore dell'UUID
vd principal.administrative_domain Valore di vd
virtual_account security_result.detection_fields.value Valore di virtual_account da logon_information_kvdata analizzato
Nome della workstation principal.hostname, principal.asset.hostname Valore di workstation_name se non è presente nessun altro identificatore principale
metadata.event_type metadata.event_type Derivato. Se sia principal_present che target_present sono true, esegui il mapping a "NETWORK_CONNECTION". Se user_present è true, esegui il mapping a "USER_RESOURCE_ACCESS". Se principal_present è true, mappalo su "STATUS_UPDATE". In caso contrario, mappalo su "GENERIC_EVENT".
metadata.log_type metadata.log_type Codificato in modo permanente su "CYBERX"
metadata.product_name metadata.product_name Codificato in modo permanente su "CYBERX"
metadata.vendor_name metadata.vendor_name Codificato in modo permanente su "CYBERX"
metadata.event_timestamp metadata.event_timestamp Copiato dal campo timestamp di primo livello o derivato dai campi eventtime o data e ora.

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.