Collecter les journaux ESET EDR

Compatible avec :

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

  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

Pour plus d'options d'installation, consultez le guide d'installation.

Configurer l'agent Bindplane pour ingérer Syslog et l'envoyer à Google SecOps

  1. 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).
  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_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
    
  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 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

  1. Connectez-vous à la console Web ESET Protect.
  2. Accédez à Plus > Paramètres > Paramètres avancés > Serveur Syslog.
  3. Sélectionnez le bouton à côté de Activer Syslog.
  4. 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.
  5. Cliquez sur Enregistrer.

Configurer Syslog pour ESET PROTECT Cloud

  1. Connectez-vous à la console Web ESET Protect.
  2. Accédez à Plus > Paramètres > Serveur Syslog.
  3. Sélectionnez le bouton à côté de Activer Syslog.
  4. 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).
  5. 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 : INFORMATIONALERROR, error : ERRORWARNING, 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.