Collecter les journaux d'accès IBM Security Verify

Compatible avec:

Ce document explique comment collecter les journaux IBM Security Verify Access. L'analyseur extrait des champs courants tels que les codes temporels, les noms d'hôte et les descriptions à l'aide de modèles Grok. Il utilise ensuite l'analyse XML pour obtenir des informations détaillées sur l'événement intégrées dans le champ de description, puis mappe les données extraites sur le modèle de données unifié (UDM) pour représenter les événements de sécurité de manière standardisée.

Avant de commencer

  • Assurez-vous de disposer d'une instance Google Security Operations.
  • Assurez-vous d'utiliser Windows 2016 ou une version ultérieure, ou un hôte Linux avec systemd.
  • Si vous exécutez l'application derrière un proxy, assurez-vous que les ports du pare-feu sont ouverts.
  • Assurez-vous de disposer d'un accès administrateur à IBM Security Verify Access (ISVA).

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 le numéro client Google SecOps

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres du SIEM > Profil.
  3. Copiez et sauvegardez l'ID client dans la section Détails de l'organisation.

Installer l'agent BindPlane

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
    

Installation de Linux

  1. Ouvrez un terminal avec des 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
    

Autres ressources 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 (nano, vi ou Bloc-notes, par exemple).
  2. Modifiez le fichier config.yaml comme suit :

    receivers:
        udplog:
            # Replace the below port <54525> and IP <0.0.0.0> with your specific values
            listen_address: "0.0.0.0:54525" 
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the creds location below according the placement of the credentials file you downloaded
            creds: '{ json file for creds }'
            # Replace <customer_id> below with your actual ID that you copied
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # You can apply ingestion labels below as preferred
            ingestion_labels:
            log_type: SYSLOG
            namespace: ibm_security_verify
            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 dans votre infrastructure si nécessaire.

  4. Remplacez <customer_id> par le numéro client réel.

  5. Remplacez /path/to/ingestion-authentication-file.json par le chemin d'accès où le fichier d'authentification a été enregistré dans la section Obtenir le fichier d'authentification d'ingestion Google SecOps.

Redémarrez l'agent BindPlane pour appliquer les modifications

  • Sous Linux, pour redémarrer l'agent BindPlane, exécutez la commande suivante:

    sudo systemctl restart bindplane-agent
    
  • Sous Windows, pour redémarrer l'agent BindPlane, vous pouvez utiliser la console Services ou saisir la commande suivante:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Personnaliser le format du journal

  1. Pour modifier le fichier de configuration WebSEAL, utilisez l'interface de gestion locale (LMI) de l'appliance.
  2. Dans la LMI, accédez à Gestion du proxy inverse.
  3. Cliquez sur Manage > Configuration > Edit configuration file (Gérer > Configuration > Modifier le fichier de configuration) (vous pouvez utiliser l'éditeur pour modifier directement le fichier de configuration WebSEAL).
  4. Accédez à logging[stanza], recherchez syntax requests = {yes|no}, puis cliquez sur Oui.
  5. Accédez au paramètre gmt-time et modifiez-le comme suit: gmt-time = yes.
  6. Remplacez le paramètre request-log-format par le suivant:

    request-log-format = ibmsva: %h %l "%u" %t "%r" %s %b %T %j %{X-Forwarded-For}i %a %A %H %p %m %U %v %d %q
    
  7. Vous trouverez ci-dessous une explication de chaque directive:

    • ibmsva: Identifie les journaux de l'appareil SVA
    • %h: hôte distant
    • %l: nom de journal distant
    • %u: utilisateur distant
    • %t: heure et date au format CLF
    • %r: première ligne de la requête
    • %s: état de la réponse
    • %b: octets de la réponse (en-têtes HTTP exclus)
    • %T: temps d'exécution de la requête (en secondes)
    • %j: nom de la jonction
    • %X-Forwarded-For: adresse IP de transfert
    • %a: adresse IP distante
    • %A: adresse IP locale
    • %H: protocole de requête
    • %p: port
    • %m: méthode de requête (GET, POST, HEAD)
    • %U: URL demandée
    • %v: nom du serveur
    • %d: identifiant de la transaction
    • %q: chaîne de requête

Configurer le transfert Syslog dans ISVA

  1. Connectez-vous à l'interface de gestion locale ISVA.
  2. Accédez à Surveillance > Journaux > Transfert Syslog à distance.
  3. Cliquez sur Ajouter.
  4. Spécifiez les détails du serveur syslog distant.
    • Serveur: adresse IP ou nom d'hôte du serveur syslog (Bindplane).
    • Port: port sur lequel le serveur syslog écoute les requêtes (Bindplane).
    • Protocole: sélectionnez UDP ou TCP (selon votre configuration syslog/Bindplane).
    • Format: sélectionnez Syslog.
  5. Cliquez sur Enregistrer.

Configurer les sources de journaux pour un serveur de journaux distant

  1. Sélectionnez le serveur syslog distant auquel envoyer les journaux.
  2. Cliquez sur Sources.
  3. Cliquez sur Ajouter.
  4. Indiquez les détails de la source de journaux, puis cliquez sur OK.

    • Nom: sélectionnez WebSEAL.
    • Nom de l'instance: sélectionnez l'instance WebSEAL.
    • Fichier journal: nom du fichier journal source.
    • Facultatif: Tag (Libellé) : libellé à ajouter aux entrées de journal envoyées.
    • Établissement: tous les messages seront envoyés avec le code d'établissement spécifié (liste des codes disponibles).
    • Severity (Gravité) : gravité des entrées de journal envoyées.
      • Tous les messages seront envoyés avec le niveau de gravité spécifié.
  5. Cliquez sur Enregistrer.

Tableau de mappage UDM

Champ de journal Mappage UDM Logique
action read_only_udm.security_result.action_details Extrait du champ XML "/event/originator/action" lorsque le champ "description" contient "event".
application read_only_udm.target.application Extrait à l'aide du modèle grok du champ "message".
auth_details read_only_udm.security_result.detection_fields.value Extrait du champ XML "/event/accessor/principal/@auth" lorsque le champ "description" contient "event". La clé est définie sur "Auth".
authntype read_only_udm.security_result.detection_fields.value Extrait du champ XML "/event/authntype" lorsque le champ "description" contient "event". La clé est définie sur "Authntype".
données read_only_udm.metadata.description Si le champ "data" n'est pas vide, sa valeur remplace la valeur existante de "read_only_udm.metadata.description".
description read_only_udm.metadata.description Extrait à l'aide du modèle grok du champ "message". Si le champ "description" contient "event", il est analysé au format XML pour extraire d'autres champs.
event_id read_only_udm.metadata.product_log_id Extrait du champ XML "/event/originator/event_id" lorsque le champ "description" contient "event".
nom d'hôte read_only_udm.principal.hostname, read_only_udm.principal.asset.hostname Extrait à l'aide du modèle grok du champ "message".
id read_only_udm.metadata.product_log_id Extrait à l'aide du modèle grok du champ "message".
emplacement read_only_udm.principal.location.name Extrait du champ XML "/event/originator/location" lorsque le champ "description" contient "event".
résultat read_only_udm.security_result.detection_fields.value Extrait du champ XML "/event/outcome" lorsque le champ "description" contient "event". La clé est définie sur "Résultat".
outcome_reason read_only_udm.security_result.summary Extrait du champ XML "/event/outcome/@reason" lorsque le champ "description" contient "event". Permet également de déterminer la valeur de "read_only_udm.security_result.action". Définissez-la sur "BLOCK" si "outcome_reason" contient "fail" (insensible à la casse), sinon sur "ALLOW".
outcome_status read_only_udm.security_result.detection_fields.value Extrait du champ XML "/event/outcome/@status" lorsque le champ "description" contient "event". La clé est définie sur "État du résultat".
originator_blade read_only_udm.security_result.detection_fields.value Extrait du champ XML "/event/originator/@blade" lorsque le champ "description" contient "event". La clé est définie sur "Originator Blade" (Lame de l'initiateur).
originator_component read_only_udm.security_result.detection_fields.value Extrait du champ XML "/event/originator/component" lorsque le champ "description" contient "event". La clé est définie sur "Composant d'origine".
originator_instance read_only_udm.security_result.detection_fields.value Extrait du champ XML "/event/originator/@instance" lorsque le champ "description" contient "event". La clé est définie sur "Instance d'origine".
session_id read_only_udm.network.session_id Extrait du champ XML "/event/accessor/session_id" lorsque le champ "description" contient "event".
target_url read_only_udm.target.url Extrait du champ XML "/event/target/url" lorsque le champ "description" contient "event".
thread_id read_only_udm.security_result.detection_fields.value Extrait à l'aide du modèle grok du champ "message". La clé est définie sur "Thread id" (ID de thread).
timestamp read_only_udm.metadata.event_timestamp Extrait à l'aide du modèle grok du champ "message". Formaté à l'aide du filtre "date" en fonction de la présence et du format du champ "fuseau horaire".
time_stamp read_only_udm.metadata.event_timestamp Extrait du champ XML "/event/date" lorsque le champ "description" contient "event". Formaté à l'aide du filtre "date".
timezone Utilisé avec le champ "timestamp" pour mettre en forme le champ "read_only_udm.metadata.event_timestamp" à l'aide du filtre "date".
url read_only_udm.target.url Extrait à l'aide du modèle grok du champ "message".
utilisateur read_only_udm.principal.user.userid Extrait du champ XML "/event/accessor/principal" lorsque le champ "description" contient "event".
user_location read_only_udm.principal.ip, read_only_udm.principal.asset.ip Extrait du champ XML "/event/accessor/user_location" lorsque le champ "description" contient "event". Si "user_location_type" contient "ip" (sans distinction entre majuscules et minuscules), il est analysé en tant qu'adresse IP et mappé à la fois sur "read_only_udm.principal.ip" et "read_only_udm.principal.asset.ip".
user_location_type Permet de déterminer si "user_location" doit être analysé en tant qu'adresse IP.
N/A read_only_udm.metadata.vendor_name Défini sur "IBM_SECURITY_VERIFY".
N/A read_only_udm.metadata.product_name Défini sur "IBM_SECURITY_VERIFY".
N/A read_only_udm.metadata.event_type Initialement défini sur "STATUS_UPDATE". Remplacer par "USER_LOGIN" si les champs "user" et "hostname" sont extraits.
N/A read_only_udm.extensions.auth.type Définissez ce paramètre sur "SSO" si les champs "user" et "hostname" sont extraits.
N/A read_only_udm.network.application_protocol Défini sur "HTTP" si le champ "message" contient "HttpServletRequest".
N/A read_only_udm.metadata.log_type Défini sur "IBM_SECURITY_VERIFY", extrait des métadonnées du journal.

Modifications

2024-05-13

  • L'analyseur a été mis à jour pour prendre en charge les journaux au format XML.

2023-01-25

  • Analyseur nouvellement créé.