Collecter les journaux Delinea Secret Server
Ce document explique comment collecter les journaux Delinea (anciennement Thycotic) Secret Server. L'analyseur transforme les journaux bruts dans un format structuré conforme au modèle de données unifié (UDM) de Google Security Operations. Il extrait d'abord les champs clés tels que les codes temporels, les types d'événements et les informations sur les utilisateurs, puis utilise une logique conditionnelle basée sur le type d'événement spécifique pour mapper les données dans les champs UDM appropriés, enrichissant ainsi les données pour l'analyse dans Google SecOps.
Avant de commencer
Assurez-vous de remplir les conditions suivantes :
- Instance Google Security Operations
- Hôte Windows 2016 ou version ultérieure, ou 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é à Delinea Secrets Server
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 Security Operations.
- 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
. 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
,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: 'THYCOTIC' 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. - Remplacez "/path/to/ingestion-authentication-file.json" par le chemin d'accès où le fichier d'authentification a été enregistré dans la section Obtenir le fichier d'authentification de 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 Thycotic Secret Server pour envoyer des journaux à l'aide de Syslog
- Connectez-vous à Thycotic Secret Server avec des identifiants administrateur.
- Accédez à Admin > Configuration.
- Cliquez sur Modifier.
- Cochez la case Activer la journalisation Syslog/CEF et spécifiez les informations suivantes :
- Serveur Syslog/CEF : saisissez l'adresse IP de votre serveur Syslog/Bindplane.
- Protocole Syslog/CEF : sélectionnez UDP ou TCP (selon la configuration de votre serveur Syslog ou de Bindplane).
- Port Syslog/CEF : saisissez le numéro de port sur lequel le serveur Syslog ou Bindplane est configuré pour écouter.
- Cliquez sur Enregistrer.
Table de mappage UDM
Champ du journal | Mappage UDM | Logique |
---|---|---|
Account_Domain | event1.idm.read_only_udm.principal.domain | La valeur est extraite du champ Account_Domain dans le champ msg du journal brut. |
Par utilisateur | event1.idm.read_only_udm.principal.user.userid | La valeur est extraite du champ By User dans le champ msg du journal brut. |
ID du conteneur | event1.idm.read_only_udm.principal.asset.asset_id | La valeur est extraite du champ Container Id dans le champ msg du journal brut et est précédée de container_id: . |
Nom du conteneur | event1.idm.read_only_udm.principal.resource.name | La valeur est extraite du champ Container name dans le champ msg du journal brut. |
cs2 | event1.idm.read_only_udm.additional.fields[].value.string_value | La valeur est extraite du champ cs2 dans le champ msg du journal brut. |
cs3 | event1.idm.read_only_udm.target.file.full_path | La valeur est extraite du champ cs3 dans le champ msg du journal brut. |
cs4 | event1.idm.read_only_udm.principal.user.user_display_name | La valeur est extraite du champ cs4 dans le champ msg du journal brut. |
Détails | event1.idm.read_only_udm.additional.fields[].value.string_value | La valeur est extraite du champ Details dans le champ msg du journal brut. |
fname | event1.idm.read_only_udm.target.file.full_path | La valeur est extraite du champ fname dans le champ msg du journal brut. |
Hôte | event1.idm.read_only_udm.principal.hostname, event1.idm.read_only_udm.principal.asset.hostname | La valeur est extraite du champ Host dans le champ msg du journal brut. |
Nom de l'élément | event1.idm.read_only_udm.target.user.userid | La valeur est extraite du champ Item Name dans le champ msg du journal brut. |
event1.idm.read_only_udm.additional.fields[].key | La valeur est codée en dur sur fname . |
|
event1.idm.read_only_udm.additional.fields[].key | La valeur est codée en dur sur Group or User . |
|
event1.idm.read_only_udm.additional.fields[].key | La valeur est codée en dur sur Details . |
|
event1.idm.read_only_udm.additional.fields[].key | La valeur est codée en dur sur type_id . |
|
event1.idm.read_only_udm.extensions.auth.type | La valeur est codée en dur sur MACHINE . |
|
event1.idm.read_only_udm.metadata.description | La valeur est extraite du champ thycotic_event , qui est extrait du journal brut à l'aide d'un modèle Grok. |
|
event1.idm.read_only_udm.metadata.event_timestamp.seconds | La valeur est dérivée du champ rt , s'il est présent, ou du champ ts . Les deux champs sont extraits du journal brut à l'aide de modèles Grok. |
|
event1.idm.read_only_udm.metadata.event_type | La valeur est déterminée en fonction du champ thycotic_event et d'autres conditions. Par exemple, si thycotic_event est défini sur USER - LOGIN , le type d'événement est défini sur USER_LOGIN . |
|
event1.idm.read_only_udm.metadata.log_type | La valeur est codée en dur sur THYCOTIC . |
|
event1.idm.read_only_udm.metadata.product_event_type | La valeur est extraite du champ thycotic_event , qui est extrait du journal brut à l'aide d'un modèle Grok. |
|
event1.idm.read_only_udm.metadata.product_log_id | La valeur est extraite du champ action_id , qui est extrait du journal brut à l'aide d'un modèle Grok. |
|
event1.idm.read_only_udm.metadata.product_name | La valeur est extraite du champ device_product , qui est extrait du journal brut à l'aide d'un modèle Grok. Si le champ est vide, la valeur est codée en dur sur Secret Server . |
|
event1.idm.read_only_udm.metadata.product_version | La valeur est extraite du champ device_version , qui est extrait du journal brut à l'aide d'un modèle Grok. |
|
event1.idm.read_only_udm.metadata.vendor_name | La valeur est codée en dur sur Thycotic . |
|
event1.idm.read_only_udm.network.ip_protocol | La valeur est définie sur TCP si le champ input.type est tcp . |
|
event1.idm.read_only_udm.observer.application | La valeur est extraite du champ agent.type , le cas échéant. Sinon, elle est codée en dur sur Secret Server . |
|
event1.idm.read_only_udm.observer.asset_id | La valeur est définie sur Agent ID: concaténé avec le champ agent.id . |
|
event1.idm.read_only_udm.observer.hostname | La valeur est extraite du champ agent.hostname , le cas échéant, ou du champ server . |
|
event1.idm.read_only_udm.observer.platform_version | La valeur est extraite du champ agent.version . |
|
event1.idm.read_only_udm.observer.user.userid | La valeur est extraite du champ agent.name . |
|
event1.idm.read_only_udm.principal.asset.asset_id | La valeur est définie sur ID: concaténé avec le champ host.id . |
|
event1.idm.read_only_udm.principal.asset.hardware.cpu_platform | La valeur est extraite du champ host.architecture . |
|
event1.idm.read_only_udm.principal.asset.hostname | La valeur est extraite du champ server , le cas échéant, ou du champ host.hostname . |
|
event1.idm.read_only_udm.principal.asset.ip | La valeur est extraite du champ src , le cas échéant, ou du champ src_ip . |
|
event1.idm.read_only_udm.principal.hostname | La valeur est extraite du champ host.hostname , le cas échéant, ou du champ server . |
|
event1.idm.read_only_udm.principal.ip | La valeur est extraite du champ src , le cas échéant, ou du champ src_ip ou host.ip . |
|
event1.idm.read_only_udm.principal.mac | La valeur est extraite du champ host.mac . |
|
event1.idm.read_only_udm.principal.platform | La valeur est définie sur LINUX si le champ host_os_platform est centos . Sinon, elle est définie sur la valeur en majuscules du champ host_os_platform . |
|
event1.idm.read_only_udm.principal.platform_patch_level | La valeur est extraite du champ host.os.kernel . |
|
event1.idm.read_only_udm.principal.platform_version | La valeur est extraite du champ host.os.version . |
|
event1.idm.read_only_udm.principal.port | La valeur est extraite du champ src_port , qui est lui-même extrait du champ log.source.address à l'aide d'un modèle Grok. |
|
event1.idm.read_only_udm.principal.user.user_display_name | La valeur est extraite du champ cs4 dans le champ msg du journal brut. |
|
event1.idm.read_only_udm.principal.user.userid | La valeur est extraite du champ suser dans le champ msg du journal brut, ou du champ By User si thycotic_event est USER - LOGIN , USER - LOGOUT , USER - LOGINFAILURE ou USER - EDIT . |
|
event1.idm.read_only_udm.security_result.action | La valeur est extraite du champ Action dans le champ msg du journal brut. Elle peut également être définie sur ALLOW ou BLOCK en fonction de la valeur de thycotic_event . |
|
event1.idm.read_only_udm.security_result.description | La valeur est extraite du champ temp_message , qui contient la partie restante du champ msg après l'extraction d'autres champs. |
|
event1.idm.read_only_udm.security_result.severity | La valeur est déterminée en fonction du champ syslog_severity . Par exemple, si syslog_severity contient error ou warning , le niveau de gravité est défini sur HIGH . Si thycotic_event est défini sur System Log , le niveau de gravité est défini sur INFORMATIONAL . |
|
event1.idm.read_only_udm.security_result.severity_details | La valeur est extraite du champ syslog_severity . |
|
event1.idm.read_only_udm.target.file.full_path | La valeur est construite en concaténant les champs cs3 et fname avec un séparateur / si les deux champs sont présents. Si un seul champ est présent, la valeur est extraite de ce champ. |
|
event1.idm.read_only_udm.target.resource.product_object_id | La valeur est extraite du champ type_id . |
|
event1.idm.read_only_udm.target.user.userid | La valeur est extraite du champ item_name dans le champ msg du journal brut, ou du champ Item Name si thycotic_event est USER - LOGIN , USER - LOGOUT , USER - LOGINFAILURE ou USER - EDIT . |
|
events.timestamp.seconds | La valeur est dérivée du champ rt , s'il est présent, ou du champ ts . Les deux champs sont extraits du journal brut à l'aide de modèles Grok. |
|
rt | event1.idm.read_only_udm.metadata.event_timestamp.seconds | La valeur est extraite du champ rt dans le champ msg du journal brut et est utilisée pour définir le code temporel de l'événement. |
src | event1.idm.read_only_udm.principal.asset.ip, event1.idm.read_only_udm.principal.ip | La valeur est extraite du champ src dans le champ msg du journal brut. |
src_ip | event1.idm.read_only_udm.principal.asset.ip, event1.idm.read_only_udm.principal.ip | La valeur est extraite du champ src_ip , qui est lui-même extrait du champ log.source.address à l'aide d'un modèle Grok. |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.