Raccogli i log di DNSFilter
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
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuovo feed.
- Nella pagina successiva, fai clic su Configura un singolo feed.
- Nel campo Nome feed, inserisci un nome per il feed (ad esempio,
DNSFilter HEC Feed). - Seleziona Webhook come Tipo di origine.
- Seleziona DNSFILTER come Tipo di log.
- Fai clic su Avanti.
- 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
- Fai clic su Avanti.
- 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:
- Nella pagina dei dettagli del feed, fai clic su Genera chiave segreta.
- Una finestra di dialogo mostra la chiave segreta.
Copia e salva la chiave segreta in modo sicuro.
Recuperare l'URL dell'endpoint del feed
- Vai alla scheda Dettagli del feed.
- Nella sezione Endpoint Information (Informazioni sull'endpoint), copia l'URL dell'endpoint del feed.
Il formato dell'URL è:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreateo
https://<REGION>-malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreateSalva questo URL per i passaggi successivi.
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
- Vai alla pagina Credenziali della console Google Cloud.
- Seleziona il tuo progetto (quello associato alla tua istanza di Google SecOps).
- Fai clic su Crea credenziali > Chiave API.
- Viene creata una chiave API e visualizzata in una finestra di dialogo.
- Fai clic su Modifica chiave API per limitare la chiave.
Limitare la chiave API
- Nella pagina delle impostazioni Chiave API:
Nome: inserisci un nome descrittivo (ad esempio,
Google SecOps DNSFilter Webhook API Key). - In Limitazioni API:
- Seleziona Limita chiave.
- Nel menu a discesa Seleziona API, cerca e seleziona API Google SecOps (o API Chronicle).
- Fai clic su Salva.
- Copia il valore della chiave API dal campo Chiave API nella parte superiore della pagina.
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
- Accedi alla dashboard di DNSFilter.
- Vai a Strumenti > Esportazione dei dati.
- Nella sezione Destinazione esportazione, seleziona HTTP Event Collector (HEC).
- 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.
- Fai clic su Salva configurazione.
DNSFilter testerà la connessione e visualizzerà un messaggio di operazione riuscita se la configurazione è corretta.
Verificare l'importazione dati
- Nella dashboard di DNSFilter, vai a Strumenti > Esportazione dati.
- Verifica che lo Stato sia Attivo o Connesso.
- Nella console Google SecOps, vai a Impostazioni SIEM > Feed.
- Individua il feed DNSFilter e verifica che lo stato sia Attivo.
- Fai clic sul nome del feed per visualizzarne i dettagli.
- Controlla la metrica Log importati per verificare che i dati vengano trasferiti.
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:
- Verifica che l'URL HEC sia corretto e includa il parametro della chiave API.
- Verifica che la chiave segreta (token HEC) sia copiata correttamente senza spazi aggiuntivi.
- Verifica che l'accesso all'API Chronicle sia abilitato per la chiave API Google Cloud.
- Verifica che il feed Google SecOps sia nello stato Attivo.
- 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:
- Verifica che le query DNS vengano generate nel deployment di DNSFilter.
- Controlla il log delle query di DNSFilter per verificare che il traffico venga elaborato.
- In Google SecOps, cerca
metadata.log_type = "DNSFILTER"per verificare l'importazione. - Controlla la metrica Log inseriti del feed in Google SecOps.
- 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.