Collecter les journaux ESET AV
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
- 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_AV' 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 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 |
---|---|---|
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.