Collecter les journaux Cisco Prime

Compatible avec :

Ce document explique comment ingérer des journaux Cisco Prime dans Google Security Operations à l'aide de Bindplane. L'analyseur utilise des modèles Grok pour extraire des champs de différents formats de messages syslog et les mapper à un modèle de données unifié (UDM). Il gère différentes structures de journaux, y compris les paires clé-valeur, et enrichit les données avec des informations sur l'utilisateur, le principal, la cible et la sécurité en fonction de mots clés et de modèles spécifiques trouvés dans les messages du journal.

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

  • Instance Google SecOps
  • Windows 2016 ou version ultérieure, ou un hôte Linux avec systemd
  • Si vous exécutez le programme derrière un proxy, assurez-vous que les ports du pare-feu sont ouverts.
  • Accès privilégié à Cisco Prime

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

Pour plus d'options d'installation, consultez le guide d'installation.

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

  1. Accédez au fichier de configuration :
    • Trouvez le fichier config.yaml. Il se trouve généralement 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, 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: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # Add optional ingestion labels for better organization
            log_type: 'CISCO_PRIME'
            raw_log_field: body
            ingestion_labels:
    
    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 <customer_id> par le numéro client réel.
    • Mettez à jour /path/to/ingestion-authentication-file.json en indiquant 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.

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 les notifications d'audit des modifications et les récepteurs Syslog

  1. Vous pouvez configurer le système pour qu'il envoie des notifications Syslog pour les journaux d'audit des modifications liées aux événements suivants :

    • Mises à jour de l'inventaire des appareils
    • Modifications de configuration
    • Modifications apportées aux modèles de configuration
    • Opérations liées aux modèles
    • Activités des utilisateurs, comme les connexions, les déconnexions et les modifications de compte
  2. Connectez-vous à l'interface utilisateur Web Cisco Prime.

  3. Accédez à Administration> Paramètres> Paramètres système.

  4. Sélectionnez Mail and Notification > Change Audit Notification (Mail et notification > Modifier la notification d'audit).

  5. Cochez la case Activer la notification d'audit des modifications.

  6. Cliquez sur le bouton + pour spécifier un serveur syslog.

  7. Fournissez les informations de configuration suivantes :

    • Saisissez l'adresse IP de l'agent Bindplane.
    • Sélectionnez le protocole UDP.
    • Saisissez le numéro de port de l'agent Bindplane.
  8. Cliquez sur Enregistrer.

Configurer les journaux d'audit du système de transfert en tant que syslog

  1. Connectez-vous à l'interface utilisateur Web Cisco Prime.
  2. Accédez à Administration> Paramètres> Journalisation> Options de journalisation Syslog.
  3. Cochez la case Activer Syslog.
  4. Fournissez les informations de configuration suivantes :
    • Saisissez l'adresse IP de l'agent Bindplane.
    • Sélectionnez le protocole UDP.
    • Saisissez le numéro de port de l'agent Bindplane.
    • Sélectionnez l'une des huit installations ou local0.
  5. Cliquez sur Enregistrer.

Table de mappage UDM

Champ du journal Mappage UDM Logique
client_ip_address principal.ip, principal.asset.ip La valeur est extraite du champ client_ip_address, qui est extrait du journal brut à l'aide du filtre kv.
date metadata.event_timestamp La valeur est extraite du champ date, qui est extrait du journal brut à l'aide de modèles Grok, puis converti en code temporel à l'aide du filtre de date.
description security_result.description La valeur est extraite du champ description, qui est extrait du journal brut à l'aide de modèles Grok.
dest_mac target.mac La valeur est extraite du champ dest_mac, qui est extrait du journal brut à l'aide de modèles Grok et converti en minuscules.
device_id principal.asset_id La valeur est extraite du champ device_id, qui est extrait du journal brut à l'aide de modèles Grok. La valeur finale est au format "ID de l'appareil :".
device_ip principal.ip, principal.asset.ip La valeur est extraite du champ device_ip, qui est extrait du journal brut à l'aide du filtre kv. La valeur est ensuite analysée en tant que tableau JSON, et chaque adresse IP du tableau est ajoutée aux champs UDM.
device_type target.resource.attribute.labels.value La valeur est extraite du champ device_type, qui est extrait du journal brut à l'aide de modèles Grok.
dst_user target.user.userid La valeur est extraite du champ dst_user, qui est extrait du journal brut à l'aide de modèles Grok.
e-mail src.hostname La valeur est extraite du champ email, qui est extrait du journal brut à l'aide de modèles Grok.
file_path principal.process.file.full_path La valeur est extraite du champ file_path, qui est extrait du journal brut à l'aide de modèles Grok.
nom d'hôte target.resource.attribute.labels.value La valeur est extraite du champ hostname, qui est extrait du journal brut à l'aide de modèles Grok.
id principal.asset_id La valeur est extraite du champ id, qui est extrait du journal brut à l'aide de modèles Grok. La valeur finale est au format "ID d'entité :".
ip_address principal.ip, principal.asset.ip La valeur est extraite du champ ip_address, qui est extrait du journal brut à l'aide de modèles Grok.
log_level security_result.severity La valeur est extraite du champ log_level, qui est extrait du journal brut à l'aide de modèles Grok. Il permet de déterminer le niveau de gravité si severity n'est pas présent.
mac_address principal.mac, source_mac La valeur est extraite du champ mac_address, qui est extrait du journal brut à l'aide de modèles Grok et converti en minuscules. Elle est également utilisée comme valeur pour source_mac si source_mac est vide.
oid principal.asset.product_object_id La valeur est extraite du champ oid, qui est extrait du journal brut à l'aide de modèles Grok.
principal_ip principal.ip, principal.asset.ip La valeur est extraite du champ principal_ip, qui est extrait du journal brut à l'aide de modèles Grok.
principal_port principal.port La valeur est extraite du champ principal_port, qui est extrait du journal brut à l'aide de modèles Grok et converti en entier.
process_name principal.resource.name La valeur est extraite du champ process_name, qui est extrait du journal brut à l'aide de modèles Grok.
sec_description security_result.description La valeur est extraite du champ sec_description, qui est extrait du journal brut à l'aide de modèles Grok.
session_id network.session_id La valeur est extraite du champ session_id, qui est extrait du journal brut à l'aide de modèles Grok.
de gravité, security_result.severity La valeur est extraite du champ severity, qui est extrait du journal brut à l'aide de modèles Grok. Il permet de déterminer le niveau de gravité, le cas échéant.
source_mac principal.mac La valeur est extraite du champ source_mac, qui est extrait du journal brut à l'aide de modèles Grok et converti en minuscules. Si ce champ est vide, il prend la valeur de mac_address.
résumé security_result.summary La valeur est extraite du champ summary, qui est extrait du journal brut à l'aide de modèles Grok.
target_ip target.ip, target.asset.ip La valeur est extraite du champ target_ip, qui est extrait du journal brut à l'aide de modèles Grok.
thread_pool metadata.product_event_type La valeur est extraite du champ thread_pool, qui est extrait du journal brut à l'aide de modèles Grok.
timestamp metadata.event_timestamp La valeur est extraite du champ timestamp, qui est extrait du journal brut à l'aide de modèles Grok, puis converti en code temporel à l'aide du filtre de date.
Type metadata.product_event_type La valeur est extraite du champ Type, qui est extrait du journal brut à l'aide du filtre kv.
user_name principal.user.userid La valeur est extraite du champ user_name, qui est extrait du journal brut à l'aide de modèles grok ou du filtre kv.
metadata.event_type metadata.event_type La valeur est déterminée en fonction de la présence de champs et de modèles spécifiques dans le journal brut. La logique inclut les éléments suivants :
 – Valeur par défaut : GENERIC_EVENT
 – Si thread_pool est défini sur "EmailAlertHelper" : EMAIL_TRANSACTION
 – Si application_name est défini sur "aesSystem" et que desc contient "HealthMonitorHelper" : STATUS_HEARTBEAT
 – Si user_present et target_resource_present sont tous les deux définis sur "true" : USER_RESOURCE_ACCESS
 – Si user_present est défini sur "true" : USER_UNCATEGORIZED
 – Si principal_present et target_present sont tous les deux définis sur "true" : NETWORK_CONNECTION
 – Si principal_present est défini sur "true" : STATUS_UPDATE
 – Si dst_user est présent et que description contient "logout" : USER_LOGOUT
 – Si dst_user est présent et que description ne contient pas "logout" : USER_LOGIN
metadata.vendor_name metadata.vendor_name La valeur est définie sur "CISCO".
metadata.product_name metadata.product_name La valeur est définie sur "CISCO_PRIME".
metadata.log_type metadata.log_type La valeur est définie sur "CISCO_PRIME".
network.session_id network.session_id La valeur est extraite du champ session_id, qui est extrait du journal brut à l'aide de modèles Grok.
principal.application principal.application La valeur est extraite du champ application_name, qui est extrait du journal brut à l'aide de modèles Grok.
principal.asset.ip principal.asset.ip La valeur peut provenir des champs suivants : client_ip_address, device_ip, ip_address, principal_ip, target_ip.
principal.asset.product_object_id principal.asset.product_object_id La valeur est extraite du champ oid, qui est extrait du journal brut à l'aide de modèles Grok.
principal.asset_id principal.asset_id La valeur peut provenir des champs suivants : device_id, id.
principal.ip principal.ip La valeur peut provenir des champs suivants : client_ip_address, device_ip, ip_address, principal_ip.
principal.mac principal.mac La valeur peut provenir des champs suivants : mac_address, source_mac.
principal.port principal.port La valeur est extraite du champ principal_port, qui est extrait du journal brut à l'aide de modèles Grok et converti en entier.
principal.process.file.full_path principal.process.file.full_path La valeur est extraite du champ file_path, qui est extrait du journal brut à l'aide de modèles Grok.
principal.resource.name principal.resource.name La valeur est extraite du champ process_name, qui est extrait du journal brut à l'aide de modèles Grok.
principal.user.userid principal.user.userid La valeur est extraite du champ user_name, qui est extrait du journal brut à l'aide de modèles grok ou du filtre kv.
security_result.action security_result.action La valeur est définie sur "BLOCK" si description contient "fail".
security_result.description security_result.description La valeur peut provenir des champs suivants : desc, description, sec_description.
security_result.severity security_result.severity La valeur peut provenir des champs suivants : log_level, severity.
security_result.summary security_result.summary La valeur est extraite du champ summary, qui est extrait du journal brut à l'aide de modèles Grok.
src.hostname src.hostname La valeur est extraite du champ email, qui est extrait du journal brut à l'aide de modèles Grok.
target.asset.ip target.asset.ip La valeur est extraite du champ target_ip, qui est extrait du journal brut à l'aide de modèles Grok.
target.ip target.ip La valeur est extraite du champ target_ip, qui est extrait du journal brut à l'aide de modèles Grok.
target.mac target.mac La valeur est extraite du champ dest_mac, qui est extrait du journal brut à l'aide de modèles Grok et converti en minuscules.
target.resource.attribute.labels.key target.resource.attribute.labels.key La valeur est définie sur "Type d'appareil" ou "Nom d'hôte de l'appareil" selon le contexte.
target.resource.attribute.labels.value target.resource.attribute.labels.value La valeur peut provenir des champs suivants : device_type, hostname.
target.user.userid target.user.userid La valeur est extraite du champ dst_user, qui est extrait du journal brut à l'aide de modèles Grok.
extensions.auth.mechanism extensions.auth.mechanism La valeur est définie sur "USERNAME_PASSWORD" si dst_user est présent et que description contient "password".
extensions.auth.type extensions.auth.type La valeur est définie sur "MACHINE" si dst_user est présent.

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