Collecter les journaux IBM Security Access Manager

Compatible avec :

Ce document explique comment ingérer des journaux IBM Security Access Manager dans Google Security Operations à l'aide de Bindplane.

IBM Verify Identity Access (anciennement IBM Security Access Manager / IBM Security Verify Access) est une solution de sécurité basée sur un dispositif réseau qui fournit des services de gestion des accès, de sécurité Web et d'authentification. Il applique les règles de sécurité pour les ressources Web à l'aide d'une architecture de proxy inverse (WebSEAL) et génère des journaux d'audit, d'authentification, d'autorisation et système essentiels pour la surveillance de la sécurité.

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

  • Une instance Google SecOps
  • Windows Server 2016 ou version ultérieure, ou hôte Linux avec systemd
  • Connectivité réseau entre l'agent BindPlane et l'appareil IBM Verify Identity Access
  • Si vous exécutez l'outil derrière un proxy, assurez-vous que les ports du pare-feu sont ouverts.
  • Accès privilégié à l'interface de gestion locale (LMI) IBM Verify Identity Access

Obtenir des identifiants Google SecOps pour l'agent BindPlane

Pour authentifier l'agent Bindplane auprès de Google SecOps, choisissez l'une des méthodes suivantes :

  • Nouveaux déploiements : utilisez l'API Chronicle (option 1).
  • Déploiements existants : continuez à utiliser le fichier d'authentification pour l'ingestion (option 2) jusqu'à l'arrêt de l'API Ingestion le 20 juillet 2027.
  1. Connectez-vous à la consoleGoogle Cloud et sélectionnez le projet Google Cloud associé à votre instance Google SecOps.
  2. Accédez à IAM et administration > Comptes de service.
  3. Cliquez sur Créer un compte de service.
  4. Fournissez les informations de configuration suivantes :
    • Nom du compte de service : saisissez un nom pour le compte (par exemple, bindplane-ingest).
    • Description du compte de service : saisissez une description (par exemple, Bindplane agent log ingestion).
  5. Cliquez sur Créer et continuer.
  6. Dans la section Autoriser ce compte de service à accéder au projet, cliquez sur Sélectionner un rôle, puis sélectionnez Éditeur Chronicle.
  7. Cliquez sur Continue (Continuer), puis sur Done (OK).
  8. Cliquez sur le compte de service que vous avez créé, puis accédez à l'onglet Clés.
  9. Cliquez sur Ajouter une clé > Créer une clé.
  10. Sélectionnez JSON, puis cliquez sur Créer. Le fichier de clé est téléchargé sur votre ordinateur.
  11. Enregistrez le fichier de clé sous le nom ingestion-auth.json dans le répertoire du collecteur Bindplane (/opt/observiq-otel-collector/ingestion-auth.json sous Linux ou C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json sous Windows), ou mettez à jour creds_file_path dans config.yaml pour qu'il corresponde au chemin d'accès où vous l'enregistrez.
  12. Accédez à IAM et administration > Paramètres, puis copiez le numéro du projet. Vous en aurez besoin pour la configuration de l'exportateur.

Option 2 : Télécharger le fichier d'authentification d'ingestion (ancienne méthode)

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres SIEM> Agents de collecte.
  3. Téléchargez le fichier d'authentification d'ingestion.
  4. Enregistrez le fichier de manière sécurisée sur le système où l'agent BindPlane sera installé.

Obtenir l'ID client Google SecOps

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres du SIEM > Profil.
  3. Copiez et enregistrez le numéro client dans 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 Windows

  1. Ouvrez l'invite de commande 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
    
  3. Attendez que l'installation se termine.

  4. Vérifiez l'installation en exécutant la commande suivante :

    sc query observiq-otel-collector
    

    Le service doit s'afficher comme étant EN COURS D'EXÉCUTION.

Installation sous Linux

  1. Ouvrez un terminal avec des privilèges 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
    
  3. Attendez que l'installation se termine.

  4. Vérifiez l'installation en exécutant la commande suivante :

    sudo systemctl status observiq-otel-collector
    

    Le service doit s'afficher comme actif (en cours d'exécution).

Ressources d'installation supplémentaires

Pour obtenir d'autres options d'installation et de dépannage, consultez le guide d'installation de l'agent Bindplane.

Configurer l'agent Bindplane pour ingérer les journaux syslog et les envoyer à Google SecOps

Localiser le fichier de configuration

  • Linux :

    sudo nano /opt/observiq-otel-collector/config.yaml
    
  • Windows :

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

Modifiez le fichier de configuration

  • Remplacez l'intégralité du contenu de config.yaml par la configuration suivante :

    receivers:
      udplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/chronicle_w_labels:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        customer_id: '<customer_id>'
        endpoint: chronicle.googleapis.com
        log_type: 'IBM_SAM'
        raw_log_field: body
        ingestion_labels:
    
    service:
      pipelines:
        logs/source0__chronicle_w_labels-0:
          receivers:
            - udplog
          exporters:
            - chronicle/chronicle_w_labels
    

Paramètres de configuration

Remplacez les espaces réservés suivants :

  • Configuration du récepteur :

    • listen_address : adresse IP et port sur lesquels l'agent Bindplane écoute les messages syslog entrants. Utilisez 0.0.0.0:514 pour écouter sur toutes les interfaces sur le port 514. Modifiez le port si 514 est déjà utilisé ou si vous préférez un port non privilégié tel que 1514.
    • Pour utiliser TCP au lieu d'UDP, remplacez udplog par tcplog dans les sections receivers et pipelines.
  • Configuration de l'exportateur :

    • creds_file_path : chemin d'accès complet au fichier de clé JSON du compte de service (option 1) :
      • Linux : /opt/observiq-otel-collector/ingestion-auth.json
      • Windows : C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • customer_id : ID client Google SecOps copié précédemment.
    • location : remplacez <LOCATION> par la région de votre instance Google SecOps (par exemple, us, europe ou asia-southeast1). L'exportateur ajoute cette valeur en préfixe à chronicle.googleapis.com. Pour obtenir la liste complète, consultez Points de terminaison régionaux.
    • project : remplacez <PROJECT_NUMBER> par le numéro de projet indiqué dans IAM et administration > Paramètres.
    • endpoint : laissez la valeur définie sur chronicle.googleapis.com.
    • log_type : doit être défini sur IBM_SAM.

Ancien exportateur d'API d'ingestion

  • Si vous utilisez le fichier d'authentification d'ingestion de l'option 2, remplacez le bloc exporters par ce qui suit. Définissez creds_file_path sur le chemin d'accès au fichier d'authentification de l'ingestion. Si votre instance se trouve en dehors des États-Unis, remplacez malachiteingestion-pa.googleapis.com par votre point de terminaison régional (par exemple, europe-malachiteingestion-pa.googleapis.com).

    exporters:
      chronicle/chronicle_w_labels:
        compression: gzip
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        customer_id: '<customer_id>'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: 'IBM_SAM'
        raw_log_field: body
        ingestion_labels:
    

Enregistrez le fichier de configuration.

Une fois les modifications effectuées, enregistrez le fichier :

  • Linux : appuyez sur Ctrl+O, puis sur Enter, puis sur Ctrl+X.
  • Windows : cliquez sur Fichier > Enregistrer.

Redémarrez l'agent Bindplane pour appliquer les modifications.

Pour redémarrer l'agent BindPlane sous Linux, procédez comme suit :

  1. Exécutez la commande suivante :

    sudo systemctl restart observiq-otel-collector
    
  2. Vérifiez que le service est en cours d'exécution :

    sudo systemctl status observiq-otel-collector
    
  3. Recherchez les erreurs dans les journaux :

    sudo journalctl -u observiq-otel-collector -f
    

Pour redémarrer l'agent BindPlane sous Windows, procédez comme suit :

  1. Choisissez l'une des options suivantes :

    • Invite de commande ou PowerShell en tant qu'administrateur :

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • Console Services :

      1. Appuyez sur Win+R, saisissez services.msc, puis appuyez sur Entrée.
      2. Recherchez observIQ OpenTelemetry Collector.
      3. Effectuez un clic droit et sélectionnez Redémarrer.
  2. Vérifiez que le service est en cours d'exécution :

    sc query observiq-otel-collector
    
  3. Recherchez les erreurs dans les journaux :

    type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
    

Configurer le transfert syslog dans IBM Verify Identity Access

Ajouter une définition de serveur syslog distant

  1. Connectez-vous à l'interface de gestion locale (LMI) d'IBM Verify Identity Access.
  2. Accédez à Monitor> Logs> Remote Syslog Forwarding (Surveiller > Journaux > Transfert Syslog à distance).
  3. Sur la page Transfert Syslog à distance, cliquez sur Ajouter.
  4. Fournissez les informations de configuration suivantes :
    • Serveur : saisissez l'adresse IP ou le nom d'hôte de l'hôte de l'agent Bindplane (par exemple, 192.168.1.100).
    • Port : saisissez le numéro de port sur lequel l'agent BindPlane écoute (par exemple, 514).
    • Protocole : sélectionnez UDP pour qu'il corresponde au récepteur udplog dans la configuration de l'agent BindPlane. Sélectionnez TCP si vous avez configuré l'agent BindPlane avec tcplog.
    • Format : sélectionnez le format du message syslog :
      • Protocole Syslog BSD : format RFC 3164 (recommandé pour une compatibilité maximale).
      • Protocole Syslog : format RFC 5424.
    • Déboguer : laissez cette option décochée, sauf si un dépannage est nécessaire. Lorsque cette option est activée, des informations de débogage supplémentaires sont écrites dans le fichier journal rsyslog_forwarder accessible depuis la page Afficher les fichiers journaux de l'application.
  5. Cliquez sur Enregistrer.

Configurer les sources de journaux pour le serveur syslog distant

  1. Sur la page Transfert Syslog distant, sélectionnez l'entrée de serveur Syslog distant que vous avez créée.
  2. Cliquez sur Sources.
  3. Cliquez sur Ajouter pour ajouter une source de journaux.
  4. Fournissez les informations de configuration suivantes :
    • Nom : sélectionnez une source du journal dans la liste déroulante. Voici les sources de journaux disponibles :
      • Messages LMI : messages de l'application LMI
      • LMI Trace : journaux de trace et de débogage LMI
      • LMI Access : journaux d'accès HTTP LMI
      • Messages d'exécution : messages de l'environnement d'exécution
      • Trace d'exécution : journaux de trace et de débogage d'exécution
      • Audit d'exécution : événements d'audit d'exécution (authentification, autorisation)
      • Journaux d'exécution : journaux d'application d'exécution
      • WebSEAL : journaux du proxy inverse Web (nécessite de sélectionner un nom d'instance et un fichier journal)
      • Serveur d'autorisation : journaux du serveur d'autorisation (nécessite de sélectionner un nom d'instance et un fichier journal)
      • Policy Server : journaux de serveur de règles (nécessite de sélectionner un fichier journal)
      • Registre d'utilisateurs intégré : journaux du registre d'utilisateurs LDAP intégré
      • Cluster : journaux de gestion du cluster
      • Système : journaux au niveau du système d'exploitation
      • DSC : journaux du cache de session distribué
      • FELB : journaux de l'équilibreur de charge de l'interface
    • Nom de l'instance : ce champ n'est disponible que lorsque WebSEAL ou Serveur d'autorisation est sélectionné dans le champ Nom. Sélectionnez le nom de l'instance dans la liste déroulante (par exemple, default).
    • Fichier journal : ce champ est disponible lorsque WebSEAL, Serveur d'autorisation, Serveur de règles ou Journaux d'exécution sont sélectionnés dans le champ Nom. Sélectionnez le fichier journal spécifique dans la liste déroulante.
    • Tag : saisissez un nom de tag unique pour cette source de journaux. La balise ne doit pas contenir d'espaces (par exemple, WebSEAL_Audit ou RuntimeAudit).
    • Fonctionnalité : sélectionnez une catégorie de fonctionnalité syslog pour les entrées de journal transférées (par exemple, local0, local1, auth ou user).
    • Gravité : sélectionnez Informations pour capturer toutes les entrées de journal.
  5. Cliquez sur OK.
  6. Pour ajouter d'autres sources de journaux, répétez les étapes 3 à 5 pour chaque source que vous souhaitez transférer.

  7. Cliquez sur Enregistrer pour appliquer la configuration de la source de journaux.

  8. Pour activer les modifications, accédez au haut de la page et cliquez sur Deploy Pending Changes (Déployer les modifications en attente). La configuration du transfert syslog n'est pas active tant qu'elle n'est pas déployée.

Table de mappage UDM

Champ du journal Mappage UDM Logique
sha256_value additional.fields Fusionné avec le mappage {key: "sha256_value", value: {string_value: sha256_value}} et le mappage {key: "connection_type", value: {string_value: connection_type}}
connection_type additional.fields
dvc_ip intermediary.hostname Valeur copiée directement si dvc_ip n'est pas une adresse IP valide
dvc_ip intermediary.ip Définissez sur dvc_ip s'il s'agit d'une adresse IP valide. Fusionnez les adresses IP supplémentaires valides de ip_address qui ne sont pas égales à src_ip ou dst_ip, qui ne sont pas vides et qui ne sont pas "-".
ip_address intermediary.ip
ts metadata.collected_timestamp Analysé à partir de ts2 s'il est présent au format aaaa-MM-jjTHH:mm:ss, sinon à partir de ts au format ISO8601, MMM jj HH:mm:ss, MMM j HH:mm:ss
ts2 metadata.collected_timestamp
description metadata.description Valeur copiée directement
code temporel metadata.event_timestamp Analyse à l'aide des formats de date jj/MMM/aaaa:HH:mm:ss Z ou aaaa-MM-jj-HH:mm:ss.SSSZZI
src_ip metadata.event_type Définissez sur "NETWORK_HTTP" si le principal (src_ip ou src_host), la cible (dst_ip ou target_hostname) et http (method ou response_code) sont présents, "NETWORK_CONNECTION" si le principal et la cible sont présents, "STATUS_UPDATE" si le principal est présent, sinon "GENERIC_EVENT".
src_host metadata.event_type
dst_ip metadata.event_type
target_hostname metadata.event_type
method metadata.event_type
response_code metadata.event_type
product_event_type metadata.product_event_type Valeur copiée directement
metadata.product_name metadata.product_name Défini sur "IBM_SAM"
metadata.vendor_name metadata.vendor_name Défini sur "IBM"
proto network.application_protocol Valeur copiée directement si elle est au format HTTP ou HTTPS
version network.application_protocol_version Valeur copiée directement
method network.http.method Valeur issue de method_value si elle n'est pas vide, sinon méthode
method_value network.http.method
response_code network.http.response_code Converti en entier
ip_protocol_value network.ip_protocol Valeur copiée directement si elle est au format TCP, UDP ou ICMP
rcv_bytes network.received_bytes Converti en uinteger
sent_bytes network.sent_bytes Converti en uinteger
request_id network.session_id Valeur copiée directement
src_application principal.application Valeur copiée directement
src_host principal.asset.hostname Valeur copiée directement
src_ip principal.asset.ip Valeur copiée directement si elle n'est pas vide, un espace, nulle, N/A ou -
file_name principal.file.full_path Valeur copiée directement
src_host principal.hostname Valeur copiée directement
src_ip principal.ip Valeur copiée directement si elle n'est pas vide, un espace, nulle, N/A ou -
src_port principal.port Converti en entier
pid principal.process.pid Valeur copiée directement
src_resource principal.resource.name Valeur copiée directement
user_name principal.user.userid Valeur copiée directement si elle n'est pas non authentifiée ou vide
description security_result.action Définissez sur "BLOCK" si la description contient "could not establish a secure connection", "could not be determined" ou "have expired".
de gravité, security_result.severity Valeur copiée directement, avec WARNING mappé sur MEDIUM
user_name security_result.summary Définir sur "unauthenticated" si user_name == "unauthenticated"
target_hostname target.asset.hostname Valeur copiée directement
dst_ip target.asset.ip La valeur est copiée directement si elle n'est pas vide, ni égale à un espace, à null, à N/A ou à "-".
target_hostname target.hostname Valeur copiée directement
dst_ip target.ip Valeur copiée directement si elle n'est pas vide, un espace, nulle, N/A ou -
url target.url Concaténation de "url" et "url1"
url1 target.url
ip_protocol_value event.idm.read_only_udm.network.ip_protocol Mappé à partir du journal des modifications
method_value event.idm.read_only_udm.network.http.method Mappé à partir du journal des modifications
sha256_value event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications

Journal des modifications

Afficher le journal des modifications de ce parseur

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