Collecter les journaux de la plate-forme Cisco DNA Center
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
systemdpour 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
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres du SIEM > Agents de collecte.
- 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
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres SIEM> Profil.
- 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
- Ouvrez l'invite de commandes ou PowerShell en tant qu'administrateur.
Exécutez la commande suivante :
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Installation de Linux
- Ouvrez un terminal avec les droits root ou sudo.
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
- Pour plus d'options d'installation, consultez ce guide d'installation.
Configurer l'agent Bindplane pour ingérer Syslog et l'envoyer à Google SecOps
Accédez au fichier de configuration :
- 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. - Ouvrez le fichier à l'aide d'un éditeur de texte (par exemple,
nano,viou le Bloc-notes).
- Trouvez le fichier
Modifiez le fichier
config.yamlcomme 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.jsonavec 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-agentPour 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
- Connectez-vous à la plate-forme Cisco DNA Center.
- Accédez à Système> Paramètres> Services externes> Destinations> Syslog.
- Cliquez sur + Ajouter pour créer une destination syslog.
- 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.
- Nom : saisissez un nom descriptif (par exemple,
- 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
- Dans Google SecOps, accédez à Paramètres SIEM > Flux.
- Cliquez sur + Ajouter un flux.
- Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple,
Cisco DNA Center Webhook). - Sélectionnez Webhook comme type de source.
- Sélectionnez Cisco DNA Center Platform comme Type de journal.
- Cliquez sur Suivant.
- 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.
- Délimiteur de fractionnement : facultatif
- Cliquez sur Suivant.
- Vérifiez la configuration de votre flux, puis cliquez sur Envoyer.
- Cliquez sur Générer une clé secrète pour générer une clé secrète permettant d'authentifier ce flux.
- Copiez et enregistrez la clé secrète, car vous ne pourrez plus l'afficher.
- Accédez à l'onglet Détails.
- Copiez l'URL du point de terminaison du flux à partir du champ Informations sur le point de terminaison.
- Cliquez sur OK.
Créer une clé API pour le flux de webhook
- Accédez à la page Identifiants de la console Google Cloud.
- Cliquez sur Créer des identifiants, puis sélectionnez Clé API.
- Restreignez l'accès de la clé API à l'API Google SecOps.
Configurer la destination du webhook dans Cisco DNA Center
- Connectez-vous à la plate-forme Cisco DNA Center.
- Accédez à Système> Paramètres> Services externes> Destinations> Webhook.
- Cliquez sur + Ajouter pour créer une destination de webhook.
- 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
- Content-Type :
- Nom : saisissez un nom descriptif (par exemple,
- Cliquez sur Tester la connexion pour vérifier la connectivité.
- Cliquez sur Enregistrer.
S'abonner aux événements pour les notifications de webhook
- Dans Cisco DNA Center, accédez à Platform> Developer Toolkit> Event Notifications.
- Cliquez sur + S'abonner.
- 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.
- Nom de l'abonnement : saisissez un nom descriptif (par exemple,
- 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é.
- 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).
- 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.