Collecter les journaux ESET AV

Compatible avec :

Ce document explique comment ingérer des journaux ESET AV dans Google Security Operations à l'aide de Bindplane. Le code du parseur Logstash extrait les données des événements de sécurité des journaux ESET_AV au format SYSLOG ou JSON. Il normalise d'abord le message brut, puis l'analyse en fonction du format identifié, en mappant les champs extraits au schéma UDM (Unified Data Model) correspondant pour une représentation et une analyse cohérentes.

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_AV'
                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 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 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
compte principal.administrative_domain Extrait du champ account à l'aide du modèle Grok %{DATA:admin_domain}\\\\%{WORD:user_id}.
compte principal.user.userid Extrait du champ account à l'aide du modèle Grok %{DATA:admin_domain}\\\\%{WORD:user_id}.
action security_result.action Si action est défini sur Block (sans tenir compte de la casse), définissez-le sur BLOCK. Si action est défini sur Start (sans tenir compte de la casse), définissez-le sur ALLOW.
action_taken security_result.action_details Mappé directement à partir du champ action_taken.
computer_severity_score security_result.detection_fields Une paire clé-valeur est créée avec la clé computer_severity_score et la valeur du champ computer_severity_score. Cette paire est ajoutée au tableau security_result.detection_fields.
détail security_result.description Mappé directement à partir du champ detail.
domaine principal.domain.name Mappé directement à partir du champ domain.
eialarmid security_result.detection_fields Une paire clé-valeur est créée avec la clé eialarmid et la valeur du champ eialarmid. Cette paire est ajoutée au tableau security_result.detection_fields.
eiconsolelink principal.url Mappé directement à partir du champ eiconsolelink.
événement metadata.description Remplacement du nom event par event_desc et mappage à metadata.description.
event_type metadata.product_event_type Mappé directement à partir du champ event_type.
group_name principal.group.group_display_name Mappé directement à partir du champ group_name.
hash principal.file.sha1 Converti en minuscules. Si la valeur en minuscules correspond à l'expression régulière SHA-1, elle est mappée sur principal.file.sha1.
hash principal.resource.attribute.labels Une paire clé-valeur est créée avec la clé hash et la valeur du champ hash. Cette paire est ajoutée au tableau principal.resource.attribute.labels.
nom d'hôte principal.asset.hostname Mappé directement à partir du champ hostname.
nom d'hôte principal.hostname Mappé directement à partir du champ hostname.
entrant network.direction Si la valeur est "true", définissez-la sur INBOUND. Si la valeur est "false", définissez-la sur OUTBOUND.
ipv4 target.asset.ip Mappé directement à partir du champ ipv4 si target_address est vide.
ipv4 target.ip Mappé directement à partir du champ ipv4 si target_address est vide.
json_data Analysé au format JSON pour extraire différents champs.
message Analysé à l'aide de grok pour extraire le code temporel, l'hôte et les données JSON.
need_restart additional.fields Une paire clé-valeur est créée avec la clé need_restart et la valeur du champ need_restart (convertie en chaîne). Cette paire est ajoutée au tableau additional.fields.
os_name principal.platform Si le champ contient Window ou window (non sensible à la casse), définissez-le sur WINDOWS. Si le champ contient Linux ou linux (non sensible à la casse), définissez-le sur LINUX. Si le champ contient Mac ou mac (non sensible à la casse), définissez-le sur MAC.
os_name principal.platform_version Mappé directement à partir du champ os_name.
process_name principal.process.file.full_path Mappé directement à partir du champ process_name. Si ce champ est vide, la valeur de processname est utilisée.
processname principal.process.file.full_path Si process_name est vide, il est mappé sur process_name.
protocol network.ip_protocol Converti en majuscules. Si la valeur en majuscules correspond à des protocoles connus (TCP, UDP, ICMP, etc.), elle est mappée sur network.ip_protocol.
résultat security_result.summary Mappé directement à partir du champ result.
rulename security_result.rule_name Mappé directement à partir du champ rulename.
scan_id security_result.detection_fields Une paire clé-valeur est créée avec la clé scan_id et la valeur du champ scan_id. Cette paire est ajoutée au tableau security_result.detection_fields.
scanner_id security_result.detection_fields Une paire clé-valeur est créée avec la clé scanner_id et la valeur du champ scanner_id. Cette paire est ajoutée au tableau security_result.detection_fields.
de gravité, security_result.severity Si le champ contient Warn ou warn (non sensible à la casse), définissez-le sur HIGH. Si le champ contient Info ou info (non sensible à la casse), définissez-le sur LOW.
severity_score security_result.detection_fields Une paire clé-valeur est créée avec la clé severity_score et la valeur du champ severity_score. Cette paire est ajoutée au tableau security_result.detection_fields.
source_address principal.asset.ip Mappé directement à partir du champ source_address.
source_address principal.ip Mappé directement à partir du champ source_address.
source_port principal.port Converti en chaîne, puis en entier. Associé à principal.port.
source_uuid metadata.product_log_id Mappé directement à partir du champ source_uuid.
cible Renommé en target1.
target_address target.asset.ip Mappé directement à partir du champ target_address.
target_address target.ip Mappé directement à partir du champ target_address.
target_port target.port Converti en chaîne, puis en entier. Associé à target.port.
threat_handled security_result.detection_fields Une paire clé-valeur est créée avec la clé threat_handled et la valeur du champ threat_handled (convertie en chaîne). Cette paire est ajoutée au tableau security_result.detection_fields.
threat_name security_result.threat_name Mappé directement à partir du champ threat_name.
threat_type security_result.threat_id Mappé directement à partir du champ threat_type.
temps metadata.event_timestamp Permet de renseigner metadata.event_timestamp.
nom d'utilisateur principal.user.userid Mappé directement à partir du champ username si user_id et user sont vides.
utilisateur principal.user.userid Mappé directement à partir du champ user si user_id est vide.
metadata.event_type Si source_address et target_address ne sont pas vides, définissez la valeur sur NETWORK_CONNECTION. Sinon, si has_user est défini sur "true", définissez-le sur USER_UNCATEGORIZED. Sinon, si has_principal est défini sur "true", définissez-le sur STATUS_UPDATE. Sinon, définissez-la sur GENERIC_EVENT.
metadata.log_type Variable définie sur ESET_AV.
metadata.product_name Variable définie sur ESET_AV.
metadata.vendor_name Variable définie sur ESET_AV.
intermediary.hostname La valeur de ce champ est extraite du champ host du message de journal.
principal.user.userid Si le champ account n'est pas vide, l'analyseur extrait l'ID utilisateur du champ account à l'aide d'un modèle Grok. Sinon, il vérifie si le champ user n'est pas vide et, si c'est le cas, il prend sa valeur. Si account et user sont vides, le système vérifie si le champ username n'est pas vide et, le cas échéant, prend sa valeur.

Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.