Collecter les journaux du serveur de secrets Delinea

Compatible avec:

Ce document explique comment collecter les journaux Secret Server de Delinea (anciennement Thycotic). L'analyseur transforme les journaux bruts en un format structuré conforme à l'UDM Google Security Operations. Il commence par extraire des champs clés tels que les codes temporels, les types d'événements et les informations utilisateur, 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, ce qui enrichit les données à analyser dans Google SecOps.

Avant de commencer

  • Assurez-vous de disposer d'une instance Google Security Operations.
  • Assurez-vous d'utiliser Windows 2016 ou une version ultérieure, ou un hôte Linux avec systemd.
  • Si vous exécutez l'application derrière un proxy, assurez-vous que les ports du pare-feu sont ouverts.
  • Assurez-vous de disposer d'un accès privilégié à Delinea.

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 l'agent Bindplane sera installé.

Obtenir le numéro client Google SecOps

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

Installer l'agent Bindplane

Installation de Windows

  1. Ouvrez l'invite de commande 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 des 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
    

Autres ressources d'installation

Configurer l'agent Bindplane pour qu'il ingère les journaux Syslog et les envoie à Google SecOps

  1. Accédez au fichier de configuration:

    • Recherchez 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 (nano, vi ou Bloc-notes, par exemple).
  2. Modifiez le fichier config.yaml comme suit :

    receivers:
      udplog:
        # Replace with your specific IP and port
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/chronicle_w_labels:
        compression: gzip
        # Path to the ingestion authentication file
        creds: '/path/to/your/ingestion-auth.json'
        # Your Chronicle customer ID
        customer_id: 'your_customer_id'
        endpoint: malachiteingestion-pa.googleapis.com
        ingestion_labels:
          log_type: SYSLOG
          namespace: thycotic
          raw_log_field: body
    
    service:
      pipelines:
        logs/source0__chronicle_w_labels-0:
          receivers:
            - udplog
          exporters:
            - chronicle/chronicle_w_labels
    
  3. Remplacez le port et l'adresse IP dans votre infrastructure si nécessaire.

  4. Remplacez <customer_id> par le numéro client réel.

  5. 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 d'ingestion Google SecOps.

Redémarrer 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 Delinea Secret Server pour envoyer des journaux à l'aide de Syslog

  1. Connectez-vous à Delinea Secret Server avec des identifiants administrateur.
  2. Accédez à Administration > Configuration.
  3. Cliquez sur Modifier.
  4. Cochez la case Enable Syslog/CEF logging (Activer la journalisation Syslog/CEF) et spécifiez les informations suivantes :
    • Serveur syslog/CEF: saisissez l'adresse IP de votre Bindplane.
    • Protocole Syslog/CEF: sélectionnez UDP ou TCP (selon la configuration de Bindplane).
    • Port syslog/CEF: saisissez le numéro de port sur lequel Bindplane est configuré pour écouter.
  5. Cliquez sur Enregistrer.

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 "Par l'utilisateur" du champ "msg" du journal brut.
ID du conteneur event1.idm.read_only_udm.principal.asset.asset_id La valeur est extraite du champ "ID du conteneur" du champ "msg" du journal brut et est précédée du préfixe "container_id:".
Nom du conteneur event1.idm.read_only_udm.principal.resource.name La valeur est extraite du champ "Nom du conteneur" du champ "msg" du journal brut.
cs2 event1.idm.read_only_udm.additional.fields[].value.string_value La valeur est extraite du champ "cs2" du champ "msg" du journal brut.
cs3 event1.idm.read_only_udm.target.file.full_path La valeur est extraite du champ "cs3" du champ "msg" du journal brut.
cs4 event1.idm.read_only_udm.principal.user.user_display_name La valeur est extraite du champ "cs4" du champ "msg" du journal brut.
Détails event1.idm.read_only_udm.additional.fields[].value.string_value La valeur est extraite du champ "Détails" du champ "msg" du journal brut.
fname event1.idm.read_only_udm.target.file.full_path La valeur est extraite du champ "fname" du 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" du 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" (Nom de l'élément) du 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" (Groupe ou Utilisateur).
event1.idm.read_only_udm.additional.fields[].key La valeur est codée en dur sur "Détails".
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", le cas échéant, 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 "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 format 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 défini sur "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ée 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 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" du champ "msg" du journal brut.
event1.idm.read_only_udm.principal.user.userid La valeur est extraite du champ "suser" du champ "msg" du journal brut, ou du champ "Par l'utilisateur" 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" du champ "msg" du journal brut. Il peut également être défini 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", la gravité est définie sur "HIGH". Si "thycotic_event" est "Journal système", la gravité est définie 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" du 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", le cas échéant, 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" du champ "msg" du journal brut et permet de définir l'horodatage 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" du 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 extrait du champ "log.source.address" à l'aide d'un format grok.

Modifications

2024-06-04

  • Amélioration de l'analyse des journaux non analysés.
  • Les champs "Host" (Hôte) et "server" (Serveur) ont été mappés sur les champs UDM associés au nom d'hôte.
  • Mappage de "Container_Id" et "Container_name" sur les champs UDM liés aux noms d'éléments et de ressources.

2023-09-22

  • Ajustement de la logique d'analyse pour mieux gérer les journaux non analysés.
  • Ajout de la gestion des erreurs pour les champs "rt" et "ts".

2023-06-12

  • Mise à jour de la logique d'analyse pour prendre en charge un nouveau format de journal.
  • Mappage des champs "fname", "cs2" et "details" sur les champs UDM pour obtenir des informations supplémentaires et un résumé des résultats de sécurité.

2022-08-01

  • Prise en charge de l'analyse des journaux au format JSON.
  • Nous avons mappé de nombreux champs des journaux JSON sur leurs champs UDM correspondants, y compris les champs liés aux informations sur l'appareil et l'agent, les adresses IP, les détails de l'hôte, les informations sur la plate-forme et la gravité de la sécurité.
  • Ajout de l'analyse des journaux de type "SECRET - SECRETPASSWORDCHANGEFAILURE".

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