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,viou le Bloc-notes).
- Recherchez le fichier
Modifiez le fichier
config.yamlcomme 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_labelsRemplacez 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.jsonavec 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-agentPour 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 (
514pour 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 (
514pour 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.