Collecter les journaux DNSFilter

Version de l'analyseur : 1.0

Compatible avec :

Ce document explique comment configurer DNSFilter pour transférer des journaux vers Google Security Operations à l'aide de webhooks via le protocole HEC (HTTP Event Collector).

DNSFilter est une solution de sécurité DNS basée sur l'IA qui offre une protection contre les menaces, un filtrage de contenu et une visibilité sur le réseau. La fonctionnalité d'exportation de données permet d'exporter automatiquement les données des journaux de requêtes DNS vers des plates-formes SIEM via l'API HEC (HTTP Event Collector), ce qui permet de surveiller la sécurité et de générer des rapports de conformité en temps réel.

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

  • Une instance Google SecOps
  • Accès au tableau de bord DNSFilter avec des autorisations d'administrateur ou de niveau supérieur
  • La fonctionnalité complémentaire DNSFilter Data Export est activée (disponible pour les forfaits Basic, Pro et Enterprise en tant que module complémentaire payant).
  • Accès à la Google Cloud Console (pour créer une clé API)

Créer un flux de webhook dans Google SecOps

Créer le flux

  1. Accédez à Paramètres > Gestion des données > Flux. Si vous utilisez une plate-forme SIEM uniquement, accédez à Paramètres > Flux.
  2. Cliquez sur Ajouter un flux d'actualités.
  3. Sur la page suivante, cliquez sur Configurer un seul flux.
  4. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, DNSFilter HEC Feed).
  5. Sélectionnez Webhook comme type de source.
  6. Sélectionnez DNSFILTER comme type de journal.
  7. Cliquez sur Suivant.
  8. Spécifiez les valeurs des paramètres d'entrée suivants :
    • Délimiteur de division (facultatif) : laissez ce champ vide, car chaque requête HEC contient des événements correctement formatés.
    • Espace de noms de l'élément : espace de noms de l'élément
    • Étiquettes d'ingestion : étiquette à appliquer aux événements de ce flux.
  9. Cliquez sur Suivant.
  10. Vérifiez la configuration de votre nouveau flux d'actualités sur l'écran Finaliser, puis cliquez sur Envoyer.

Générer et enregistrer une clé secrète

Après avoir créé le flux, vous devez générer une clé secrète pour l'authentification :

  1. Sur la page d'informations du flux, cliquez sur Générer une clé secrète.
  2. Une boîte de dialogue affiche la clé secrète.
  3. Copiez et enregistrez la clé secrète de manière sécurisée.

Obtenir l'URL du point de terminaison du flux

  1. Accédez à l'onglet Détails du flux.
  2. Dans la section Informations sur le point de terminaison, copiez l'URL du point de terminaison du flux.
  3. Le format d'URL est le suivant :

    https://{region}-chronicle.googleapis.com/v1/{parent}/logs:import
    

    Où {region} est la région de votre instance Google SecOps (par exemple, us, europe ou asia-southeast1) et {parent} est le chemin d'accès à la ressource au format projects/<PROJECT_ID>/locations/<LOCATION>/instances/<INSTANCE_ID>/logTypes/<LOG_TYPE>.

  4. Enregistrez cette URL pour les étapes suivantes.

  5. Cliquez sur OK.

Créer une clé API Google Cloud

Google SecOps nécessite une clé API pour l'authentification. Créez une clé API restreinte dans la Google Cloud Console.

Créer la clé API

  1. Accédez à la page Identifiants de la console Google Cloud.
  2. Sélectionnez votre projet (celui associé à votre instance Google SecOps).
  3. Cliquez sur Créer des identifiants > Clé API.
  4. Une clé API est créée et s'affiche dans une boîte de dialogue.
  5. Cliquez sur Modifier la clé API pour restreindre la clé.

Restreindre la clé API

  1. Sur la page des paramètres de la clé API : Nom : saisissez un nom descriptif (par exemple, Google SecOps DNSFilter Webhook API Key).
  2. Sous Restrictions relatives aux API :
    1. Sélectionnez Restreindre la clé.
    2. Dans le menu déroulant Sélectionner des API, recherchez et sélectionnez API Google SecOps (ou API Chronicle).
  3. Cliquez sur Enregistrer.
  4. Copiez la valeur de la clé API dans le champ Clé API en haut de la page.
  5. Enregistrez la clé API de manière sécurisée.

Configurer l'exportation de données DNSFilter

Créer l'URL du point de terminaison HEC

  • Combinez l'URL du point de terminaison Google SecOps et la clé API pour créer l'URL HEC :

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

    https://{region}-chronicle.googleapis.com/v1/{parent}/logs:import?key=AIzaSyD...
    

Configurer l'exportation de données dans DNSFilter

  1. Connectez-vous au tableau de bord DNSFilter.
  2. Accédez à Outils > Exportation de données.
  3. Dans la section Destination d'exportation, sélectionnez Collecteur d'événements HTTP (HEC).
  4. Dans la section HEC Configuration (Configuration HEC), saisissez les informations suivantes :
    • URL du collecteur d'événements HTTP : collez l'URL complète du point de terminaison avec la clé API de l'étape précédente.
    • Jeton de collecteur d'événements actif : collez la clé secrète générée lors de la création du flux Google SecOps.
  5. Cliquez sur Enregistrer la configuration.
  6. DNSFilter testera la connexion et affichera un message de réussite si la configuration est correcte.

Vérifier l'ingestion des données

  1. Dans le tableau de bord DNSFilter, accédez à Tools > Data Export (Outils > Exportation de données).
  2. Vérifiez que l'état est Actif ou Connecté.
  3. Dans Google SecOps, accédez à Paramètres > Gestion des données > Flux. Si vous utilisez une plate-forme SIEM uniquement, accédez à Paramètres > Flux.
  4. Recherchez votre flux DNSFilter et vérifiez que l'état est Actif.
  5. Cliquez sur le nom du flux pour en afficher les détails.
  6. Vérifiez la métrique Journaux ingérés pour confirmer que les données sont bien transmises.
  7. Pour rechercher des événements DNSFilter, accédez à Recherche, puis exécutez la requête suivante :

    metadata.log_type = "DNSFILTER"
    

Référence des méthodes d'authentification

Les flux de webhook Google SecOps sont compatibles avec plusieurs méthodes d'authentification. L'intégration DNSFilter HEC utilise la méthode hybride.

Méthode utilisée : hybride (URL + en-tête)

DNSFilter envoie la clé API dans l'URL et la clé secrète (jeton HEC) dans l'en-tête de requête.

  • Format de la requête :

    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"
    }
    

Autre méthode : en-têtes personnalisés

Si vous configurez une application personnalisée pour envoyer des journaux à Google SecOps, utilisez cette méthode pour une meilleure sécurité.

  • Format de la requête :

    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"
    }
    
  • Avantages :

    • La clé API et le secret ne sont pas visibles dans l'URL
    • Plus sécurisé (les en-têtes ne sont pas enregistrés dans les journaux d'accès du serveur Web)
    • Méthode privilégiée lorsque le fournisseur la prend en charge

Noms des en-têtes d'authentification

Google SecOps accepte les noms d'en-tête suivants pour l'authentification :

  • Pour la clé API :

    • x-goog-chronicle-auth (recommandé)
    • X-Goog-Chronicle-Auth (non sensible à la casse)
  • Pour la clé secrète :

    • x-chronicle-auth (recommandé)
    • X-Chronicle-Auth (non sensible à la casse)
    • Authorization: Splunk <TOKEN> (compatibilité HEC)

Limites et bonnes pratiques concernant les webhooks

Limites de requêtes

Limite Valeur
Taille maximale de la requête 4 Mo
Nombre maximal de RPS (requêtes par seconde) 15 000
Délai avant expiration de la requête 30 seconds
Comportement de nouvelle tentative Automatique avec intervalle exponentiel entre les tentatives

Bonnes pratiques

  • Surveillez l'état de l'exportation : vérifiez régulièrement l'état de l'exportation des données dans le tableau de bord DNSFilter pour assurer un flux de données continu.
  • Rotation des clés API : effectuez régulièrement une rotation de votre clé API Google Cloud pour des raisons de sécurité.
  • Gestion des clés secrètes : stockez la clé secrète Google SecOps de manière sécurisée et régénérez-la si elle est compromise.
  • Conservation des données : configurez des règles de conservation des données appropriées dans DNSFilter et Google SecOps.
  • Configuration des alertes : configurez des alertes dans Google SecOps pour les événements liés à la sécurité DNS critiques.

Dépannage

Échec du test de connexion

Si le test de configuration de l'exportation de données DNSFilter échoue :

  1. Vérifiez que l'URL HEC est correcte et qu'elle inclut le paramètre de clé API.
  2. Vérifiez que la clé secrète (jeton HEC) est copiée correctement, sans espaces supplémentaires.
  3. Vérifiez que l'accès à l'API Chronicle est activé pour la clé API Google Cloud.
  4. Vérifiez que l'état du flux Google SecOps est Actif.
  5. Vérifiez la connectivité réseau entre DNSFilter et les points de terminaison Google Cloud.

Aucune donnée n'apparaît dans Google SecOps

Si la connexion est établie, mais qu'aucune donnée ne s'affiche :

  1. Vérifiez que des requêtes DNS sont générées dans votre déploiement DNSFilter.
  2. Consultez le journal des requêtes DNSFilter pour vérifier que le trafic est bien traité.
  3. Dans Google SecOps, recherchez metadata.log_type = "DNSFILTER" pour vérifier l'ingestion.
  4. Vérifiez la métrique Journaux ingérés du flux dans Google SecOps.
  5. Consultez les journaux d'erreurs du flux pour identifier d'éventuelles erreurs d'ingestion.

L'exportation de données renvoie un message d'erreur

Causes d'erreur courantes :

  • Identifiants non valides : la clé API ou la clé secrète est incorrecte ou a expiré.
  • Incohérence de région : la région de l'URL du point de terminaison Google SecOps ne correspond pas à votre instance.
  • Autorisations : l'accès à l'API Chronicle n'est pas activé pour la clé API.
  • Problèmes de réseau : pare-feu ou proxy bloquant les connexions HTTPS sortantes.

Table de mappage UDM

Champ du journal Mappage UDM Logique
heure metadata.collected_timestamp Converti au format de date : aaaa-MM-jj HH:mm:ss Z UTC
metadata.event_type Définissez sur "STATUS_UPDATE" si principal_ip_present, principal_hostname_present ou principal_mac_present est défini sur "true", sinon sur "GENERIC_EVENT".
question_type network.dns.questions "question_type" a été converti en "question.type" à l'aide du mappage des types d'enregistrements DNS, puis fusionné dans un tableau
code network.dns.response_code Converti à l'aide du mappage des codes de réponse DNS
protocol network.ip_protocol Converti à l'aide du mappage de protocole IP
Client principal.hostname Valeur copiée directement
request_address, ip4, ip6, source_addresses principal.ip Fusionné à partir de request_address (IP extraite), ip4 (IP extraite), ip6 (IP extraite) et des adresses IP extraites du tableau source_addresses
région principal.location.country_or_region Valeur copiée directement
clientMac principal.mac Valeur copiée directement si elle correspond à l'expression régulière MAC
clientID principal.resource.product_object_id Valeur copiée directement
nom d'utilisateur principal.user.user_display_name Valeur copiée directement
user_id principal.user.userid Valeur copiée directement
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 Étiquettes fusionnées à partir de différents champs sources sous forme de paires clé/valeur
domaine target.administrative_domain Valeur copiée directement
fqdn target.domain.name Valeur copiée directement
metadata.product_name Définissez cette option sur "DNSFILTER".
metadata.vendor_name Définissez cette option sur "DNSFILTER".

Journal des modifications

Afficher le journal des modifications de cet analyseur

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