Collecter les journaux Fortra Digital Guardian DLP
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
- 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
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 ce guide d'installation.
Configurer l'agent Bindplane pour ingérer Syslog et l'envoyer à Google SecOps
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).
- Recherchez 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: '/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
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 l'exportation Syslog Fortra Digital Guardian
- Connectez-vous à la console de gestion Digital Guardian.
- Accédez à Workspace > Exportation de données > Créer une exportation.
- Sélectionnez Alertes ou Événements comme source de données dans la liste Sources de données.
- Sélectionnez Syslog comme type d'exportation.
Dans la liste Type, sélectionnez UDP (vous pouvez également sélectionner TCP comme protocole de transport, en fonction de votre configuration Bindplane).
Sous le champ Serveur, saisissez l'adresse IP de l'agent Bindplane.
Dans le champ Port, saisissez
514
(vous pouvez indiquer un autre port en fonction de la configuration de votre agent Bindplane).Sélectionnez un niveau de gravité dans la liste Niveau de gravité.
Cochez la case Is Active (Est actif).
Cliquez sur Suivant.
Dans la liste des champs disponibles, ajoutez tous les champs Alerte et Événement pour l'exportation des données.
Sélectionnez Critères pour les champs de votre exportation de données.
Cliquez sur Suivant.
Sélectionnez un groupe pour les critères.
Cliquez sur Suivant.
Cliquez sur Tester la requête.
Cliquez sur Suivant.
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.