Collecter les journaux Veridium ID

Compatible avec :

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

  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

Installez l'agent Bindplane sur votre système d'exploitation Windows ou Linux en suivant les instructions ci-dessous.

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 :
    • 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).
  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
            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

  1. Connectez-vous à l'hôte Veridium ID à l'aide de SSH ou de la CLI.
  2. Modifiez le fichier /etc/rsyslog.conf ou /etc/rsyslog.d/events.conf à l'aide de VI.

    vi /etc/rsyslog.conf
    
  3. 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>
    
  4. 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.