Collecter les journaux Fortra Digital Guardian DLP

Compatible avec :

Ce document explique comment collecter les journaux DLP Fortra Digital Guardian dans Google Security Operations à l'aide d'un agent Bindplane. Le code de l'analyseur transforme les journaux bruts au format JSON en modèle de données unifié (UDM). Il extrait d'abord les champs du JSON brut, nettoie et normalise les données, puis mappe les champs extraits à leurs attributs UDM correspondants, en enrichissant les données avec des types d'événements spécifiques en fonction de l'activité identifiée.

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é à Fortra Digital Guardian DLP.

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

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 Syslog et l'envoyer à Google SecOps

  1. Accédez au fichier de configuration :

    1. 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.
    2. 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: '/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
            ingestion_labels:
                log_type: DIGITALGUARDIAN_DLP
                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é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 l'exportation Syslog Fortra Digital Guardian

  1. Connectez-vous à la console de gestion Digital Guardian.
  2. Accédez à Workspace > Exportation de données > Créer une exportation.
  3. Sélectionnez Alertes ou Événements comme source de données dans la liste Sources de données.
  4. Sélectionnez Syslog comme type d'exportation.
  5. Dans la liste Type, sélectionnez UDP (vous pouvez également sélectionner TCP comme protocole de transport, en fonction de votre configuration Bindplane).

  6. Sous le champ Serveur, saisissez l'adresse IP de l'agent Bindplane.

  7. Dans le champ Port, saisissez 514 (vous pouvez indiquer un autre port en fonction de la configuration de votre agent Bindplane).

  8. Sélectionnez un niveau de gravité dans la liste Niveau de gravité.

  9. Cochez la case Is Active (Est actif).

  10. Cliquez sur Suivant.

  11. Dans la liste des champs disponibles, ajoutez tous les champs Alerte et Événement pour l'exportation des données.

  12. Sélectionnez Critères pour les champs de votre exportation de données.

  13. Cliquez sur Suivant.

  14. Sélectionnez un groupe pour les critères.

  15. Cliquez sur Suivant.

  16. Cliquez sur Tester la requête.

  17. Cliquez sur Suivant.

  18. Cliquez sur Enregistrer.

Table de mappage UDM

Champ de journal Mappage UDM Logique
Version de l'agent observer.platform_version Mappé directement à partir du champ de journal brut Agent Version.
Application principal.process.command_line Mappé directement à partir du champ de journal brut Application s'il n'est pas vide.
Ligne de commande target.process.command_line Mappé directement à partir du champ de journal brut Command Line.
Nom de l'entreprise principal.user.company_name Mappé directement à partir du champ de journal brut Company Name.
Nom de l'ordinateur principal.hostname Mappé directement à partir du champ de journal brut Computer Name.
Nom d'hôte DNS target.asset.hostname Mappé directement à partir du champ de journal brut DNS Hostname.
Type de destination about.labels.value Mappé directement à partir du champ de journal brut Destination Drive Type. La clé correspondante est définie sur Destination Drive Type.
Extension du fichier de destination target.file.mime_type Directement mappé à partir du champ de journal brut Destination File Extension s'il n'est pas no extension ni [no extension].
Chemin d'accès au fichier de destination target.file.full_path Mappé directement à partir du champ de journal brut Destination File Path.
GUID de l'appareil src.resource.id Mappé à partir du champ de journal brut Device GUID avec le préfixe GUID:.
Expéditeur de l'e-mail network.email.from Mappé directement à partir du champ de journal brut Email Sender s'il n'est pas vide.
Objet de l'e-mail network.email.subject Mappé directement à partir du champ de journal brut Email Subject si Email Sender n'est pas vide.
Nom à afficher de l'événement target.resource.type Mappé directement à partir du champ de journal brut Event Display Name.
Heure de l'événement metadata.event_timestamp.seconds Converti en code temporel à partir du champ de journal brut Event Time à l'aide des formats yyyy-MM-dd HH:mm:ss A et TIMESTAMP_ISO8601.
Description du fichier metadata.description Mappé directement à partir du champ de journal brut File Description.
Taille de fichier about.labels.value Mappé directement à partir du champ de journal brut File Size. La clé correspondante est définie sur File Size.
Version du fichier about.labels.value Mappé directement à partir du champ de journal brut File Version. La clé correspondante est définie sur File Version.
Adresse IP principal.ip Directement mappé à partir du champ de journal brut IP Address si Source IP Address est vide.
Port local principal.port Mappé directement à partir du champ de journal brut Local Port s'il n'est pas vide et converti en entier.
Adresse MAC target.mac Mappé directement à partir du champ de journal brut MAC Address s'il n'est pas vide.
ID de la machine principal.asset.asset_id Mappé à partir du champ de journal brut Machine ID avec le préfixe MachineId:.
Type de machine principal.asset.category Mappé directement à partir du champ de journal brut Machine Type.
Hachage MD5 target.process.file.md5 Directement mappé à partir du champ de journal brut MD5 Hash après conversion en minuscules.
Direction du réseau network.direction Mappé à partir du champ de journal brut Network Direction. Si la valeur est Inbound, la valeur est définie sur INBOUND. Si la valeur est Outbound, la valeur est définie sur OUTBOUND.
Type d'opération security_result.action_details Mappé directement à partir du champ de journal brut Operation Type.
Application parentale principal.process.parent_process.command_line Mappé directement à partir du champ de journal brut Parent Application s'il n'est pas vide.
Hachage MD5 du parent target.process.parent_process.file.md5 Mappé directement à partir du champ de journal brut Parent MD5 Hash après conversion en minuscules s'il correspond à un modèle de chaîne hexadécimale.
Domaine de traitement target.administrative_domain Mappé directement à partir du champ de journal brut Process Domain.
Extension de fichier de processus target.process.file.mime_type Directement mappé à partir du champ de journal brut Process File Extension s'il n'est pas no extension ni [no extension].
Chemin de traitement target.process.file.full_path Mappé directement à partir du champ de journal brut Process Path.
PID du processus principal.process.pid Mappé directement à partir du champ de journal brut Process PID après conversion en chaîne.
Nom du produit metadata.product_name Mappé directement à partir du champ de journal brut Product Name.
Version du produit metadata.product_version Mappé directement à partir du champ de journal brut Product Version.
Protocole network.application_protocol Si la valeur est HTTP ou HTTPS, elle est définie sur HTTPS.
Nom de l'imprimante src.resource.name Mappé directement à partir du champ de journal brut Printer Name.
Port distant target.port Mappé directement à partir du champ de journal brut Remote Port s'il n'est pas vide et converti en entier.
Hachage SHA1 target.process.file.sha1 Directement mappé à partir du champ de journal brut SHA1 Hash après conversion en minuscules.
Hachage SHA256 target.process.file.sha256 Directement mappé à partir du champ de journal brut SHA256 Hash après conversion en minuscules.
Émetteur de la signature network.tls.server.certificate.issuer Mappé directement à partir du champ de journal brut Signature Issuer.
Objet de la signature network.tls.server.certificate.subject Mappé directement à partir du champ de journal brut Signature Subject.
Extension du fichier source src.file.mime_type Directement mappé à partir du champ de journal brut Source File Extension s'il n'est pas no extension ni [no extension].
Chemin d'accès au fichier source src.file.full_path Mappé directement à partir du champ de journal brut Source File Path.
Adresse IP source principal.ip Mappé directement à partir du champ de journal brut Source IP Address s'il n'est pas vide.
Taille totale about.labels.value Mappé directement à partir du champ de journal brut Total Size. La clé correspondante est définie sur Total Size.
Chemin de l'URL target.url Mappé directement à partir du champ de journal brut URL Path.
ID unique metadata.product_log_id Mappé directement à partir du champ de journal brut Unique ID.
Utilisateur principal.user.userid Mappé directement à partir du champ de journal brut User.
Détails bloqués security_result.action Si la valeur est Yes, la valeur est définie sur BLOCK. Si la valeur est No, la valeur est définie sur ALLOW.
dg_dst_dev.dev_prdname target.asset.hardware.model Mappé directement à partir du champ de journal brut dg_dst_dev.dev_prdname.
dg_dst_dev.dev_sernum target.asset.hardware.serial_number Mappé directement à partir du champ de journal brut dg_dst_dev.dev_sernum.
dg_recipients.uad_mr network.email.to Mappé directement à partir du champ de journal brut dg_recipients.uad_mr s'il correspond à un modèle d'adresse e-mail.
dg_src_dev.dev_prdname principal.asset.hardware.model Mappé directement à partir du champ de journal brut dg_src_dev.dev_prdname.
dg_src_dev.dev_sernum principal.asset.hardware.serial_number Mappé directement à partir du champ de journal brut dg_src_dev.dev_sernum.
metadata.event_type metadata.event_type Définissez-le sur GENERIC_EVENT au départ. Modifié en fonction de conditions spécifiques :
 – NETWORK_HTTP : si le nom d'hôte, le protocole HTTP/HTTPS et l'adresse MAC sont présents.
 – FILE_COPY : si les chemins d'accès aux fichiers de destination et source existent et que Operation Type est défini sur File Copy.
 – FILE_MOVE : si les chemins d'accès aux fichiers de destination et source existent et que Operation Type est défini sur File Move.
 – FILE_UNCATEGORIZED : si le chemin d'accès au fichier de destination, le chemin d'accès au processus ou la ligne de commande existent, et si Operation Type contient File.
 – USER_LOGOUT : si l'ID utilisateur existe et que Operation Type contient Logoff.
 – USER_LOGIN : si l'ID utilisateur existe et que Operation Type contient Logon.
 – NETWORK_UNCATEGORIZED : si le chemin d'accès/la ligne de commande du processus, l'ID du processus, la direction du réseau sortant et l'adresse MAC sont présents.
 – SCAN_PROCESS : si le chemin d'accès/la ligne de commande et l'ID du processus sont présents.
 – PROCESS_UNCATEGORIZED : si le chemin d'accès/la ligne de commande du processus existe.
metadata.log_type metadata.log_type Variable définie sur DIGITALGUARDIAN_DLP.
metadata.product_log_id metadata.product_log_id Mappé directement à partir du champ de journal brut Unique ID.
metadata.product_name metadata.product_name Mappé directement à partir du champ de journal brut Product Name.
metadata.product_version metadata.product_version Mappé directement à partir du champ de journal brut Product Version.
metadata.vendor_name metadata.vendor_name Variable définie sur DigitalGuardian.
network.application_protocol network.application_protocol Définie sur HTTPS, si Protocol est HTTP ou HTTPS.
network.direction network.direction Mappé à partir du champ de journal brut Network Direction. Si la valeur est Inbound, la valeur est définie sur INBOUND. Si la valeur est Outbound, la valeur est définie sur OUTBOUND.
network.email.from network.email.from Mappé directement à partir du champ de journal brut Email Sender s'il n'est pas vide.
network.email.subject network.email.subject Mappé directement à partir du champ de journal brut Email Subject si Email Sender n'est pas vide.
network.email.to network.email.to Mappé directement à partir du champ de journal brut dg_recipients.uad_mr s'il correspond à un modèle d'adresse e-mail.
network.tls.server.certificate.issuer network.tls.server.certificate.issuer Mappé directement à partir du champ de journal brut Signature Issuer.
network.tls.server.certificate.subject network.tls.server.certificate.subject Mappé directement à partir du champ de journal brut Signature Subject.
observer.platform_version observer.platform_version Mappé directement à partir du champ de journal brut Agent Version.
principal.asset.asset_id principal.asset.asset_id Mappé à partir du champ de journal brut Machine ID avec le préfixe MachineId:.
principal.asset.category principal.asset.category Mappé directement à partir du champ de journal brut Machine Type.
principal.asset.hardware.model principal.asset.hardware.model Mappé directement à partir du champ de journal brut dg_src_dev.dev_prdname.
principal.asset.hardware.serial_number principal.asset.hardware.serial_number Mappé directement à partir du champ de journal brut dg_src_dev.dev_sernum.
principal.hostname principal.hostname Mappé directement à partir du champ de journal brut Computer Name.
principal.ip principal.ip Mappé directement à partir du champ de journal brut Source IP Address s'il n'est pas vide. Sinon, elle est mappée à partir de IP Address si elle n'est pas vide.
principal.port principal.port Mappé directement à partir du champ de journal brut Local Port s'il n'est pas vide et converti en entier.
principal.process.command_line principal.process.command_line Mappé directement à partir du champ de journal brut Application s'il n'est pas vide.
principal.process.parent_process.command_line principal.process.parent_process.command_line Mappé directement à partir du champ de journal brut Parent Application s'il n'est pas vide.
principal.process.parent_process.file.md5 principal.process.parent_process.file.md5 Mappé directement à partir du champ de journal brut Parent MD5 Hash après conversion en minuscules s'il correspond à un modèle de chaîne hexadécimale.
principal.process.pid principal.process.pid Mappé directement à partir du champ de journal brut Process PID après conversion en chaîne.
principal.user.company_name principal.user.company_name Mappé directement à partir du champ de journal brut Company Name.
principal.user.userid principal.user.userid Mappé directement à partir du champ de journal brut User.
security_result.action security_result.action Si Was Detail Blocked est défini sur Yes, définissez-le sur BLOCK. Si Was Detail Blocked est défini sur No, définissez-le sur ALLOW.
security_result.action_details security_result.action_details Mappé directement à partir du champ de journal brut Operation Type.
src.file.full_path src.file.full_path Mappé directement à partir du champ de journal brut Source File Path.
src.file.mime_type src.file.mime_type Directement mappé à partir du champ de journal brut Source File Extension s'il n'est pas no extension ni [no extension].
src.resource.id src.resource.id Mappé à partir du champ de journal brut Device GUID avec le préfixe GUID:.
src.resource.name src.resource.name Mappé directement à partir du champ de journal brut Printer Name.
target.administrative_domain target.administrative_domain Mappé directement à partir du champ de journal brut Process Domain.
target.asset.hardware.model target.asset.hardware.model Mappé directement à partir du champ de journal brut dg_dst_dev.dev_prdname.
target.asset.hardware.serial_number target.asset.hardware.serial_number Mappé directement à partir du champ de journal brut dg_dst_dev.dev_sernum.
target.asset.hostname target.asset.hostname Mappé directement à partir du champ de journal brut DNS Hostname.
target.asset.product_object_id target.asset.product_object_id Mappé directement à partir du champ de journal brut Adapter Name.
target.file.full_path target.file.full_path Mappé directement à partir du champ de journal brut Destination File Path.
target.file.mime_type target.file.mime_type Directement mappé à partir du champ de journal brut Destination File Extension s'il n'est pas no extension ni [no extension].
target.mac target.mac Mappé directement à partir du champ de journal brut MAC Address s'il n'est pas vide.
target.port target.port Mappé directement à partir du champ de journal brut Remote Port s'il n'est pas vide et converti en entier.
target.process.command_line target.process.command_line Mappé directement à partir du champ de journal brut Command Line.
target.process.file.full_path target.process.file.full_path Mappé directement à partir du champ de journal brut Process Path.
target.process.file.md5 target.process.file.md5 Directement mappé à partir du champ de journal brut MD5 Hash après conversion en minuscules.
target.process.file.mime_type target.process.file.mime_type Directement mappé à partir du champ de journal brut Process File Extension s'il n'est pas no extension ni [no extension].
target.process.file.sha1 target.process.file.sha1 Directement mappé à partir du champ de journal brut SHA1 Hash après conversion en minuscules.
target.process.file.sha256 target.process.file.sha256 Directement mappé à partir du champ de journal brut SHA256 Hash après conversion en minuscules.
target.process.parent_process.command_line target.process.parent_process.command_line Mappé directement à partir du champ de journal brut Parent Application s'il n'est pas vide.
target.process.parent_process.file.md5 target.process.parent_process.file.md5 Mappé directement à partir du champ de journal brut Parent MD5 Hash après conversion en minuscules s'il correspond à un modèle de chaîne hexadécimale.
target.resource.type target.resource.type Mappé directement à partir du champ de journal brut Event Display Name.
target.url target.url Mappé directement à partir du champ de journal brut URL Path.
extensions.auth.type extensions.auth.type Définie sur AUTHTYPE_UNSPECIFIED, si Operation Type est User Logoff ou User Logon.

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