Collecter les journaux Delinea Secret Server

Compatible avec :

Ce document explique comment collecter les journaux Delinea (anciennement Thycotic) Secret Server. L'analyseur transforme les journaux bruts en un format structuré conforme à l'UDM 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. Il enrichit ainsi les données pour l'analyse 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 le programme 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 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

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

Configurer l'agent Bindplane pour ingérer les journaux Syslog et les envoyer à 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 (par exemple, nano, vi ou le Bloc-notes).
  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 selon les besoins de votre infrastructure.

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

  5. 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é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 d'administrateur.
  2. Accédez à Admin > Configuration.
  3. Cliquez sur Modifier.
  4. Cochez la case 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 votre configuration 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 utilisateur" 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" (ID du conteneur) 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 "Nom du conteneur" 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 "Détails" 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 "Nom de l'article" 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 "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" s'il est présent, sinon 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 lui-même 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" si elle est présente, 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" si elle est présente, sinon 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" (si présent), sinon du champ "host.hostname".
event1.idm.read_only_udm.principal.asset.ip La valeur est extraite du champ "src" s'il est présent, sinon du champ "src_ip".
event1.idm.read_only_udm.principal.hostname La valeur est extraite du champ "host.hostname" s'il est présent, sinon du champ "server".
event1.idm.read_only_udm.principal.ip La valeur est extraite du champ "src" s'il est présent, sinon du champ "src_ip" ou du champ "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 défini sur "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", la gravité est définie sur "HIGH". Si "thycotic_event" est défini sur "System Log", 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" dans le champ "msg" du journal brut, ou du champ "Item Name" si "thycotic_event" est défini sur "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, sinon 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 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.