Collecter les journaux DNS passifs

Compatible avec :

Ce document explique comment ingérer des journaux DNS passifs dans Google Security Operations à l'aide de Google Cloud Storage V2.

Le DNS passif est une source de données d'intelligence DNS qui capture les enregistrements historiques de résolution DNS pour l'analyse des menaces et l'étude des domaines. Étant donné que les données sont généralement collectées et stockées sous forme de fichiers, vous devez les importer dans un bucket Google Cloud Storage (GCS), puis configurer un flux Google SecOps pour les ingérer.

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

  • Une instance Google SecOps.
  • Un projet Google Cloud avec l'API Cloud Storage activée.
  • Autorisations permettant de créer et de gérer des buckets GCS.
  • Autorisations permettant de gérer les stratégies IAM sur les buckets GCS.
  • Accès aux fichiers de données DNS passifs (par exemple, DNSDB, Farsight ou un autre fournisseur DNS).
  • Données DNS passives exportées dans un format compatible (par exemple, JSON ou CSV).

Créer un bucket Google Cloud Storage

  1. Accédez à la console Google Cloud.
  2. Sélectionnez votre projet ou créez-en un.
  3. Dans le menu de navigation, accédez à Cloud Storage> Buckets.
  4. Cliquez sur Créer un bucket.
  5. Fournissez les informations de configuration suivantes :

    Paramètre Valeur
    Nommer votre bucket Saisissez un nom unique (par exemple, passive-dns-logs).
    Type d'emplacement Choisissez en fonction de vos besoins (région, birégion ou multirégion).
    Emplacement Sélectionnez l'emplacement le plus proche de votre instance Google SecOps (par exemple, us-central1).
    Classe de stockage Standard (recommandé pour les journaux auxquels vous accédez fréquemment)
    Access control (Contrôle des accès) Uniforme (recommandé)
    Outils de protection Facultatif : Activez la gestion des versions des objets ou la règle de conservation.
  6. Cliquez sur Créer.

Configurer l'exportation automatique des données DNS passives vers GCS

Les données DNS passives sont généralement disponibles sous forme de fichiers exportés à partir d'un fournisseur d'informations DNS (par exemple, Farsight DNSDB, DomainTools ou Cisco Umbrella Investigate). Pour que les données de GCS restent à jour, configurez un pipeline d'exportation automatisé à l'aide de l'une des approches suivantes.

Utilisez Cloud Build déclenché par Cloud Scheduler pour exécuter un job conteneurisé qui récupère les données DNS passives auprès de votre fournisseur et les écrit dans GCS.

  1. Créez un compte de service pour le job d'exportation :

    1. Dans la console GCP, accédez à IAM et administration > Comptes de service.
    2. Cliquez sur Créer un compte de service.
    3. Fournissez les informations de configuration suivantes :
      • Nom du compte de service : saisissez passive-dns-export-sa.
      • Description du compte de service : saisissez Service account for automated Passive DNS data export to GCS.
    4. Cliquez sur Créer et continuer.
    5. Ajoutez les rôles suivants :
      • Administrateur des objets Storage (pour écrire des fichiers dans GCS)
      • Éditeur Cloud Build (pour exécuter des jobs Cloud Build)
    6. Cliquez sur OK.
  2. Créez un fichier de configuration Cloud Build (cloudbuild.yaml) :

    steps:
      - name: 'gcr.io/cloud-builders/gcloud'
        entrypoint: 'bash'
        args:
          - '-c'
          - |
            apt-get update && apt-get install -y curl jq
            # Fetch Passive DNS data from your provider
            # Replace with the actual API call for your provider
            # Example for Farsight DNSDB:
            TIMESTAMP=$(date -u +%Y%m%d_%H%M%S)
            curl -s -H "X-API-Key: $${PDNS_API_KEY}" \
              "https://api.dnsdb.info/dnsdb/v2/lookup/rrset/name/*.example.com" \
              -o /workspace/passive_dns_$${TIMESTAMP}.json
            # Upload to GCS
            gcloud storage cp /workspace/passive_dns_$${TIMESTAMP}.json \
              gs://${_BUCKET_NAME}/passive-dns/
    substitutions:
      _BUCKET_NAME: 'passive-dns-logs'
    
  3. Stockez la clé API en tant que secret Secret Manager :

    1. Dans la console GCP, accédez à Sécurité > Secret Manager.
    2. Cliquez sur Créer un secret.
    3. Saisissez pdns-api-key comme nom du secret.
    4. Saisissez la clé API de votre fournisseur DNS passif en tant que valeur secrète.
    5. Cliquez sur Créer.
  4. Créez un job Cloud Scheduler pour déclencher la compilation :

    1. Dans la console GCP, accédez à Cloud Scheduler.
    2. Cliquez sur Créer une tâche.
    3. Fournissez les informations de configuration suivantes :

      Paramètre Valeur
      Nom passive-dns-export-daily
      Région Sélectionnez la même région que votre bucket GCS.
      Fréquence 0 3 * * * (tous les jours à 3h00 UTC)
      Fuseau horaire UTC (recommandé)
      Type de cible HTTP
      URL https://cloudbuild.googleapis.com/v1/projects/YOUR_PROJECT_ID/builds
      Méthode HTTP POST
      En-tête d'authentification Ajouter un jeton OAuth
      Compte de service passive-dns-export-sa@YOUR_PROJECT_ID.iam.gserviceaccount.com
    4. Cliquez sur Créer.

Option 2 : Service de transfert de stockage (pour les dépôts de données sur site)

Si les données DNS passives sont stockées dans un système de fichiers sur site, utilisez le service de transfert de stockage avec un agent de transfert.

  1. Dans la console GCP, accédez à Service de transfert de stockage.
  2. Cliquez sur Créer un job de transfert.
  3. Sélectionnez Système de fichiers POSIX comme source.
  4. Suivez les instructions pour installer l'agent Storage Transfer sur une machine ayant accès aux fichiers de données DNS passifs.
  5. Configurez la tâche de transfert :

    Paramètre Valeur
    Répertoire source Chemin d'accès au répertoire contenant les fichiers de données DNS passifs
    Bucket de destination passive-dns-logs
    Chemin de destination passive-dns/
    Programmation Définir une programmation récurrente (par exemple, quotidienne)
  6. Cliquez sur Créer.

Récupérer le compte de service Google SecOps

  1. Accédez à Paramètres SIEM> Flux.
  2. Cliquez sur Add New Feed (Ajouter un flux).
  3. Cliquez sur Configurer un flux unique.
  4. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Passive DNS Logs).
  5. Sélectionnez Google Cloud Storage V2 comme Type de source.
  6. Sélectionnez DNS passif comme Type de journal.
  7. Cliquez sur Obtenir un compte de service.
  8. Une adresse e-mail unique pour le compte de service s'affiche, par exemple :

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  9. Copiez cette adresse e-mail pour l'utiliser à l'étape suivante.

Accorder des autorisations IAM au compte de service Google SecOps

Le compte de service Google SecOps a besoin du rôle Lecteur des objets Storage sur votre bucket GCS.

  1. Accédez à Cloud Storage > Buckets.
  2. Cliquez sur le nom de votre bucket (par exemple, passive-dns-logs).
  3. Accédez à l'onglet Autorisations.
  4. Cliquez sur Accorder l'accès.
  5. Fournissez les informations de configuration suivantes :
    • Ajouter des comptes principaux : collez l'adresse e-mail du compte de service Google SecOps (par exemple, chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com).
    • Attribuer des rôles : sélectionnez Lecteur d'objets Storage.
  6. Cliquez sur Enregistrer.

Configurer le flux Google SecOps

  1. Accédez à Paramètres SIEM> Flux.
  2. Cliquez sur Add New Feed (Ajouter un flux).
  3. Cliquez sur Configurer un flux unique.
  4. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Passive DNS Logs).
  5. Sélectionnez Google Cloud Storage V2 comme Type de source.
  6. Sélectionnez DNS passif comme Type de journal.
  7. Cliquez sur Suivant.
  8. Spécifiez les valeurs des paramètres d'entrée suivants :

    • URL du bucket de stockage : saisissez l'URI du bucket GCS :

      gs://passive-dns-logs/passive-dns/
      
      • Remplacez passive-dns-logs par le nom de votre bucket GCS.
      • Remplacez passive-dns par le chemin d'accès au préfixe que vous avez configuré.
    • Option de suppression de la source : sélectionnez l'option de suppression de votre choix :

      • Jamais : ne supprime jamais aucun fichier après les transferts (recommandé pour les tests).
      • Supprimer les fichiers transférés : supprime les fichiers après un transfert réussi.
      • Supprimer les fichiers transférés et les répertoires vides : supprime les fichiers et les répertoires vides après un transfert réussi.

    • Âge maximal des fichiers : incluez les fichiers modifiés au cours des derniers jours (180 jours par défaut).

    • Espace de noms de l'élément : espace de noms de l'élément.

    • Libellés d'ingestion : libellé à appliquer aux événements de ce flux.

  9. Cliquez sur Suivant.

  10. Vérifiez la configuration de votre nouveau flux sur l'écran Finaliser, puis cliquez sur Envoyer.

Table de mappage UDM

Champ de journal Mappage UDM Logique
nom d'hôte intermediary.hostname Valeur copiée directement
timestamp_s metadata.event_timestamp Analysé en tant qu'horodatage UNIX
metadata.event_type Définissez-le sur "NETWORK_DNS".
network.application_protocol Définissez-le sur "DNS".
réponse network.dns.answers.data Valeur de la réponse après suppression du point final
ttl network.dns.answers.ttl Converti en entier
classe network.dns.questions.class Mappé à une valeur numérique (1 pour IN, 3 pour CH, 4 pour HS)
requête network.dns.questions.name Valeur de la requête après suppression du point final
type network.dns.questions.type Mappé du type (en majuscules) à la valeur numérique à l'aide du mappage de type DNS
Client principal.ip Valeur copiée directement
serveur target.ip Valeur copiée directement
metadata.product_name Définissez le paramètre sur "DNS passif".

Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.