Collecter les journaux Cisco Prime
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
- 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 le 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
. 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).
- Trouvez le fichier
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
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
Connectez-vous à l'interface utilisateur Web Cisco Prime.
Accédez à Administration> Paramètres> Paramètres système.
Sélectionnez Mail and Notification > Change Audit Notification (Mail et notification > Modifier la notification d'audit).
Cochez la case Activer la notification d'audit des modifications.
Cliquez sur le bouton + pour spécifier un serveur syslog.
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.
Cliquez sur Enregistrer.
Configurer les journaux d'audit du système de transfert en tant que syslog
- Connectez-vous à l'interface utilisateur Web Cisco Prime.
- Accédez à Administration> Paramètres> Journalisation> Options de journalisation Syslog.
- Cochez la case Activer Syslog.
- 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
.
- 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. |
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.