Raccogli i log del rilevatore di minacce DNS di Google Cloud

Supportato in:

Questo documento spiega come importare i log di Google Cloud DNS Threat Detector in Google Security Operations utilizzando Google Cloud Storage V2.

DNS Armor, basato su Infoblox, è un servizio completamente gestito che fornisce sicurezza a livello di DNS per i tuoi carichi di lavoro Google Cloud. Il suo rilevatore delle minacce avanzato è progettato per rilevare attività dannose al punto iniziale della catena di attacco, ovvero la query DNS, senza aggiungere complessità operativa o overhead delle prestazioni. Una volta rilevata una minaccia, puoi ottenere informazioni strategiche sulle minacce DNS tramite Cloud Logging.

Quando abiliti un rilevatore di minacce DNS per un progetto, DNS Armor invia in modo sicuro i log delle query DNS su internet al motore di analisi basato su Google Cloud fornito da Infoblox. Questo motore utilizza una combinazione di feed di intelligence sulle minacce e analisi comportamentale basata sull'AI per identificare le minacce. Qualsiasi attività dannosa rilevata genera un log delle minacce DNS Armor, che viene poi inviato al tuo progetto e scritto in Cloud Logging per consentirti di visualizzarlo e intervenire.

Prima di iniziare

Assicurati di disporre dei seguenti prerequisiti:

  • Istanza Google SecOps.
  • Progetto GCP con l'API Cloud Storage abilitata.
  • Autorizzazioni per creare e gestire bucket GCS.
  • Autorizzazioni per gestire le policy IAM nei bucket GCS.
  • API Network Security abilitata nel tuo progetto.
  • Ruoli IAM richiesti per abilitare un rilevatore di minacce DNS.
  • Autorizzazioni per visualizzare i log delle minacce DNS: resourcemanager.projects.get, resourcemanager.projects.list, networksecurity.dnsThreatDetectors.get, networksecurity.dnsThreatDetectors.list o ruoli roles/networksecurity.dnsThreatDetectorViewer e roles/logging.viewer.

Creazione di un bucket Google Cloud Storage

  1. Vai alla console Google Cloud.
  2. Seleziona il tuo progetto o creane uno nuovo.
  3. Nel menu di navigazione, vai a Cloud Storage > Bucket.
  4. Fai clic su Crea bucket.
  5. Fornisci i seguenti dettagli di configurazione:

    Impostazione Valore
    Assegna un nome al bucket Inserisci un nome univoco globale (ad esempio dns-threat-detector-logs).
    Tipo di località Scegli in base alle tue esigenze (regione singola, doppia regione, più regioni)
    Località Seleziona la posizione (ad esempio, us-central1).
    Classe di archiviazione Standard (consigliato per i log a cui si accede di frequente)
    Controllo dell'accesso Uniforme (consigliato)
    Strumenti di protezione (Facoltativo) Attiva il controllo delle versioni degli oggetti o la policy di conservazione
  6. Fai clic su Crea.

Crea un rilevatore di minacce DNS

Questa sezione descrive come creare un rilevatore di minacce DNS per monitorare le reti VPC e identificare attività DNS dannose dirette a internet.

Puoi attivare un solo rilevatore di minacce DNS per progetto.

Utilizzo di Google Cloud Console

  1. Nella console Google Cloud, vai alla pagina Rilevamento avanzato delle minacce.
  2. Fai clic su Crea rilevatore di minacce DNS.
  3. Inserisci un nome per il rilevatore di minacce DNS.
  4. Seleziona Tutte le reti VPC nel progetto.
  5. Fai clic su Crea.

Utilizzo dello strumento a riga di comando gcloud

In alternativa, crea un rilevatore di minacce DNS utilizzando il comando gcloud:

gcloud beta network-security dns-threat-detectors create my-dns-threat-detector \
--location=global \
--project=PROJECT_ID \
--provider="infoblox"

Sostituisci: - my-dns-threat-detector: il nome del rilevatore di minacce DNS. - PROJECT_ID: il tuo ID progetto.

Configura Cloud Logging per esportare i log di DNS Threat Detection in GCS

I log delle minacce DNS Armor vengono scritti in Cloud Logging. Devi configurare un sink di log per esportare questi log nel bucket GCS.

  1. Nella console Google Cloud, vai a Logging > Router log.
  2. Fai clic su Crea sink.
  3. Fornisci i seguenti dettagli di configurazione:
    • Nome sink: inserisci un nome descrittivo, ad esempio dns-threat-detector-to-gcs.
    • Descrizione sink: descrizione facoltativa.
  4. Fai clic su Avanti.
  5. Nella sezione Seleziona il servizio sink:
    • Servizio sink: seleziona Bucket Cloud Storage.
    • Seleziona bucket Cloud Storage: seleziona il bucket (ad esempio dns-threat-detector-logs) dal menu a discesa.
  6. Fai clic su Avanti.
  7. Nella sezione Scegli i log da includere nel sink, inserisci la seguente query di filtro:

    resource.type="networksecurity.googleapis.com/DnsThreatDetector"
    logName="projects/PROJECT_ID/logs/networksecurity.googleapis.com%2FDnsThreatDetector"
    

Sostituisci PROJECT_ID con l'ID progetto GCP.

  1. Fai clic su Avanti.
  2. Rivedi la configurazione e fai clic su Crea sink.

Utilizzo dello strumento a riga di comando gcloud

In alternativa, crea un sink di log utilizzando il comando gcloud:

gcloud logging sinks create dns-threat-detector-to-gcs \
    gs://dns-threat-detector-logs \
    --log-filter='resource.type="networksecurity.googleapis.com/DnsThreatDetector" AND logName="projects/PROJECT_ID/logs/networksecurity.googleapis.com%2FDnsThreatDetector"' \
    --project=PROJECT_ID

Sostituisci: - dns-threat-detector-logs: il nome del bucket GCS. - PROJECT_ID: il tuo ID progetto GCP.

Recuperare il service account Google SecOps

Google SecOps utilizza un service account univoco per leggere i dati dal tuo bucket GCS. Devi concedere a questo service account l'accesso al tuo bucket.

Configura un feed in Google SecOps per importare i log di Google Cloud DNS Threat Detector

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuovo feed.
  3. Fai clic su Configura un singolo feed.
  4. Nel campo Nome feed, inserisci un nome per il feed (ad esempio, GCP DNS Threat Detector Logs).
  5. Seleziona Google Cloud Storage V2 come Tipo di origine.
  6. Seleziona Google Cloud DNS Threat Detector come Tipo di log.

  7. Fai clic su Ottieni service account.

  8. Verrà visualizzata un'email univoca del service account, ad esempio:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  9. Copia l'indirizzo email. Lo utilizzerai nel prossimo passaggio.

  10. Fai clic su Avanti.

  11. Specifica i valori per i seguenti parametri di input:

    • URL del bucket di archiviazione: inserisci l'URI del bucket GCS con il percorso del prefisso:

      gs://dns-threat-detector-logs/
      

      Sostituisci:

      • dns-threat-detector-logs: il nome del bucket GCS.
    • Opzione di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze:
      • Mai: non elimina mai i file dopo i trasferimenti (opzione consigliata per i test).
      • Elimina file trasferiti: elimina i file dopo il trasferimento riuscito.
      • Elimina file trasferiti e directory vuote: elimina i file e le directory vuote dopo il trasferimento riuscito.
    • Età massima del file: includi i file modificati nell'ultimo numero di giorni. Il valore predefinito è 180 giorni.
    • Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset.
    • Etichette di importazione: l'etichetta da applicare agli eventi di questo feed.
  12. Fai clic su Avanti.

  13. Controlla la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.

Concedi le autorizzazioni IAM al service account Google SecOps

Il service account Google SecOps deve avere il ruolo Visualizzatore oggetti Storage nel bucket GCS.

  1. Vai a Cloud Storage > Bucket.
  2. Fai clic sul nome del bucket (ad esempio dns-threat-detector-logs).
  3. Vai alla scheda Autorizzazioni.
  4. Fai clic su Concedi l'accesso.
  5. Fornisci i seguenti dettagli di configurazione:
    • Aggiungi entità: incolla l'email del service account Google SecOps.
    • Assegna i ruoli: seleziona Visualizzatore oggetti Storage.
  6. Fai clic su Salva.

Tabella di mappatura UDM

Campo log Mappatura UDM Logic
record.jsonPayload.dnsQuery.responseCode, record.jsonPayload.dnsQuery.authAnswer, record.jsonPayload.dnsQuery.queryTime, record.jsonPayload.partnerId, record.jsonPayload.detectionTime, record.logName additional.fields Valori copiati nella mappa di aggiunta, quindi uniti come voci della mappa con value.string_value se non è vuoto
record.receiveTimestamp metadata.collected_timestamp Analizzato come timestamp ISO8601
metadata.event_type Impostato su "NETWORK_CONNECTION" se has_principal e has_target, "STATUS_UPDATE" se has_principal, altrimenti "GENERIC_EVENT"
record.timestamp metadata.event_timestamp Analizzato come timestamp ISO8601
record.insertId metadata.product_log_id Valore copiato direttamente se non è vuoto
record.jsonPayload.dnsQuery.rdata network.dns.answers Valore copiato in answer.data, poi unito come array se non è vuoto
record.jsonPayload.dnsQuery.queryName, record.jsonPayload.dnsQuery.queryType network.dns.questions questions.name da queryName, questions.type mappato dalla stringa queryType a un numero intero, quindi unito come array se non è vuoto
record.jsonPayload.dnsQuery.responseCode network.dns.response_code Mappato da stringa a numero intero utilizzando una tabella predefinita
record.jsonPayload.dnsQuery.protocol network.ip_protocol Valore copiato direttamente se non è vuoto
record.jsonPayload.dnsQuery.sourceIp principal.asset.ip Valore copiato direttamente se non è vuoto
record.jsonPayload.dnsQuery.sourceIp principal.ip Valore copiato direttamente se non è vuoto
record.jsonPayload.dnsQuery.location principal.location.country_or_region Valore copiato direttamente se non è vuoto
record.resource.labels.location principal.location.name Valore copiato direttamente se non è vuoto
record.jsonPayload.dnsQuery.vmProjectNumber, record.jsonPayload.dnsQuery.projectNumber principal.resource.attribute.labels Valori copiati nella mappa di aggiunta, poi uniti come voci della mappa se non sono vuoti
record.jsonPayload.dnsQuery.vmInstanceId principal.resource.id Valore copiato direttamente se non è vuoto
record.resource.labels.id principal.resource.product_object_id Valore copiato direttamente se non è vuoto
record.resource.type principal.resource.type Valore copiato direttamente se non è vuoto
security_result Unito dalla mappa security_result integrata
record.jsonPayload.threatInfo.confidence security_result.confidence Mappato su LOW_CONFIDENCE se corrisponde a (?i)Low, MEDIUM_CONFIDENCE se (?i)Medium, HIGH_CONFIDENCE se (?i)High
record.jsonPayload.threatInfo.threatDescription security_result.description Valore copiato direttamente se non è vuoto
record.jsonPayload.threatInfo.threatIndicatorType, record.jsonPayload.threatInfo.threatIndicator, record.jsonPayload.threatInfo.threatFeed, record.jsonPayload.threatInfo.category, record.jsonPayload.threatInfo.type, record.jsonPayload.threatInfo.threat, record.jsonPayload.threatInfo.severity, record.resource.labels.resource_container security_result.detection_fields Valori copiati nella mappa di aggiunta, poi uniti come voci della mappa se non sono vuoti
record.severity security_result.severity Mappato su LOW se (?i)Low, INFORMATIONAL se (?i)(Informational|Info), MEDIUM se (?i)Medium, CRITICAL se (?i)Critical, HIGH se (?i)High
record.jsonPayload.threatInfo.threatId security_result.threat_id Valore copiato direttamente se non è vuoto
record.jsonPayload.dnsQuery.destinationIp target.asset.ip Valore copiato direttamente se non è vuoto
record.jsonPayload.dnsQuery.destinationIp target.ip Valore copiato direttamente se non è vuoto
metadata.vendor_name Impostato su "Google Cloud"
metadata.product_name Imposta su "Rilevatore di minacce DNS di Google Cloud"

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