Raccogliere i log di DNSFilter

Supportato in:

Questo documento spiega come configurare DNSFilter per inviare i log a Google Security Operations utilizzando i webhook tramite il protocollo HTTP Event Collector (HEC).

DNSFilter è una soluzione di sicurezza DNS basata sull'AI che fornisce protezione dalle minacce, filtri dei contenuti e visibilità della rete. La funzionalità Esportazione dei dati consente l'esportazione automatica dei dati dei log delle query DNS alle piattaforme SIEM tramite l'API HTTP Event Collector (HEC), supportando il monitoraggio della sicurezza in tempo reale e la generazione di report di conformità.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Un'istanza Google SecOps
  • Accesso alla dashboard di DNSFilter con autorizzazioni di amministratore o superiori
  • Funzionalità del componente aggiuntivo Esportazione dei dati di DNSFilter abilitata (disponibile per i piani Basic, Pro ed Enterprise come componente aggiuntivo a pagamento)
  • Accesso alla Google Cloud Console (per la creazione della chiave API)

Creare un feed webhook in Google SecOps

Creare il feed

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuovo feed.
  3. Nella pagina successiva, fai clic su Configura un singolo feed.
  4. Nel campo Nome feed, inserisci un nome per il feed (ad esempio, DNSFilter HEC Feed).
  5. Seleziona Webhook come Tipo di origine.
  6. Seleziona DNSFILTER come Tipo di log.
  7. Fai clic su Avanti.
  8. Specifica i valori per i seguenti parametri di input:
    • Delimitatore di suddivisione (facoltativo): lascia vuoto perché ogni richiesta HEC contiene eventi formattati correttamente
    • Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset
    • Etichette di importazione: l'etichetta da applicare agli eventi di questo feed
  9. Fai clic su Avanti.
  10. Esamina la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.

Generare e salvare la chiave segreta

Dopo aver creato il feed, devi generare una chiave segreta per l'autenticazione:

  1. Nella pagina dei dettagli del feed, fai clic su Genera chiave segreta.
  2. Viene visualizzata una finestra di dialogo con la chiave segreta.
  3. Copia e salva la chiave segreta in modo sicuro.

Recuperare l'URL dell'endpoint del feed

  1. Vai alla scheda Dettagli del feed.
  2. Nella sezione Informazioni sull'endpoint, copia l'URL dell'endpoint del feed.
  3. Il formato dell'URL è:

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate
    

    o

    https://<REGION>-malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate
    
  4. Salva questo URL per i passaggi successivi.

  5. Fai clic su Fine.

Creare una chiave API Google Cloud

Google SecOps richiede una chiave API per l'autenticazione. Crea una chiave API limitata nella Google Cloud Console.

Creare la chiave API

  1. Vai alla pagina Credenziali della console Google Cloud.
  2. Seleziona il tuo progetto (il progetto associato alla tua istanza Google SecOps).
  3. Fai clic su Crea credenziali > Chiave API.
  4. Viene creata una chiave API e visualizzata in una finestra di dialogo.
  5. Fai clic su Modifica chiave API per limitare la chiave.

Limitare la chiave API

  1. Nella pagina delle impostazioni della chiave API: Nome: inserisci un nome descrittivo (ad esempio, Google SecOps DNSFilter Webhook API Key)
  2. In Limitazioni API:
    1. Seleziona Limita chiave.
    2. Nel menu a discesa Seleziona API, cerca e seleziona API Google SecOps (o API Chronicle).
  3. Fai clic su Salva.
  4. Copia il valore della chiave API dal campo Chiave API nella parte superiore della pagina.
  5. Salva la chiave API in modo sicuro.

Configurare l'esportazione dei dati di DNSFilter

Creare l'URL dell'endpoint HEC

  • Combina l'URL dell'endpoint Google SecOps e la chiave API per creare l'URL HEC:

    <ENDPOINT_URL>?key=<API_KEY>
    
  • Esempio:

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...
    

Configurare l'esportazione dei dati in DNSFilter

  1. Accedi alla dashboard di DNSFilter.
  2. Vai a Strumenti > Esportazione dei dati.
  3. Nella sezione Destinazione di esportazione, seleziona HTTP Event Collector (HEC).
  4. Nella sezione Configurazione HEC, inserisci quanto segue:
    • URL HTTP Event Collector: incolla l'URL dell'endpoint completo con la chiave API del passaggio precedente.
    • Token di raccolta eventi attivo: incolla la chiave segreta generata durante la creazione del feed Google SecOps.
  5. Fai clic su Salva configurazione.
  6. DNSFilter testerà la connessione e visualizzerà un messaggio di riuscita se la configurazione è corretta.

Verificare importazione dati

  1. Nella dashboard di DNSFilter, vai a Strumenti > Esportazione dei dati.
  2. Verifica che lo Stato sia Attivo o Connesso.
  3. Nella console Google SecOps, vai a Impostazioni SIEM > Feed.
  4. Individua il feed DNSFilter e verifica che lo Stato sia Attivo.
  5. Fai clic sul nome del feed per visualizzarne i dettagli.
  6. Controlla la metrica Log importati per verificare che i dati vengano trasmessi.
  7. Per cercare gli eventi DNSFilter, vai a Ricerca ed esegui la seguente query:

    metadata.log_type = "DNSFILTER"
    

Riferimento ai metodi di autenticazione

I feed webhook di Google SecOps supportano più metodi di autenticazione. L'integrazione HEC di DNSFilter utilizza il metodo ibrido.

Metodo utilizzato: ibrido (URL + intestazione)

DNSFilter invia la chiave API nell'URL e la chiave segreta (token HEC) nell'intestazione della richiesta.

  • Formato della richiesta:

    POST <ENDPOINT_URL>?key=<API_KEY> HTTP/1.1
    Content-Type: application/json
    Authorization: Splunk <SECRET_KEY>
    
    {
        "event": "data",
        "timestamp": "2025-01-15T10:30:00Z"
    }
    

Metodo alternativo: intestazioni personalizzate

Se configuri un'applicazione personalizzata per inviare i log a Google SecOps, utilizza questo metodo per una maggiore sicurezza.

  • Formato della richiesta:

    POST <ENDPOINT_URL> HTTP/1.1
    Content-Type: application/json
    x-goog-chronicle-auth: <API_KEY>
    x-chronicle-auth: <SECRET_KEY>
    
    {
        "event": "data",
        "timestamp": "2025-01-15T10:30:00Z"
    }
    
  • Vantaggi:

    • La chiave API e il secret non sono visibili nell'URL
    • Più sicuro (le intestazioni non vengono registrate nei log di accesso del server web)
    • Metodo preferito quando il fornitore lo supporta

Nomi delle intestazioni di autenticazione

Google SecOps accetta i seguenti nomi di intestazione per l'autenticazione:

  • Per la chiave API:

    • x-goog-chronicle-auth (consigliata)
    • X-Goog-Chronicle-Auth (senza distinzione tra maiuscole e minuscole)
  • Per la chiave segreta:

    • x-chronicle-auth (consigliata)
    • X-Chronicle-Auth (senza distinzione tra maiuscole e minuscole)
    • Authorization: Splunk <TOKEN> (compatibilità HEC)

Limiti e best practice per i webhook

Limiti per le richieste

Limite Valore
Dimensioni massime della richiesta 4 MB
QPS max (query al secondo) 15.000
Timeout richieste 30 secondi
Comportamento di nuovi tentativi Automatico con backoff esponenziale

Best practice

  • Monitorare lo stato di esportazione: controlla regolarmente lo stato di esportazione dei dati nella dashboard di DNSFilter per garantire un flusso continuo di dati.
  • Rotazione della chiave API: ruota periodicamente la chiave API Google Cloud per la sicurezza.
  • Gestione della chiave segreta: archivia la chiave segreta di Google SecOps in modo sicuro e rigenerala se viene compromessa.
  • Conservazione dei dati: configura policy di conservazione dei dati appropriate sia in DNSFilter sia in Google SecOps.
  • Configurazione degli avvisi: configura gli avvisi in Google SecOps per gli eventi di sicurezza DNS critici.

Risoluzione dei problemi

Test di connessione non riuscito

Se il test di configurazione dell'esportazione dei dati di DNSFilter non va a buon fine:

  1. Verifica che l'URL HEC sia corretto e includa il parametro della chiave API.
  2. Verifica che la chiave segreta (token HEC) sia stata copiata correttamente senza spazi aggiuntivi.
  3. Verifica che la chiave API Google Cloud abbia l'accesso all'API Chronicle abilitato.
  4. Verifica che il feed Google SecOps sia in stato Attivo.
  5. Controlla la connettività di rete da DNSFilter agli endpoint Google Cloud.

Nessun dato visualizzato in Google SecOps

Se la connessione viene stabilita, ma non vengono visualizzati dati:

  1. Verifica che le query DNS vengano generate nel deployment di DNSFilter.
  2. Controlla il log delle query di DNSFilter per verificare che il traffico venga elaborato.
  3. In Google SecOps, cerca metadata.log_type = "DNSFILTER" per verificare l'importazione.
  4. Controlla la metrica Log importati del feed in Google SecOps.
  5. Esamina i log degli errori del feed per individuare eventuali errori di importazione.

L'esportazione dei dati restituisce un messaggio di errore

Cause comuni degli errori:

  • Credenziali non valide: la chiave API o la chiave segreta non sono corrette o sono scadute.
  • Mancata corrispondenza della regione: la regione dell'URL dell'endpoint Google SecOps non corrisponde alla tua istanza.
  • Autorizzazioni: la chiave API non ha l'accesso all'API Chronicle abilitato.
  • Problemi di rete: firewall o proxy che bloccano le connessioni HTTPS in uscita.

Tabella di mapping UDM

Campo log Mapping UDM Funzione logica
tempo metadata.collected_timestamp Convertito utilizzando il formato della data: aaaa-MM-gg HH:mm:ss Z UTC
metadata.event_type Impostato su "STATUS_UPDATE" se principal_ip_present, principal_hostname_present o principal_mac_present è true, altrimenti "GENERIC_EVENT"
question_type network.dns.questions question_type convertito in question.type utilizzando il mapping del tipo di record DNS, quindi unito all'array
codice network.dns.response_code Convertito utilizzando il mapping del codice di risposta DNS
protocollo network.ip_protocol Convertito utilizzando il mapping del protocollo IP
client principal.hostname Valore copiato direttamente
request_address, ip4, ip6, source_addresses principal.ip Unito da request_address (IP estratto), ip4 (IP estratto), ip6 (IP estratto) e IP estratti dall'array source_addresses
regione principal.location.country_or_region Valore copiato direttamente
clientMac principal.mac Valore copiato direttamente se corrisponde all'espressione regolare MAC
clientID principal.resource.product_object_id Valore copiato direttamente
nome utente principal.user.user_display_name Valore copiato direttamente
user_id principal.user.userid Valore copiato direttamente
code, original_code, clientType, collection, network_name, networkID, collectionID, policy, policyID, scheduled_policy, scheduled_policyID, sec_cats, sec_allow_cats, block_cats, block_allow_cats, threat, allowed, method, organization, organizationID, applicationID, application_name, application_categoryID, application_category_name security_result.detection_fields Etichette unite da vari campi di origine come coppie chiave-valore
dominio target.administrative_domain Valore copiato direttamente
fqdn target.domain.name Valore copiato direttamente
metadata.product_name Impostato su "DNSFILTER"
metadata.vendor_name Impostato su "DNSFILTER"

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