Raccogli i log di DNSFilter

Supportato in:

Questo documento spiega come configurare DNSFilter per eseguire il push dei log in 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, filtraggio dei contenuti e visibilità della rete. La funzionalità di 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 i report di conformità.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

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

Crea 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:
    • (Facoltativo) Delimitatore di suddivisione: lascia vuoto, poiché 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. Controlla la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.

Genera e salva 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. Una finestra di dialogo mostra 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 Endpoint Information (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 con limitazioni nella Google Cloud Console.

Crea la chiave API

  1. Vai alla pagina Credenziali della console Google Cloud.
  2. Seleziona il tuo progetto (quello associato alla tua istanza di 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 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

Costruisci 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 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 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 operazione riuscita se la configurazione è corretta.

Verificare l'importazione dati

  1. Nella dashboard di DNSFilter, vai a Strumenti > Esportazione 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 trasferiti.
  7. Per cercare gli eventi DNSFilter, vai a Cerca 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 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:

    • Chiave API e secret non visibili nell'URL
    • Più sicuro (le intestazioni non vengono registrate nei log di accesso del server web)
    • Metodo preferito se supportato dal fornitore

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à con 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 ripetizione Automatico con backoff esponenziale

Best practice

  • Monitora lo stato dell'esportazione: controlla regolarmente lo stato dell'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 motivi di sicurezza.
  • Gestione della chiave segreta: archivia la chiave segreta di Google SecOps in modo sicuro e rigenerala se è compromessa.
  • Conservazione dei dati: configura criteri di conservazione dei dati appropriati sia in DNSFilter che in Google SecOps.
  • Configurazione degli avvisi: configura gli avvisi in Google SecOps per gli eventi di sicurezza DNS critici.

Risoluzione dei problemi

Il test di connessione non riesce

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 copiata correttamente senza spazi aggiuntivi.
  3. Verifica che l'accesso all'API Chronicle sia abilitato per la chiave API Google Cloud.
  4. Verifica che il feed Google SecOps sia nello 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 inseriti del feed in Google SecOps.
  5. Controlla i log degli errori del feed per individuare eventuali errori di importazione.

L'esportazione dei dati restituisce un messaggio di errore

Cause comuni di errore:

  • Credenziali non valide: la chiave API o la chiave segreta non è corretta o è scaduta.
  • 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 mappatura UDM

Campo log Mappatura UDM Logic
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 È stato convertito question_type in question.type utilizzando il mapping dei tipi di record DNS, poi è stato unito all'array
codice network.dns.response_code Convertito utilizzando la mappatura del codice di risposta DNS
protocollo network.ip_protocol Convertito utilizzando il mapping dei protocolli 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 dagli 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 Imposta su "DNSFILTER"
metadata.vendor_name Imposta su "DNSFILTER"

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