Raccogliere i log DNS di Infoblox

Supportato in:

Questo documento spiega come importare i log DNS di Infoblox in Google Security Operations utilizzando Bindplane.

Il parser estrae i campi dai log formattati Infoblox DNS SYSLOG e CEF. 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 all'interfaccia web di Infoblox Grid Manager

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: 'INFOBLOX_DNS'
            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 (INFOBLOX_DNS)

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 l'inoltro di Syslog su Infoblox DNS

  1. Accedi all'interfaccia web di Infoblox Grid Manager.
  2. Vai a Griglia > Gestione griglia > Membri.
  3. Seleziona il membro da configurare e fai clic su Modifica.
  4. Vai alla scheda Monitoraggio.
  5. Nella sezione Syslog, fai clic su Aggiungi per aggiungere un nuovo server syslog.
  6. Fornisci i seguenti dettagli di configurazione:
    • Indirizzo: inserisci l'indirizzo IP dell'host dell'agente Bindplane.
    • Porta: inserisci 514.
    • Trasporto: seleziona UDP.
    • ID nodo: seleziona il nodo Infoblox (per le coppie HA).
    • Gravità: seleziona Informazioni (o il livello di gravità che preferisci).
    • Struttura: seleziona local0 (o la struttura che preferisci).
  7. Attiva le seguenti categorie di log:
    • Query DNS: seleziona Registra query DNS in Proprietà DNS della griglia > Logging.
    • Risposte DNS: seleziona Registra risposte DNS.
    • DHCP: attiva la registrazione DHCP in Proprietà DHCP della griglia.
    • Audit: attiva la registrazione dei controlli in Proprietà griglia > Monitoraggio.
  8. Fai clic su Salva e chiudi.
  9. Se necessario, riavvia il servizio DNS.
  10. Verifica che i messaggi syslog vengano inviati controllando i log dell'agente Bindplane.

Tabella di mappatura UDM

Campo log Mappatura UDM Logic
agent.hostname principal.hostname Per i log in formato CEF, se esiste agent.hostname, viene mappato a principal.hostname.
client_ip principal.ip Per i log in formato CEF, se esiste client_ip, viene mappato a principal.ip.
client_port principal.port Per i log in formato CEF, se esiste client_port, viene mappato a principal.port.
dati answers.data Estratto dal campo dati della sezione delle risposte nel log non elaborato. Le occorrenze multiple vengono mappate come oggetti di risposta separati.
descrizione metadata.description Mappato direttamente dal campo di descrizione del log non elaborato o estratto utilizzando pattern grok da altri campi come messaggio e msg2.
dest_ip1 target.ip Estratto dal log non elaborato e mappato su target.ip.
destinationDnsDomain dns_question.name Per i log in formato CEF, se esiste destinationDnsDomain, viene mappato a dns_question.name.
dns_class dns_question.class Mappato utilizzando la tabella di ricerca dns_query_class_mapping.include.
dns_domain dns_question.name Estratto dal campo del messaggio del log non elaborato utilizzando i pattern grok e mappato a dns_question.name.
dns_name dns_question.name Estratto dal campo dns_domain utilizzando pattern grok e mappato a dns_question.name.
dns_records answers.data Per i log in formato CEF, se esiste dns_records, viene mappato a answers.data. Le occorrenze multiple vengono mappate come oggetti di risposta separati.
dst_ip target.ip o target.hostname Estratto dal campo del messaggio del log non elaborato utilizzando i pattern grok. Se è un indirizzo IP valido, viene mappato su target.ip; altrimenti, viene mappato su target.hostname.
dst_ip1 target.ip o target.hostname Estratto dal campo messaggio o msg2 del log non elaborato utilizzando i pattern grok. Se è un indirizzo IP valido, viene mappato su target.ip; altrimenti, viene mappato su target.hostname. Mappato solo se diverso da dst_ip.
evt_type metadata.product_event_type Mappato direttamente dal campo evt_type del log non elaborato, che viene estratto dal campo del messaggio utilizzando i pattern grok.
InfobloxB1OPHIPAddress principal.ip Per i log in formato CEF, se esiste InfobloxB1OPHIPAddress, viene mappato a principal.ip.
InfobloxB1Region principal.location.country_or_region Per i log in formato CEF, se esiste InfobloxB1Region, viene mappato a principal.location.country_or_region.
InfobloxDNSQType dns_question.type Per i log formattati CEF, se esiste InfobloxDNSQType, viene mappato a dns_question.type.
intermediario intermediary.ip o intermediary.hostname Estratto dal campo del messaggio del log non elaborato utilizzando i pattern grok. Se è un indirizzo IP valido, viene mappato a intermediary.ip; in caso contrario, viene mappato a intermediary.hostname.
msg2 metadata.description, dns.response_code, dns_question.name, target.ip, target.hostname, answers.name, answers.ttl, answers.data, answers.class, answers.type, security_result.severity Estratto dal campo del messaggio del log non elaborato utilizzando i pattern grok. Utilizzato per estrarre vari campi, ma non mappato direttamente a UDM.
name1 answers.name Estratto dal campo msg2 del log non elaborato utilizzando i pattern grok e mappato a answers.name.
name2 answers.name Estratto dal campo msg2 del log non elaborato utilizzando i pattern grok e mappato a answers.name.
protocollo network.ip_protocol Mappato direttamente dal campo del protocollo del log non elaborato se corrisponde a protocolli noti.
qclass dns_question.class Campo intermedio utilizzato per mappare dns_class a UDM.
qclass1 answers.class Campo intermedio utilizzato per mappare dns_class1 a UDM.
qclass2 answers.class Campo intermedio utilizzato per mappare dns_class2 a UDM.
query_type dns_question.type Mappato utilizzando la tabella di ricerca dns_record_type.include.
query_type1 answers.type Mappato utilizzando la tabella di ricerca dns_record_type.include.
query_type2 answers.type Mappato utilizzando la tabella di ricerca dns_record_type.include.
recursion_flag network.dns.recursion_desired Se recursion_flag contiene un "+", viene mappato a network.dns.recursion_desired come true.
record_type dns_question.type Campo intermedio utilizzato per mappare query_type a UDM.
record_type1 answers.type Campo intermedio utilizzato per mappare query_type1 a UDM.
record_type2 answers.type Campo intermedio utilizzato per mappare query_type2 a UDM.
res_code network.dns.response_code Mappato utilizzando la tabella di ricerca dns_response_code.include.
response_code network.dns.response_code Per i log in formato CEF, se esiste response_code, viene mappato a network.dns.response_code utilizzando la tabella di ricerca dns_response_code.include.
security_action security_result.action Derivato dal campo Stato. Se lo stato è "denied" (negato), security_action è impostato su "BLOCK" (BLOCCO); in caso contrario, è impostato su "ALLOW" (CONSENTI).
gravità security_result.severity Per i log formattati CEF, se la gravità esiste ed è "informativa", viene mappata a security_result.severity come "INFORMATIONAL".
src_host principal.hostname Estratto dal campo descrizione o messaggio del log non elaborato utilizzando i pattern grok e mappato a principal.hostname.
src_ip principal.ip o principal.hostname Estratto dal campo del messaggio del log non elaborato utilizzando i pattern grok. Se è un indirizzo IP valido, viene mappato a principal.ip; in caso contrario, viene mappato a principal.hostname.
src_port principal.port Estratto dal campo del messaggio del log non elaborato utilizzando i pattern grok e mappato su principal.port.
ttl1 answers.ttl Estratto dal campo msg2 del log non elaborato utilizzando pattern grok e mappato su answers.ttl.
ttl2 answers.ttl Estratto dal campo msg2 del log non elaborato utilizzando pattern grok e mappato su answers.ttl.
metadata.event_type metadata.event_type Derivato da vari campi e dalla logica del parser. Il valore predefinito è GENERIC_EVENT se non viene identificato nessun altro tipo di evento. I valori possibili includono NETWORK_DNS, NETWORK_CONNECTION e STATUS_UPDATE.
metadata.log_type metadata.log_type Impostato su "INFOBLOX_DNS" dal parser.
metadata.product_name metadata.product_name Impostato su "Infoblox DNS" dal parser.
metadata.vendor_name metadata.vendor_name Impostato su "INFOBLOX" dal parser.
metadata.product_version metadata.product_version Estratto dai messaggi CEF.
metadata.event_timestamp metadata.event_timestamp Copiato dal campo timestamp.
network.application_protocol network.application_protocol Impostato su "DNS" se event_type non è "GENERIC_EVENT" o "STATUS_UPDATE".

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