Collecter les journaux Trellix DLP
Ce document explique comment ingérer les journaux Trellix (anciennement McAfee) DLP (Data Loss Prevention) dans Google Security Operations à l'aide de Bindplane. Cet analyseur traite les journaux McAfee DLP au format CSV et les transforme en modèle de données unifié (UDM). Il nettoie l'entrée, analyse les données CSV, mappe les champs à l'UDM, gère des types et des niveaux de gravité spécifiques d'événements DLP, et enrichit l'UDM avec des métadonnées supplémentaires et des détails sur les résultats de sécurité.
Avant de commencer
Assurez-vous de remplir les conditions suivantes :
- Instance Google SecOps
- Windows 2016 ou version ultérieure, ou un hôte Linux avec
systemd
- Si vous exécutez le programme derrière un proxy, les ports du pare-feu sont ouverts.
- Accès privilégié à McAfee EPO
- L'extension McAfee DLP Endpoint est installée et active.
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
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 :
- 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_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 ingestion_labels: log_type: 'MCAFEE_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 le serveur Syslog dans McAfee ePO
- Connectez-vous à la console McAfee ePO.
- Accédez à Menu > Configuration > Serveurs enregistrés.
- Cliquez sur Nouveau serveur> Serveur Syslog.
- Fournissez les informations de configuration suivantes :
- Nom : nom unique du serveur Syslog (par exemple,
Google SecOps
). - Adresse du serveur : saisissez l'adresse IP de l'agent Bindplane.
- Port : saisissez le numéro de port de l'agent Bindplane (la valeur par défaut est
514
). - Protocole : sélectionnez UDP ou TCP (selon l'installation de votre agent Bindplane).
- Format : utilisez
CSV
ouCEF
.
- Nom : nom unique du serveur Syslog (par exemple,
- Cliquez sur Enregistrer.
Configurer le transfert d'événements DLP
- Accédez à Menu > Protection des données > Gestionnaire de règles DLP.
- Cliquez sur l'onglet Règles d'attribution de règles DLP.
- Modifiez la règle qui s'applique à vos systèmes cibles ou créez-en une.
- Accédez à l'onglet Actions de la règle.
- Cochez la case Journaliser sur le serveur Syslog, puis sélectionnez le serveur Syslog que vous avez créé précédemment.
- Enregistrez la règle.
Activer le transfert des incidents DLP
- Accédez à Menu > Protection des données > Gestionnaire d'incidents DLP.
- Cliquez sur Actions liées à l'incident.
- Créez ou modifiez une action à transférer vers le serveur Syslog.
- Attribuez cette action à une règle de votre règlement de protection contre la perte de données.
Déployer la règle
- Accédez à Arborescence du système> sélectionnez le groupe ou le système souhaité.
- Cliquez sur Actions > Agent > Réactiver les agents.
- Sélectionnez les conditions d'envoi.
- Cliquez sur OK.
Table de mappage UDM
Champ de journal | Mappage UDM | Logique |
---|---|---|
action |
security_result.action_details |
Mappé directement à partir du champ action . |
action |
security_result.action |
Dérivé du champ action . Si action est défini sur 1, la valeur est BLOCK. Si action est défini sur 0, la valeur est ALLOW. Si action est défini sur 6, la valeur est UNKNOWN_ACTION. |
agent_ver |
metadata.product_version |
Mappé directement à partir du champ agent_ver (qui provient de column8 ). |
class_count |
additional.fields[4].key |
La valeur est ClassCount . |
class_count |
additional.fields[4].value.string_value |
Mappé directement à partir du champ class_count . |
class_display |
additional.fields[5].key |
La valeur est ClassDisplay . |
class_display |
additional.fields[5].value.string_value |
Mappé directement à partir du champ class_display . |
count |
additional.fields[6].key |
La valeur est Count . |
count |
additional.fields[6].value.string_value |
Mappé directement à partir du champ count . |
device_name |
principal.hostname |
Mappé directement à partir du champ device_name . |
dst |
target.hostname |
Mappé directement à partir du champ dst si inc_type est défini sur 10000 . |
dst |
target.user.userid |
Mappé directement à partir du champ dst si inc_type n'est pas 10000 . |
dst_app |
target.application |
Mappé directement à partir du champ dst_app . |
dst_url |
target.url |
Mappé directement à partir du champ dst_url . |
encrypt |
security_result.detection_fields[1].key |
La valeur est EncryptionProvider . |
encrypt |
security_result.detection_fields[1].value |
Mappé directement à partir du champ encrypt . |
evidence_count |
additional.fields[2].key |
La valeur est EvidenceCount . |
evidence_count |
additional.fields[2].value.string_value |
Mappé directement à partir du champ evidence_count . |
fail_reason |
additional.fields[3].key |
La valeur est FailReason . |
fail_reason |
additional.fields[3].value.string_value |
Mappé directement à partir du champ fail_reason . |
fail_reason |
security_result.description |
Si fail_reason est défini sur 0 , la valeur est No Failure . Sinon, la valeur est Failure Occurred . |
file |
target.file.full_path |
Mappé directement à partir du champ file . |
file_size |
target.file.size |
Directement mappé à partir du champ file_size , converti en entier non signé. |
group |
principal.user.attribute.labels.key |
La valeur est group . |
group |
principal.user.attribute.labels.value |
Mappé directement à partir du champ group . |
inc_id |
metadata.product_log_id |
Mappé directement à partir du champ inc_id (qui provient de column1 ). |
inc_type |
metadata.event_type |
Utilisé dans la logique conditionnelle pour déterminer la valeur metadata.event_type . Pour en savoir plus, consultez la logique. |
inc_type |
metadata.product_event_type |
Mappé directement à partir du champ inc_type (qui provient de column2 ). |
ip |
principal.ip |
Adresse IP extraite du champ ip à l'aide de grok. |
local_date |
metadata.event_timestamp |
Code temporel du champ local_date , analysé et converti en secondes depuis l'epoch. |
name |
principal.user.user_display_name |
Mappé directement à partir du champ name . Si inc_type est dans [10000 ,10001 ,10002 ,40101 ,40400 ,40500 ,40700 ] et que ip est une adresse IP valide, la valeur est SCAN_NETWORK . Si inc_type est défini sur 40102 et que file n'est pas vide, la valeur est SCAN_FILE . Si inc_type est compris entre 40301 et 40602 , la valeur est PROCESS_UNCATEGORIZED . Sinon, la valeur est GENERIC_EVENT . Valeur codée en dur : GCP_CLOUDAUDIT . Valeur codée en dur : Mcafee DLP . Valeur codée en dur : Mcafee . Si status_id est compris entre 1 et 2 , la valeur est NEW . Si status_id est compris entre 3 et 4 , la valeur est CLOSED . Si status_id est compris entre 5 et 6 , la valeur est REVIEWED . La valeur est StatusId . La valeur est Resolution Id . La valeur est Expected Action . |
process_name |
target.process.file.full_path |
Mappé directement à partir du champ process_name . |
resolution_id |
security_result.about.labels[0].value |
Mappé directement à partir du champ resolution_id . |
rule_name |
security_result.rule_name |
Mappé directement à partir du champ rule_name . |
rule_set |
security_result.rule_labels.key |
La valeur est rule_set . |
rule_set |
security_result.rule_labels.value |
Mappé directement à partir du champ rule_set . |
sev |
security_result.severity |
Dérivé du champ sev . Si sev est défini sur 1, le message est de type INFORMATIONAL. Si sev est défini sur 2, il s'agit d'une erreur. Si sev est défini sur 3, le niveau est FAIBLE. Si sev est défini sur 4, la priorité est HAUTE. Si sev est défini sur 5, le problème est CRITIQUE. |
sev |
security_result.severity_details |
Mappé directement à partir du champ sev . |
status_id |
principal.labels.value |
Mappé directement à partir du champ status_id . |
total_count |
additional.fields[1].key |
La valeur est TotalCount . |
total_count |
additional.fields[1].value.string_value |
Mappé directement à partir du champ total_count . |
total_size |
additional.fields[0].key |
La valeur est TotalSize . |
total_size |
additional.fields[0].value.string_value |
Mappé directement à partir du champ total_size . |
usb_serial_number |
security_result.detection_fields[0].key |
La valeur est USBSerialNumber . |
usb_serial_number |
security_result.detection_fields[0].value |
Mappé directement à partir du champ usb_serial_number . |
user |
principal.user.userid |
Mappé directement à partir du champ user . |
user_ou |
principal.user.group_identifiers |
Mappé directement à partir du champ user_ou . |
volume_serial_number |
security_result.detection_fields[2].key |
La valeur est VolumeSerialNumber . |
volume_serial_number |
security_result.detection_fields[2].value |
Mappé directement à partir du champ volume_serial_number . |
expected_action |
security_result.about.labels[1].value |
Mappé directement à partir du champ expected_action . |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.