Raccogli i log di BloxOne Threat Defense

Versione parser: 8.0

Supportato in:

Questo documento spiega come importare i log di BloxOne Threat Defense in Google Security Operations utilizzando l'agente Bindplane.

Infoblox BloxOne Threat Defense è un servizio di sicurezza DNS gestito dal cloud che genera messaggi syslog in formato CEF per query DNS, eventi di threat intelligence e azioni dei criteri. Il parser normalizza i campi e li mappa al modello Unified Data Model (UDM).

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Un'istanza Google SecOps
  • Windows Server 2016 o versioni successive oppure host Linux con systemd
  • Connettività di rete tra l'agente Bindplane e la piattaforma Infoblox BloxOne
  • 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 al portale Infoblox

Recuperare il file di autenticazione dell'importazione di Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Agenti di raccolta.
  3. Scarica il file di autenticazione dell'acquisizione.
  4. Salva il file in modo sicuro sul sistema in cui verrà installato l'agente 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:

    sc query observiq-otel-collector
    

    Il servizio dovrebbe essere visualizzato come IN ESECUZIONE.

Installazione di Linux

  1. Apri un terminale con privilegi 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:

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

Parametri di configurazione

Sostituisci i seguenti segnaposto:

  • Configurazione del ricevitore:

    • listen_address: Indirizzo IP e porta da ascoltare:
      • 0.0.0.0 per ascoltare su tutte le interfacce (consigliato)
      • La porta 514 è la porta syslog standard (richiede l'accesso root su Linux; utilizza 1514 per l'accesso non root)
  • Configurazione dell'esportatore:

    • creds_file_path: percorso completo del file di autenticazione dell'acquisizione:
      • Linux: /etc/bindplane-agent/ingestion-auth.json
      • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • customer_id: ID cliente copiato dalla console Google SecOps
    • endpoint: URL endpoint regionale:
      • Stati Uniti: malachiteingestion-pa.googleapis.com
      • Europa: europe-malachiteingestion-pa.googleapis.com
      • Asia: asia-southeast1-malachiteingestion-pa.googleapis.com
      • Per un elenco completo, vedi Endpoint regionali.

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"
        

Configura Syslog in Infoblox BloxOne

  1. Accedi al portale Infoblox.
  2. Vai a Configura > Amministrazione > Data Connector.
  3. Seleziona la scheda Configurazione destinazione.
  4. Fai clic su Crea > Syslog.
  5. Fornisci i seguenti dettagli di configurazione:
    • Nome: fornisci un nome descrittivo (ad esempio, raccoglitore Google SecOps).
    • Descrizione: fornisci una breve descrizione.
    • Stato: seleziona Attiva.
    • Tag: fai clic su Aggiungi e specifica quanto segue per associare una chiave alla destinazione:
      • KEY: inserisci un nome descrittivo per la chiave.
      • VALUE: inserisci il valore della chiave.
    • Formato: seleziona CEF.
    • Protocollo: seleziona UDP o TCP (a seconda della configurazione dell'agente Bindplane).
    • FQDN/IP: inserisci l'indirizzo IP dell'agente Bindplane.
    • Porta: inserisci la porta dell'agente Bindplane (il valore predefinito è 514 per UDP).
  6. Fai clic su Salva e chiudi.

Tabella di mappatura UDM

Campo log mapping UDM Logica
additional_list.key Questo campo viene utilizzato in un ciclo per scorrere l'array additional_list ed estrarre i dati in base al valore del campo key. Non è mappato direttamente all'UDM.
additional_list.value principal.location.region_latitude, principal.location.region_longitude, target.location.region_latitude, target.location.region_longitude Questo campo viene utilizzato insieme a additional_list.key per estrarre valori specifici dall'array additional_list. La logica di estrazione e mappatura del valore dipende dal key corrispondente. Ad esempio:
- Se additional_list.key è intel:source:ip:geoIP:location, estrai i valori di latitudine e longitudine utilizzando grok e mappali rispettivamente a principal.location.region_latitude e principal.location.region_longitude.
: se additional_list.key è intel:destination:ip:geoIP:location, estrai i valori di latitudine e longitudine utilizzando grok e mappali rispettivamente a target.location.region_latitude e target.location.region_longitude.
additional_string.key Simile a additional_list.key, questo campo viene utilizzato in un ciclo per scorrere l'array additional_string ed estrarre i dati in base al valore key. Non è mappato direttamente sull'UDM.
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 Utilizzato con additional_string.key per estrarre i valori dall'array additional_string. La logica per la mappatura del valore dipende dall'elemento key corrispondente. Ad esempio:
. Se additional_string.key è intel:source:ip:ip2asn:start_ip, intel:source:ip:ip2asn:finish_ip, intel:destination:ip:ip2asn:start_ip o intel:destination:ip:ip2asn:finish_ip, mappa il valore a additional.fields.value.string_value con la chiave corrispondente.
: se additional_string.key è intel:source:ip:geoIP:country, mappa il valore su principal.location.country_or_region.
: se additional_string.key è intel:destination:ip:geoIP:country, mappa il valore su target.location.country_or_region.
: se additional_string.key è log:source:ip, mappa il valore su src.ip.
: se additional_string.key è log:source:port, mappa il valore su src.port dopo averlo convertito in un numero intero.
: se additional_string.key è log:source:hostname, mappa il valore su src.hostname.
: se additional_string.key è log:cdh:input:protocol, mappa il valore su network.ip_protocol dopo averlo convertito in maiuscolo.
app_category security_result.category_details Mappato direttamente.
confidence security_result.confidence Mappato in base alla seguente logica:
- Se confidence è LOW, esegui la mappatura a LOW_CONFIDENCE.
- Se confidence è MEDIUM, mappalo su MEDIUM_CONFIDENCE.
- Se confidence è HIGH, mappalo su HIGH_CONFIDENCE.
country principal.location.name Mappato direttamente, ma solo se raw.infobloxb1region è vuoto.
device principal.ip, principal.asset.ip Mappato direttamente, ma solo se raw.dvc è vuoto.
dhcp_fingerprint security_result.detection_fields.value Mappato direttamente con il tasto dhcp_fingerprint.
dns_view security_result.detection_fields.value Mappato direttamente con il tasto dns_view.
endpoint_groups security_result.detection_fields.value Mappato direttamente con il tasto endpoint_groups.
event_time metadata.event_timestamp.seconds Analizzato come timestamp ISO8601 e viene estratto il valore dei secondi. Utilizzato solo se il campo timestamp è vuoto.
feed_name principal.resource.name feed_name è mappato a principal.resource.name.
feed_type principal.resource.attribute.labels.value Mappato direttamente con il tasto feed_type.
mac_address principal.mac Mappati direttamente dopo la conversione in lettere minuscole.
network principal.hostname, principal.asset.hostname Mappato direttamente, ma solo se raw.dvchost e raw.dvc sono vuoti.
os_version principal.platform_version Mappato direttamente.
policy_action security_result.action_details, security_result.action policy_action è mappato direttamente a security_result.action_details.
security_result.action viene derivato in base alla seguente logica:
- Se policy_action è Redirect o Log, esegui il mapping a ALLOW.
- Se policy_action è BLOCK, mappalo su BLOCK.
policy_name security_result.detection_fields.value Mappato direttamente con il tasto policy_name.
qname network.dns.questions.name Mappato direttamente.
qtype network.dns.questions.type Mappato in base alla seguente logica:
- Se qtype è A, esegui il mapping a 1 (convertito in numero intero senza segno).
- Se qtype è PTR, mappalo su 12 (convertito in numero intero senza segno).
raw.act security_result.action_details Mappato direttamente.
raw.app network.application_protocol Mappato direttamente dopo la conversione in maiuscolo.
raw.deviceeventclassid metadata.product_event_type Concatenato con raw.name (separato da -) e mappato a metadata.product_event_type.
raw.devicevendor metadata.vendor_name Mappato direttamente.
raw.deviceproduct metadata.product_name Mappato direttamente.
raw.deviceversion metadata.product_version Mappato direttamente.
raw.deviceseverity security_result.severity_details, security_result.severity raw.deviceseverity è mappato direttamente a security_result.severity_details.
security_result.severity viene derivato in base alla seguente logica:
- Se raw.deviceseverity è in [0, 1, 2, 3], mappalo su LOW.
- Se raw.deviceseverity è in [4, 5, 6], mappalo su MEDIUM.
- Se raw.deviceseverity è in [7, 8], mappalo su HIGH.
- Se raw.deviceseverity è in [9, 10], mappalo su CRITICAL.
raw.dvc principal.ip, principal.asset.ip Mappato direttamente.
raw.dvchost principal.hostname, principal.asset.hostname Mappato direttamente, ma solo se non è uguale a raw.dvc.
raw.infobloxb1connectiontype additional.fields.value.string_value Mappato direttamente con il tasto infobloxb1connectiontype.
raw.infobloxb1ophname observer.hostname, observer.asset.hostname Mappato direttamente.
raw.infobloxb1ophipaddress observer.ip Mappato direttamente.
raw.infobloxb1policyname security_result.detection_fields.value Mappato direttamente con il tasto infobloxb1policyname.
raw.infobloxdnsqclass dns_question.class, dns_answer.class Utilizzato per derivare dns_question.class e dns_answer.class in base a una tabella di ricerca definita nel file dns_query_class_mapping.include.
raw.infobloxdnsqtype dns_question.type, dns_answer.type Utilizzato per derivare dns_question.type e dns_answer.type in base a una tabella di ricerca definita nel file dns_record_type.include.
raw.infobloxdnsrcode network.dns.response_code Utilizzato per derivare network.dns.response_code in base a una tabella di ricerca definita nel file dns_response_code.include.
raw.infobloxpolicyid security_result.detection_fields.value Mappato direttamente con il tasto infobloxpolicyid.
raw.msg metadata.description raw.msg viene mappato direttamente a metadata.description dopo la rimozione delle virgolette iniziali e finali.
raw.name metadata.product_event_type Concatenato con raw.deviceeventclassid (separato da -) e mappato a metadata.product_event_type.
rcode security_result.detection_fields.value, network.dns.response_code rcode è mappato direttamente a security_result.detection_fields.value con la chiave rcode.
Se rcode è NXDOMAIN, network.dns.response_code è impostato su 3 (convertito in numero intero senza segno).
rdata network.dns.answers.data Mappato direttamente.
rip target.ip, target.asset.ip Mappato direttamente.
severity security_result.severity Mappatura eseguita in base alla seguente logica:
- Se severity è INFO (senza distinzione tra maiuscole e minuscole), esegui la mappatura a INFORMATIONAL.
- Se severity è HIGH, mappalo su HIGH.
tclass security_result.detection_fields.value Mappato direttamente con il tasto tclass.
threat_indicator security_result.detection_fields.value Mappato direttamente con il tasto threat_indicator.
timestamp metadata.event_timestamp.seconds Analizzato come timestamp ISO8601 e viene estratto il valore dei secondi.
user principal.user.user_display_name Mappato direttamente.
user_groups security_result.detection_fields.value Mappato direttamente con il tasto user_groups.
N/D principal.resource.resource_subtype Imposta questo valore su Feed se feed_name non è vuoto.
N/D metadata.log_type Imposta su BLOXONE.
N/D additional.fields.key Imposta il valore su infobloxancount, infobloxarcount, infobloxb1connectiontype, infobloxnscount, intel:destination:ip:ip2asn:finish_ip, intel:destination:ip:ip2asn:start_ip, intel:source:ip:ip2asn:finish_ip o intel:source:ip:ip2asn:start_ip in base ai campi raw corrispondenti.
N/D metadata.event_type Imposta su STATUS_UPDATE se has_principal è true, altrimenti imposta su GENERIC_EVENT.
N/D network.dns.questions.type Imposta su 1 per i record A e su 12 per i record PTR, convertiti in numeri interi senza segno.
N/D network.dns.answers.name, network.dns.answers.type, network.dns.answers.class Estratto da raw.msg analizzando la stringa di risposta DNS.
N/D intermediary.hostname, intermediary.ip, intermediary.asset.ip Estratto da raw.msg analizzando la stringa di risposta DNS.
intermediaryhost intermediary.hostname Mappato dal log delle modifiche
app_name principal.application Mappato dal log delle modifiche
endpoint_groups", "user_groups", "dns_view", "dhcp_fingerprint", "policy_name", "tclass", "tproperty", "threat_indicator", "category", and "rcode security_result.detection_fields Mappato dal log delle modifiche

Log delle modifiche

Visualizza il log delle modifiche per questo parser

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