Collecter les journaux ESET EDR
Ce document explique comment ingérer des journaux ESET dans Google Security Operations à l'aide de Bindplane. Le code du parseur Logstash tente d'abord d'extraire les champs des journaux ESET EDR au format SYSLOG ou JSON à l'aide d'une série de modèles grok
. En fonction des champs extraits et de leur format, il traite ensuite les données à l'aide de filtres clé/valeur (kv
) ou de l'analyse JSON pour structurer les informations dans une représentation du modèle de données unifié (UDM, Unified Data Model).
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é à ESET Protect
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 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: 'ESET_EDR' 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
avec le chemin d'accès à l'emplacement 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 Syslog pour ESET PROTECT sur site
- Connectez-vous à la console Web ESET Protect.
- Accédez à Plus > Paramètres > Paramètres avancés > Serveur Syslog.
- Sélectionnez le bouton à côté de Activer Syslog.
- Fournissez les informations de configuration suivantes :
- Hôte : saisissez l'adresse IP de l'agent Bindplane.
- Port : saisissez le numéro de port de l'agent Bindplane (
514
pour UDP). - Format : sélectionnez Syslog.
- Transport : sélectionnez UDP.
- Niveau de détail des journaux de trace : sélectionnez Informations.
- Exporter les journaux vers Syslog : sélectionnez Activer.
- Format des journaux exportés : sélectionnez JSON.
- Cliquez sur Enregistrer.
Configurer Syslog pour ESET PROTECT Cloud
- Connectez-vous à la console Web ESET Protect.
- Accédez à Plus > Paramètres > Serveur Syslog.
- Sélectionnez le bouton à côté de Activer Syslog.
- Fournissez les informations de configuration suivantes :
- Format de la charge utile : sélectionnez JSON.
- Format de l'enveloppe : sélectionnez Syslog.
- Niveau de journalisation minimal : sélectionnez Informationnel.
- Types d'événements à consigner : sélectionnez Tous les types.
- Adresse IP de destination : saisissez l'adresse IP de l'agent Bindplane.
- Port : saisissez le numéro de port de l'agent Bindplane (
514
pour UDP).
- Cliquez sur Enregistrer.
Table de mappage UDM
Champ de journal | Mappage UDM | Logique |
---|---|---|
action | event1.idm.read_only_udm.security_result.action | Défini sur BLOCK si la valeur est Blocked . |
actionTaken | event2.idm.read_only_udm.metadata.event_type | Défini sur SCAN_PROCESS si la valeur est Cleaned by deleting . |
actionTaken | event1.idm.read_only_udm.security_result.action_details | Mappé directement à partir du champ actionTaken . |
actionTaken | event2.idm.read_only_udm.security_result.action_details | Mappé directement à partir du champ actionTaken . |
accountName | event2.idm.read_only_udm.additional.fields.value.string_value | Mappé directement à partir du champ accountName . La clé est définie sur accountName . |
application | event3.idm.read_only_udm.principal.application | Mappé directement à partir du champ app . |
circonstances | event2.idm.read_only_udm.additional.fields.value.string_value | Mappé directement à partir du champ circumstances . La clé est définie sur circumstances . |
Computer_name | event3.idm.read_only_udm.principal.hostname | Mappé directement à partir du champ Computer_name . |
Computer_name | event3.idm.read_only_udm.principal.asset.hostname | Mappé directement à partir du champ Computer_name . |
date_time | ||
Detection_name | event3.idm.read_only_udm.security_result.threat_name | Mappé directement à partir du champ Detection_name . |
Detectiontype | event3.idm.read_only_udm.security_result.category_details | Mappé directement à partir du champ Detectiontype . |
dst | event2.idm.read_only_udm.target.ip | Mappé directement à partir du champ dst . |
dst | event2.idm.read_only_udm.target.asset.ip | Mappé directement à partir du champ dst . |
dstPort | event2.idm.read_only_udm.target.port | Mappé directement à partir du champ dstPort après sa conversion en entier. |
événement | event1.idm.read_only_udm.metadata.description | Mappé directement à partir du champ event . |
event_type | event1.idm.read_only_udm.metadata.product_event_type | Mappé directement à partir du champ event_type . |
event_type | event1.idm.read_only_udm.metadata.event_type | Défini sur NETWORK_CONNECTION si la valeur est FirewallAggregated_Event . |
hash | event1.idm.read_only_udm.target.file.sha1 | Directement mappé à partir du champ hash après conversion en minuscules. |
nom d'hôte | event1.idm.read_only_udm.target.hostname | Mappé directement à partir du champ hostname . |
nom d'hôte | event1.idm.read_only_udm.target.asset.hostname | Mappé directement à partir du champ hostname . |
nom d'hôte | event.alert.devices.hostname | Mappé directement à partir du champ hostname . |
ipv4 | event1.idm.read_only_udm.principal.ip | Mappé directement à partir du champ ipv4 . Ce champ est d'abord stocké dans un champ temporaire udm_ip . |
ipv4 | event1.idm.read_only_udm.principal.asset.ip | Mappé directement à partir du champ ipv4 . Ce champ est d'abord stocké dans un champ temporaire udm_ip . |
ipv4 | event.alert.devices.ip_addresses | Mappé directement à partir du champ ipv4 après conversion en adresse IP. |
Logged_user | event3.idm.read_only_udm.principal.user.userid | Mappé directement à partir du champ Logged_user . |
objectUri | event1.idm.read_only_udm.target.file.full_path | Mappé directement à partir du champ objectUri . |
objectUri | event2.idm.read_only_udm.target.file.full_path | Mappé directement à partir du champ objectUri . |
processName | event2.idm.read_only_udm.target.process.file.full_path | Mappé directement à partir du champ processName . |
processName | event1.idm.read_only_udm.principal.process.file.full_path | Mappé directement à partir du champ processName . |
process_id | event3.idm.read_only_udm.principal.process.pid | Mappé directement à partir du champ process_id . |
process_id | event2.idm.read_only_udm.target.process.pid | Mappé directement à partir du champ process_id . |
protocol | event1.idm.read_only_udm.network.ip_protocol | Mappé directement à partir du champ protocol . |
proto | event2.idm.read_only_udm.network.ip_protocol | Mappé directement à partir du champ proto . |
résultat | event2.idm.read_only_udm.security_result.action | Défini sur ALLOW si la valeur est Success . |
Scanner | event3.idm.read_only_udm.security_result.description | Mappé directement à partir du champ Scanner . |
de gravité, | event1.idm.read_only_udm.security_result.severity | Mappé à partir du champ severity en fonction de ces conditions : - INFO , Informational , DEBUG , info : INFORMATIONAL - ERROR , error : ERROR - WARNING , Warning : LOW |
source_address | event1.idm.read_only_udm.principal.ip | Mappé directement à partir du champ source_address . |
source_address | event1.idm.read_only_udm.principal.asset.ip | Mappé directement à partir du champ source_address . |
source_port | event1.idm.read_only_udm.principal.port | Mappé directement à partir du champ source_port après sa conversion en entier. |
source_uuid | event1.idm.read_only_udm.metadata.product_log_id | Mappé directement à partir du champ source_uuid . |
src | event2.idm.read_only_udm.principal.ip | Mappé directement à partir du champ src . |
src | event2.idm.read_only_udm.principal.asset.ip | Mappé directement à partir du champ src . |
srcPort | event2.idm.read_only_udm.principal.port | Mappé directement à partir du champ srcPort après sa conversion en entier. |
target_address | event1.idm.read_only_udm.target.ip | Mappé directement à partir du champ target_address . |
target_address | event1.idm.read_only_udm.target.asset.ip | Mappé directement à partir du champ target_address . |
target_port | event1.idm.read_only_udm.target.port | Mappé directement à partir du champ target_port après sa conversion en entier. |
threatName | event2.idm.read_only_udm.security_result.threat_name | Mappé directement à partir du champ threatName . |
threatName | event.alert.alert_short_name | Mappé directement à partir du champ threatName . |
Time_of_occurrence | event3.idm.read_only_udm.additional.fields.value.string_value | Mappé directement à partir du champ Time_of_occurrence . La clé est définie sur Time_of_occurrence . |
type | event2.idm.read_only_udm.security_result.category_details | Mappé directement à partir du champ type . |
type | event2.idm.read_only_udm.metadata.event_type | Défini sur GENERIC_EVENT de manière conditionnelle si aucun autre type d'événement spécifique ne correspond. |
user_id | event2.idm.read_only_udm.principal.user.userid | Mappé directement à partir du champ user_id . |
event1.idm.read_only_udm.metadata.event_type | Défini sur FILE_UNCATEGORIZED si la valeur de event_type est Threat_Event . |
|
event1.idm.read_only_udm.metadata.log_type | Variable définie sur ESET_EDR . |
|
event1.idm.read_only_udm.metadata.product_name | Défini sur ESET si la valeur de event_type est FirewallAggregated_Event . |
|
event2.idm.read_only_udm.metadata.log_type | Variable définie sur ESET_EDR . |
|
event2.idm.read_only_udm.metadata.product_name | Variable définie sur EDR . |
|
event2.idm.read_only_udm.metadata.vendor_name | Variable définie sur ESET . |
|
event3.idm.read_only_udm.metadata.event_type | Définie de manière conditionnelle en fonction des règles suivantes : USER_UNCATEGORIZED si principal_user_present est true . - STATUS_UPDATE si principal_machine_id_present est true . - GENERIC_EVENT sinon. |
|
event3.idm.read_only_udm.metadata.log_type | Variable définie sur ESET_EDR . |
|
event3.idm.read_only_udm.metadata.product_name | Variable définie sur EDR . |
|
event3.idm.read_only_udm.metadata.vendor_name | Variable définie sur ESET . |
|
event.alert.is_significant | Définissez-le sur true , puis convertissez-le en valeur booléenne. |
|
event3.idm.read_only_udm.security_result.description | Défini de manière conditionnelle sur la valeur de kv_data si Scanner est vide. |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.