Collecter les journaux de la plate-forme Cisco DNA Center

Compatible avec :

Ce document explique comment ingérer les journaux de la plate-forme Cisco DNA Center dans Google Security Operations à l'aide de deux approches différentes. Choisissez l'option qui correspond le mieux à votre environnement et à vos exigences. L'analyseur transforme les journaux Cisco DNA Center SYSLOG+JSON en modèle de données unifié (UDM). Il extrait les champs du message de journal brut et de la charge utile JSON, les mappe aux attributs UDM correspondants et enrichit les données avec des libellés et un contexte de sécurité en fonction des caractéristiques de l'événement, comme la gravité et les entités impliquées.

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

  • Une instance Google SecOps
  • Accès privilégié à la console de gestion de la plate-forme Cisco DNA Center
  • Choisissez la méthode d'intégration de votre choix :
    • Pour l'option 2 : connectivité réseau entre Cisco DNA Center et le point de terminaison du webhook Google SecOps
    • Pour l'option 1 : Windows 2016 ou version ultérieure, ou un hôte Linux avec systemd pour l'installation de l'agent Bindplane

Option 1 : Intégration Syslog à l'aide de l'agent Bindplane

Cette option utilise le transfert syslog de Cisco DNA Center vers Bindplane, qui transfère ensuite les journaux structurés vers Google SecOps.

Obtenir le fichier d'authentification d'ingestion Google SecOps

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres du SIEM > Agents de collecte.
  3. Téléchargez le fichier d'authentification d'ingestion. Enregistrez le fichier de manière sécurisée sur le système sur lequel Bindplane sera installé.

Obtenir l'ID client Google SecOps

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres SIEM> Profil.
  3. Copiez et enregistrez le numéro client de la section Informations sur l'organisation.

Installer l'agent Bindplane

Installez l'agent Bindplane sur votre système d'exploitation Windows ou Linux en suivant les instructions ci-dessous.

Installation de fenêtres

  1. Ouvrez l'invite de commandes ou PowerShell en tant qu'administrateur.
  2. Exécutez la commande suivante :

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Installation de Linux

  1. Ouvrez un terminal avec les droits root ou sudo.
  2. Exécutez la commande suivante :

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Ressources d'installation supplémentaires

Configurer l'agent Bindplane pour ingérer Syslog et l'envoyer à Google SecOps

  1. Accédez au fichier de configuration :

    1. Trouvez le fichier config.yaml. En règle générale, il se trouve dans le répertoire /etc/bindplane-agent/ sous Linux ou dans le répertoire d'installation sous Windows.
    2. Ouvrez le fichier à l'aide d'un éditeur de texte (par exemple, nano, vi ou le Bloc-notes).
  2. Modifiez le fichier config.yaml comme suit :

    receivers:
      udplog:
        # Replace the port and IP address as required
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/chronicle_w_labels:
        compression: gzip
        # Adjust the path to the credentials file you downloaded in Step 1
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        # Replace with your actual customer ID from Step 2
        customer_id: YOUR_CUSTOMER_ID
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: 'CISCO_DNAC'
        raw_log_field: body
    
    service:
      pipelines:
        logs/source0__chronicle_w_labels-0:
          receivers:
            - udplog
          exporters:
            - chronicle/chronicle_w_labels
    
    • Remplacez le port et l'adresse IP selon les besoins de votre infrastructure.
    • Remplacez <YOUR_CUSTOMER_ID> par le numéro client réel.
    • Mettez à jour /path/to/ingestion-authentication-file.json avec le chemin d'accès où le fichier d'authentification a été enregistré dans la section Obtenir le fichier d'authentification pour l'ingestion Google SecOps.
    • Cette configuration utilise le récepteur Syslog (UDP) de l'agent Bindplane pour collecter les messages syslog structurés à partir de DNA Center.

Redémarrez l'agent Bindplane pour appliquer les modifications.

  • Pour redémarrer l'agent Bindplane sous Linux, exécutez la commande suivante :

    sudo systemctl restart bindplane-agent
    
  • Pour redémarrer l'agent Bindplane sous Windows, vous pouvez utiliser la console Services ou saisir la commande suivante :

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configurer le transfert Syslog sur la plate-forme Cisco DNA Center

  1. Connectez-vous à la plate-forme Cisco DNA Center.
  2. Accédez à Système> Paramètres> Services externes> Destinations> Syslog.
  3. Cliquez sur + Ajouter pour créer une destination syslog.
  4. Fournissez les informations de configuration suivantes :
    • Nom : saisissez un nom descriptif (par exemple, Google SecOps BindPlane).
    • Hôte : saisissez l'adresse IP de l'agent BindPlane.
    • Port : saisissez 514 (ou le port configuré dans BindPlane).
    • Protocole : sélectionnez UDP ou TCP en fonction de votre configuration BindPlane.
    • Établissement : sélectionnez l'établissement approprié (par exemple, Local0).
    • Gravité : sélectionnez Informations pour capturer tous les niveaux d'événements.
  5. Cliquez sur Enregistrer.

Option 2 : Intégration de webhook en temps réel

Cette option utilise les fonctionnalités de webhook natif de Cisco DNA Center pour envoyer des événements JSON structurés directement à Google SecOps en temps réel.

Présentation

Cisco DNA Center est compatible en mode natif avec les notifications de webhook pour la diffusion d'événements en temps réel. Cette option fournit des charges utiles JSON structurées avec un contexte d'événement riche, en envoyant les événements directement à Google SecOps sans nécessiter Bindplane comme intermédiaire.

Configurer le flux de webhook Google SecOps

  1. Dans Google SecOps, accédez à Paramètres SIEM > Flux.
  2. Cliquez sur + Ajouter un flux.
  3. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Cisco DNA Center Webhook).
  4. Sélectionnez Webhook comme type de source.
  5. Sélectionnez Cisco DNA Center Platform comme Type de journal.
  6. Cliquez sur Suivant.
  7. Spécifiez les valeurs des paramètres d'entrée suivants :
    • Délimiteur de fractionnement : facultatif \n.
    • 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.
  8. Cliquez sur Suivant.
  9. Vérifiez la configuration de votre flux, puis cliquez sur Envoyer.
  10. Cliquez sur Générer une clé secrète pour générer une clé secrète permettant d'authentifier ce flux.
  11. Copiez et enregistrez la clé secrète, car vous ne pourrez plus l'afficher.
  12. Accédez à l'onglet Détails.
  13. Copiez l'URL du point de terminaison du flux à partir du champ Informations sur le point de terminaison.
  14. Cliquez sur OK.

Créer une clé API pour le flux de webhook

  1. Accédez à la page Identifiants de la console Google Cloud.
  2. Cliquez sur Créer des identifiants, puis sélectionnez Clé API.
  3. Restreignez l'accès de la clé API à l'API Google SecOps.

Configurer la destination du webhook dans Cisco DNA Center

  1. Connectez-vous à la plate-forme Cisco DNA Center.
  2. Accédez à Système> Paramètres> Services externes> Destinations> Webhook.
  3. Cliquez sur + Ajouter pour créer une destination de webhook.
  4. Fournissez les informations de configuration suivantes :
    • Nom : saisissez un nom descriptif (par exemple, Google SecOps Webhook).
    • Description : saisissez une description du webhook.
    • URL : saisissez l'URL du point de terminaison du webhook Google SecOps de l'étape précédente.
    • Méthode : sélectionnez POST.
    • Certificat de confiance : sélectionnez Non si vous utilisez des certificats autosignés.
    • En-têtes : ajoutez les en-têtes requis :
      • Content-Type : application/json
      • X-goog-api-key : votre clé API Google Cloud
      • X-Webhook-Access-Key : clé secrète de votre flux Google SecOps
  5. Cliquez sur Tester la connexion pour vérifier la connectivité.
  6. Cliquez sur Enregistrer.

S'abonner aux événements pour les notifications de webhook

  1. Dans Cisco DNA Center, accédez à Platform> Developer Toolkit> Event Notifications.
  2. Cliquez sur + S'abonner.
  3. Fournissez les informations de configuration suivantes :
    • Nom de l'abonnement : saisissez un nom descriptif (par exemple, Google SecOps Events).
    • Type de connecteur : sélectionnez Point de terminaison REST.
    • Destination : sélectionnez la destination du webhook créée à l'étape précédente.
  4. Sélectionnez les types d'événements que vous souhaitez surveiller :
    • Événements réseau : appareil injoignable, interface hors service, modifications de la configuration.
    • Événements de sécurité : non-respect des règles de sécurité, échecs d'authentification.
    • Événements système : événements de plate-forme, mises à jour logicielles, maintenance.
    • Événements d'assurance : dégradation des performances, problèmes de connectivité.
  5. Configurez des filtres d'événements si nécessaire :
    • Gravité : sélectionnez le niveau de gravité minimal (par exemple, P1 ou P2).
    • Domaine : filtrez par domaine spécifique (par exemple, Connectivité, Performances).
  6. Cliquez sur S'abonner.

Table de mappage UDM

Champ de journal Mappage UDM Logique
category security_result.severity_details Directement mappé à partir du champ category dans le journal brut.
ciscoDnaEventLink target.url Directement mappé à partir du champ ciscoDnaEventLink dans le journal brut.
date_time metadata.event_timestamp Extrait du message de journal brut à l'aide du modèle Grok et converti au format d'horodatage.
details.Assurance_Issue_Category security_result.about.resource.attribute.labels[].value Directement mappé à partir du champ details.Assurance_Issue_Category dans le journal brut. La clé de ce libellé est "Assurance_Issue_Category".
details.Assurance_Issue_Details security_result.summary Directement mappé à partir du champ details.Assurance_Issue_Details dans le journal brut.
details.Assurance_Issue_Name security_result.about.resource.attribute.labels[].value Directement mappé à partir du champ details.Assurance_Issue_Name dans le journal brut. La clé de ce libellé est "Assurance_Issue_Name".
details.Assurance_Issue_Priority security_result.about.resource.attribute.labels[].value Directement mappé à partir du champ details.Assurance_Issue_Priority dans le journal brut. La clé de ce libellé est "Assurance_Issue_Priority".
details.Assurance_Issue_Status security_result.about.resource.attribute.labels[].value Directement mappé à partir du champ details.Assurance_Issue_Status dans le journal brut. La clé de ce libellé est "Assurance_Issue_Status".
details.Device target.ip OU target.hostname Mappé à partir du champ details.Device dans le journal brut. Si la valeur est une adresse IP, elle est mappée sur target.ip, sinon sur target.hostname.
dnacIp target.ip Mappé directement à partir du champ dnacIp du journal brut, s'il s'agit d'une adresse IP.
domaine additional.fields[].value.string_value Directement mappé à partir du champ domain dans le journal brut. La clé de ce champ est "domain".
eventId metadata.product_event_type Directement mappé à partir du champ eventId dans le journal brut.
instanceId target.resource.product_object_id Directement mappé à partir du champ instanceId dans le journal brut.
nom target.resource.attribute.labels[].value Directement mappé à partir du champ name dans le journal brut. La clé de ce libellé est "name".
espace de noms target.namespace Directement mappé à partir du champ namespace dans le journal brut.
network.deviceId target.asset.asset_id Mappé directement à partir du champ network.deviceId dans le journal brut et précédé de "deviceId: ".
note additional.fields[].value.string_value Directement mappé à partir du champ note dans le journal brut. La clé de ce champ est "note".
metadata.event_type Déterminé en fonction de la présence et des valeurs des champs has_principal, has_target et userId. Valeurs possibles : NETWORK_CONNECTION, USER_UNCATEGORIZED, STATUS_UPDATE, GENERIC_EVENT.
is_alert "True" si la gravité est de 0 ou 1, "False" dans le cas contraire.
is_significant "True" si la gravité est de 0 ou 1, "False" dans le cas contraire.
de gravité, Utilisé pour déterminer la valeur de security_result.severity, is_alert et is_significant.
source target.resource.attribute.labels[].value Directement mappé à partir du champ source dans le journal brut. La clé de ce libellé est "source".
src_ip principal.ip Extrait du message de journal brut à l'aide du modèle grok.
subDomain additional.fields[].value.string_value Directement mappé à partir du champ subDomain dans le journal brut. La clé de ce champ est "subDomain".
tntId target.resource.attribute.labels[].value Directement mappé à partir du champ tntId dans le journal brut. La clé de ce libellé est "tntId".
type target.resource.attribute.labels[].value Directement mappé à partir du champ type dans le journal brut. La clé de ce libellé est "type".
userId target.user.userid Directement mappé à partir du champ userId dans le journal brut.
version metadata.product_version Directement mappé à partir du champ version dans le journal brut.

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