Collecter les journaux Veridium ID
Ce document explique comment ingérer des journaux Veridium ID dans Google Security Operations à l'aide de Bindplane. Le parseur extrait d'abord les champs des messages syslog et les catégorise en fonction de "log_identifier". Ensuite, il utilise une logique conditionnelle et une analyse clé-valeur pour mapper les champs extraits dans une structure de modèle de données unifié (UDM), en gérant les formats ActionLog
et EventLog
.
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, assurez-vous que les ports du pare-feu sont ouverts.
- Accès privilégié à Veridium ID
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
Installez l'agent Bindplane sur votre système d'exploitation Windows ou Linux en suivant les instructions ci-dessous.
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 :
- Trouvez 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).
- Trouvez 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 log_type: 'VERIDIUM_ID' raw_log_field: body ingestion_labels: 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 Veridium ID
- Connectez-vous à l'hôte Veridium ID à l'aide de SSH ou de la CLI.
Modifiez le fichier
/etc/rsyslog.conf
ou/etc/rsyslog.d/events.conf
à l'aide de VI.vi /etc/rsyslog.conf
Saisissez les informations suivantes en remplaçant
<bindplane-ip>
et<bindplane-port>
par les informations réelles de l'agent Bindplane.module(load="imfile" PollingInterval="10") input(type="imfile" File="/var/log/veridiumid/websecadmin/events.log" Tag="ver-adminevents" reopenOnTruncate="on") input(type="imfile" File="/var/log/veridiumid/tomcat/events.log" Tag="ver-events" reopenOnTruncate="on") if $programname == 'ver-events' then @@<bindplane-ip>:<bindplane-port> if $programname == 'ver-adminevents' then @@<bindplane-ip>:<bindplane-port>
Enregistrez le fichier et quittez VI.
Table de mappage UDM
Champ de journal | Mappage UDM | Logique |
---|---|---|
_caller.accountId |
principal.user.userid |
Mappé directement à partir du champ _caller.accountId . |
_caller.accountEmailAddressInfo |
principal.user.email_addresses |
Mappé directement à partir du champ _caller.accountEmailAddressInfo . |
_caller.accountExternalId |
principal.user.email_addresses |
Mappé directement à partir du champ _caller.accountExternalId . |
_caller.accountStatus |
principal.user.attribute.labels[account_status].value |
Mappé directement à partir du champ _caller.accountStatus . |
_caller.deviceId |
principal.asset.asset_id |
Préfixé par "VERIDIUM_ID:" et mappé à partir du champ _caller.deviceId . |
_caller.deviceDescription |
principal.asset.attribute.labels[device_description].value |
Mappé directement à partir du champ _caller.deviceDescription . |
_caller.deviceManufacturer |
principal.asset.attribute.labels[device_manufacturer].value |
Mappé directement à partir du champ _caller.deviceManufacturer . |
_caller.deviceName |
principal.asset.attribute.labels[device_name].value |
Mappé directement à partir du champ _caller.deviceName . |
_caller.deviceOs |
principal.asset.platform_software.platform |
Mappé à partir du champ _caller.deviceOs . Si la valeur est "iOS", elle est mappée sur "IOS". Si la valeur est "Android", elle est mappée sur "ANDROID". Si la valeur est "WIN" ou "Windows", elle est mappée sur "WINDOWS". |
_caller.deviceStatus |
principal.asset.attribute.labels[device_status].value |
Mappé directement à partir du champ _caller.deviceStatus . |
_caller.deviceType |
principal.asset.attribute.labels[device_type].value |
Mappé directement à partir du champ _caller.deviceType . |
actionDate |
additional.fields[action_date].value.string_value |
Mappé directement à partir du champ actionDate . |
actionName |
metadata.product_event_type |
Mappé directement à partir du champ actionName . |
accountEmail |
principal.user.email_addresses |
Mappé directement à partir du champ accountEmail . |
accountExternalId |
principal.user.email_addresses |
Mappé directement à partir du champ accountExternalId . |
accountId |
principal.user.userid |
Mappé directement à partir du champ accountId . |
authenticatorDeviceContext.deviceMake |
intermediary.asset.hardware.manufacturer |
Mappé directement à partir du champ authenticatorDeviceContext.deviceMake . |
authenticatorDeviceContext.ip |
intermediary.ip |
Mappé directement à partir du champ authenticatorDeviceContext.ip . |
authenticatorDeviceContext.location.city |
intermediary.asset.location.city |
Mappé directement à partir du champ authenticatorDeviceContext.location.coordinates.latitude . |
authenticatorDeviceContext.location.coordinates.latitude |
intermediary.asset.location.region_latitude |
Mappé directement à partir du champ authenticatorDeviceContext.location.coordinates.latitude . |
authenticatorDeviceContext.location.coordinates.longitude |
intermediary.asset.location.region_longitude |
Mappé directement à partir du champ authenticatorDeviceContext.location.coordinates.longitude . |
authenticatorDeviceContext.location.countryName |
intermediary.asset.location.country_or_region |
Mappé directement à partir du champ authenticatorDeviceContext.location.countryName . |
authenticatorDeviceContext.location.ip |
intermediary.ip |
Mappé directement à partir du champ authenticatorDeviceContext.location.ip . |
authenticationDeviceDescription |
intermediary.asset.attribute.labels[authentication_device_description].value |
Mappé directement à partir du champ authenticationDeviceDescription . |
authenticationDeviceName |
intermediary.asset.asset_id |
Préfixé par "VERIDIUM_ID:" et mappé à partir du champ authenticationDeviceName . |
authenticationDeviceOs |
intermediary.asset.platform_software.platform |
Mappé à partir du champ authenticationDeviceOs . Si la valeur est "iOS", elle est mappée sur "IOS". Si la valeur est "Android", elle est mappée sur "ANDROID". Si la valeur est "WIN" ou "Windows", elle est mappée sur "WINDOWS". |
authenticationDeviceOsVersion |
intermediary.asset.platform_software.platform_version |
Mappé directement à partir du champ authenticationDeviceOsVersion . |
authenticationDevicePhone |
intermediary.asset.attribute.labels[authentication_device_phone].value |
Mappé directement à partir du champ authenticationDevicePhone . |
authenticationDevicePhoneModel |
intermediary.asset.attribute.labels[authentication_device_phone_model].value |
Mappé directement à partir du champ authenticationDevicePhoneModel . |
authenticationDeviceRegistrationTime |
intermediary.asset.attribute.labels[authentication_device_registeration_time].value |
Mappé directement à partir du champ authenticationDeviceRegistrationTime . |
authenticationDeviceType |
intermediary.asset.attribute.labels[authentication_device_type].value |
Mappé directement à partir du champ authenticationDeviceType . |
authenticationResult |
extensions.auth.auth_details |
Mappé directement à partir du champ authenticationResult . |
context.deviceMake |
principal.asset.hardware.manufacturer |
Mappé directement à partir du champ context.deviceMake . |
context.ip |
principal.ip |
Mappé directement à partir du champ context.ip . |
context.location.countryName |
principal.location.country_or_region |
Mappé directement à partir du champ context.location.countryName . |
context.location.ip |
principal.ip |
Mappé directement à partir du champ context.location.ip . |
context.osVersion |
principal.asset.platform_software.platform_version |
Mappé directement à partir du champ context.osVersion . |
context.userAgentRaw |
network.http.user_agent |
Mappé directement à partir du champ context.userAgentRaw . |
exploiterDeviceContext.deviceMake |
src.asset.hardware.manufacturer |
Mappé directement à partir du champ exploiterDeviceContext.deviceMake . |
exploiterDeviceContext.ip |
src.ip |
Mappé directement à partir du champ exploiterDeviceContext.ip . |
exploiterDeviceContext.location.city |
src.asset.location.city |
Mappé directement à partir du champ exploiterDeviceContext.location.city . |
exploiterDeviceContext.location.coordinates.latitude |
src.asset.location.region_latitude |
Mappé directement à partir du champ exploiterDeviceContext.location.coordinates.latitude . |
exploiterDeviceContext.location.coordinates.longitude |
src.asset.location.region_longitude |
Mappé directement à partir du champ exploiterDeviceContext.location.coordinates.longitude . |
exploiterDeviceContext.location.countryName |
src.asset.location.country_or_region |
Mappé directement à partir du champ exploiterDeviceContext.location.countryName . |
exploiterDeviceContext.location.ip |
src.ip |
Mappé directement à partir du champ exploiterDeviceContext.location.ip . |
exploiterDeviceContext.osName |
src.asset.platform_software.platform |
Mappé à partir du champ exploiterDeviceContext.osName . Si la valeur est "WIN" ou "Windows", elle est mappée sur "WINDOWS". Si la valeur est "iOS", elle est mappée sur "IOS". Si la valeur est "Android", elle est mappée sur "ANDROID". |
exploiterDeviceContext.osVersion |
src.asset.platform_software.platform_version |
Mappé directement à partir du champ exploiterDeviceContext.osVersion . |
exploiterDeviceName |
src.asset.attribute.labels[exploiter_device_name].value |
Mappé directement à partir du champ exploiterDeviceName . |
hostname |
principal.hostname |
Mappé directement à partir du champ hostname . |
ipAddress |
principal.ip |
Mappé directement à partir du champ ipAddress . |
location |
principal.location.city |
Mappé directement à partir du champ location . |
location.city |
about.location.city |
Mappé directement à partir du champ location.city . |
location.coordinates.latitude |
about.location.region_latitude |
Mappé directement à partir du champ location.coordinates.latitude . |
location.coordinates.longitude |
about.location.region_longitude |
Mappé directement à partir du champ location.coordinates.longitude . |
location.countryName |
about.location.country_or_region |
Mappé directement à partir du champ location.countryName . |
location.ip |
about.ip |
Mappé directement à partir du champ location.ip . |
metadata.collected_timestamp |
metadata.collected_timestamp |
Mappé directement à partir du champ collected_time . |
metadata.event_timestamp |
metadata.event_timestamp |
Mappé directement à partir du champ event_time . |
metadata.event_type |
metadata.event_type |
Défini sur "USER_UNCATEGORIZED". |
metadata.product_event_type |
metadata.product_event_type |
Mappé directement à partir du champ actionName . |
metadata.product_name |
metadata.product_name |
Défini sur "VERIDIUM_ID". |
namespace |
principal.namespace |
Mappé directement à partir du champ namespace . |
pid |
principal.process.pid |
Mappé directement à partir du champ pid . |
request.context.userAgentRaw |
network.http.user_agent |
Mappé directement à partir du champ request.context.userAgentRaw . |
request.sessionId |
network.session_id |
Mappé directement à partir du champ request.sessionId . |
requestMethod |
network.http.method |
Mappé directement à partir du champ requestMethod . |
requestURI |
network.http.referral_url |
Mappé directement à partir du champ requestURI . |
security_result.severity |
security_result.severity |
Mappé à partir du champ severity . Si la valeur est "INFO", elle est mappée sur "INFORMATIONAL". |
principal.application |
Mappé directement à partir du champ application . |
|
principal.asset.hostname |
Mappé directement à partir du champ hostname . |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.