Collecter les journaux CA ACF2

Version de l'analyseur : 2.0

Compatible avec :

Ce document explique comment ingérer des journaux CA ACF2 dans Google Security Operations à l'aide de l'agent BindPlane.

Broadcom ACF2 (Access Control Facility 2) pour z/OS est un produit de sécurité pour mainframe qui fournit un contrôle des accès, une authentification et un audit pour les systèmes IBM z/OS. ACF2 consigne les événements liés à la sécurité dans les enregistrements IBM System Management Facility (SMF) (type 230 par défaut), y compris les tentatives d'authentification, les violations d'accès aux ensembles de données, les événements d'accès aux ressources, la journalisation des commandes TSO et les modifications de base de données. Ces enregistrements SMF doivent être transférés à Chronicle à l'aide d'un agent tiers tel que BMC AMI Defender pour z/OS.

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'agent BMC AMI Defender pour z/OS
  • Si vous exécutez l'agent derrière un proxy, assurez-vous que les ports de pare-feu sont ouverts conformément aux exigences de l'agent BindPlane.
  • BMC AMI Defender pour z/OS installé et exécuté sur la LPAR z/OS où ACF2 est actif
  • Accès pour modifier les fichiers de paramètres BMC AMI Defender dans l'ensemble de données amihlq.CZAGENT.PARM
  • Autorisation de démarrer ou de modifier la tâche démarrée CZAGENT sur z/OS

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).
  • Anciens déploiements : continuez à utiliser le fichier d'authentification d'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 configurer l'exportateur.

Option 2 : Télécharger le fichier d'authentification d'ingestion (ancien)

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres > Gestion des données > Agents de collecte. Si vous utilisez une plate-forme SIEM uniquement, accédez à Paramètres > 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 le numéro client Google SecOps

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres > Administration > Profil. Si vous utilisez une plate-forme SIEM uniquement, accédez à Paramètres > Profil.
  3. Copiez et enregistrez le numéro client de la section Détails de 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 droits d'accès racine 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 des options d'installation et de dépannage supplémentaires, 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

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

    receivers:
      udplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/acf2_logs:
        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: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: 'YOUR_CUSTOMER_ID'
        endpoint: chronicle.googleapis.com
        log_type: CA_ACF2
        raw_log_field: body
        ingestion_labels:
          env: production
          source: acf2
    
    service:
      pipelines:
        logs/acf2_to_chronicle:
          receivers:
            - udplog
          exporters:
            - chronicle/acf2_logs
    
  2. Remplacez les espaces réservés suivants :

    • Configuration du récepteur :

      • listen_address : définissez cette option sur 0.0.0.0:514 pour écouter toutes les interfaces sur le port UDP 514.

        • Pour les systèmes Linux exécutés en tant qu'utilisateur non racine, utilisez le port 1514 ou un port supérieur.
        • Faites correspondre ce port avec la configuration de l'instruction SERVER de BMC AMI Defender.
    • 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 : remplacez YOUR_CUSTOMER_ID par votre customer ID. Pour en savoir plus, consultez Obtenir l'ID client Google SecOps.

      • 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 : définissez cette option sur CA_ACF2 (étiquette d'ingestion Chronicle pour les journaux ACF2).

      • ingestion_labels : étiquettes facultatives pour catégoriser les journaux (à personnaliser selon vos besoins)

Ancien exportateur d'API d'ingestion

  • Si vous utilisez le fichier d'authentification d'ingestion de l'option 2, remplacez le bloc exporters par le code suivant. Définissez creds_file_path sur le chemin d'accès au fichier d'authentification d'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/acf2_logs:
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: 'YOUR_CUSTOMER_ID'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: CA_ACF2
        raw_log_field: body
        ingestion_labels:
          env: production
          source: acf2
    

Enregistrez le fichier de configuration.

Après avoir modifié le fichier, enregistrez-le :

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

    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. Vérifiez les journaux pour détecter d'éventuelles erreurs :

      sudo journalctl -u observiq-otel-collector -f
      
  • Pour redémarrer l'agent BindPlane sous Windows :

    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. Vérifiez les journaux pour détecter d'éventuelles erreurs :

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

Configurer BMC AMI Defender pour z/OS afin de transférer les enregistrements SMF ACF2

Modifiez le membre $$$SERVR parameter member

  1. Sign in to the z/OS system using TSO/ISPF or a 3270 emulator.
  2. Navigate to the BMC AMI Defender parameter library:
    1. Enter ISPF at the TSO READY prompt.
    2. Select option 2 (Edit).
    3. In the ISPF Library field, enter the data set name: amihlq.CZAGENT.PARM (replace amihlq with your installation high-level qualifier).
    4. Press Enter.
  3. Edit the $$$SERVR :
    1. Saisissez E à côté du membre du paramètre $$$SERVR member.
    2. Press Enter.
  4. Locate the SERVER statement section (approximately line 40-60).
  5. Uncomment one of the SERVER statements by removing the leading semicolon (;).
  6. Configure the SERVER statement with the Bindplane agent IP address and port:

    SERVER bindplane-host-ip:514 TRANS(UDP) MAXMSG(2000)
    
    • Replace bindplane-host-ip with the IP address of the Bindplane agent host (for example, 192.168.1.100).
    • If using a non-standard port (for example, 1514), specify: bindplane-host-ip:1514.
    • TRANS(UDP) specifies UDP transport protocol (recommended for syslog).
    • MAXMSG(2000) sets the maximum message length to 2000 bytes (ACF2 records may require larger sizes).
  7. Verify the OPTIONS statement for syslog format:

    1. Scroll up to locate the OPTIONS statements (approximately line 10-30).
    2. Ensure one of the following OPTIONS statements is uncommented based on your preferred format:

      OPTIONS IF(RFC 3164) SIEM(RFC 3164) TIMESTAMP INSTNAME(SIEM.Agent)
      
      • RFC 3164: Standard syslog format (recommended for Chronicle)
      • CEF: Common Event Format (alternative)
      • LEEF: Log Event Extended Format (alternative)
      • JSON: JSON format (alternative)
  8. Save the changes:

    1. Press F3 to exit the editor.
    2. Type SAVE when prompted.
    3. Press Enter.

Edit the $$$CONFG pour activer la collecte des enregistrements SMF ACF2.

  1. Dans la liste des membres de l'ensemble de données amihlq.CZAGENT.PARM, modifiez le membre $$$CONFG member:

    1. Type E next to the $$$CONFG.

    2. Appuyez sur Entrée.
  2. Localisez le commutateur de sélection d'enregistrement ACF2 SMF (recherchez ACF2 ou SMF 230).

  3. Supprimez les commentaires de l'instruction SELECT pour ACF2 :

    SELECT IF(ACF2) SMF(ACF2)
    
    • Cela permet de collecter les enregistrements ACF2 SMF (type 230 par défaut).
    • Si votre site utilise un autre type d'enregistrement SMF pour ACF2, vérifiez le type à l'aide de la commande ACF SHOW SYSTEMS dans TSO.
  4. Enregistrez les modifications :

    1. Appuyez sur F3 pour quitter l'éditeur.
    2. Saisissez SAVE lorsque vous y êtes invité.
    3. Appuyez sur Entrée.
  5. Créer ou modifier le membre du paramètre d'instruction SMF ACF2

    1. Dans la liste des membres de l'ensemble de données amihlq.CZAGENT.PARM, vérifiez si un membre nommé $$$ACF2 or SMFACF2 exists.
    2. If the member does not exist, create it:

      1. Type C (Create) on the command line.
      2. Enter the member name: $$$ACF2.
      3. Appuyez sur Entrée.
    3. Modifiez le membre et ajoutez l'instruction SMF ACF2 suivante :

      SMF ACF2(230) FACILITY(SECURITY4) SEVERITY(INFORMATIONAL)
      
      • ACF2(230) : spécifie le type d'enregistrement SMF pour ACF2 (la valeur par défaut est 230 ; vérifiez avec ACF SHOW SYSTEMS).
      • FACILITY(SECURITY4) : définit la fonctionnalité syslog sur "Sécurité" (4).
      • SEVERITY(INFORMATIONAL) : définit la gravité par défaut sur "Informations".

        • Les violations de mot de passe ou d'autorité non valides sont automatiquement envoyées avec le niveau de gravité ERREUR.
        • Les cas de non-respect des ressources sont automatiquement envoyés avec le niveau de gravité ERREUR.
    4. Vous pouvez également configurer des sous-types et des niveaux de gravité ACF2 spécifiques :

      SMF ACF2(230) +
        FACILITY(SECURITY4) +
        SEVERITY(INFORMATIONAL) +
        SUBTYPES(P SEV(ERROR)) +
        SUBTYPES(V SEV(ERROR)) +
        SUBTYPES(D SEV(ERROR))
      
      • Sous-type P : événements de mot de passe ou d'autorité non valides (gravité ERREUR)
      • Sous-type V : non-conformité des ressources (gravité ERROR)
      • Sous-type D : violations d'accès à l'ensemble de données (gravité ERREUR)
    5. Enregistrez les modifications :

      1. Appuyez sur F3 pour quitter l'éditeur.
      2. Saisissez SAVE lorsque vous y êtes invité.
      3. Appuyez sur Entrée.
    6. Actualiser le fichier de paramètres BMC AMI Defender

      1. Quittez ISPF et revenez à l'invite TSO READY.
      2. Exécutez la commande MODIFY pour actualiser le fichier de paramètres :

        F CZAGENT,PARMS
        
        • Remplacez CZAGENT par le nom de votre tâche démarrée BMC AMI Defender s'il est différent.
        • Cette commande recharge le fichier de paramètres sans arrêter l'agent.
      3. Vérifiez la configuration en consultant la sortie CZAPRINT :

        1. Dans ISPF, sélectionnez l'option 3.4 (DSLIST).
        2. Saisissez le modèle de nom de l'ensemble de données : CZAGENT.CZAPRINT (ou la convention d'attribution de noms spécifique à votre site).
        3. Appuyez sur Entrée.
        4. Saisissez B (Parcourir) à côté de l'ensemble de données CZAPRINT le plus récent.
        5. Appuyez sur Entrée.
        6. Recherchez les messages indiquant que la connexion au serveur syslog a réussi :

          • CZA0070I Connected to server bindplane-host-ip:514
          • CZA0100I SMF ACF2 statement processed
      4. Si la tâche démarrée CZAGENT n'est pas en cours d'exécution, démarrez-la :

        S CZAGENT
        

      Vérifier le transfert des journaux ACF2

      1. Générez des événements de sécurité ACF2 de test :

        1. Dans TSO, essayez d'accéder à un ensemble de données auquel vous n'êtes pas autorisé à accéder.
        2. Tentez de vous connecter avec un mot de passe non valide (utilisez un compte de test).
        3. Exécutez une commande TSO enregistrée par ACF2.
      2. Vérifiez les journaux de l'agent Bindplane pour vous assurer que les messages syslog ACF2 ont bien été reçus :

        • Linux :

          sudo journalctl -u observiq-otel-collector -f | grep ACF2
          
        • Windows :

          type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log" | findstr ACF2
          
      3. Connectez-vous à la console Google SecOps et vérifiez que les journaux ACF2 sont ingérés :

        1. Accédez à Recherche > Recherche UDM.
        2. Saisissez la requête suivante :

          metadata.log_type = "CA_ACF2"
          
        3. Vérifiez que les événements liés à la sécurité ACF2 apparaissent dans les résultats de recherche.

      Table de mappage UDM

      Champ du journal Mappage UDM Logique
      extensions.auth.mechanism Mécanisme d'authentification utilisé.
      extensions.auth.type Type d'authentification.
      somme metadata.description Description de l'événement.
      metadata.event_type Type d'événement.
      event_type, cat metadata.product_event_type Type d'événement spécifique au produit.
      product_version metadata.product_version Version du produit.
      terminal principal.hostname Nom d'hôte associé au compte principal.
      nom principal.user.user_display_name Nom à afficher de l'utilisateur.
      usrName principal.user.userid ID utilisateur.
      security_result.action Action effectuée par le système de sécurité.
      security_result.category Catégorie du résultat de sécurité.
      classe security_result.category_details Informations supplémentaires sur la catégorie de résultat de sécurité.
      reason security_result.severity Niveau de gravité du résultat de sécurité.
      reason security_result.severity_details Informations détaillées sur la gravité.
      logstr security_result.summary Résumé du résultat de sécurité.
      job_id target.application l'application ciblée ;
      job_group target.group.group_display_name Nom à afficher du groupe.
      target.namespace Espace de noms de la cible.
      dsn target.resource.name Nom de la ressource.
      vol target.resource.parent Ressource parente.
      res, dsn target.resource.product_object_id Identifiant d'objet spécifique au produit.
      target.resource.resource_type Type de ressource.
      nom target.user.user_display_name Nom à afficher de l'utilisateur cible.
      usrName target.user.userid ID utilisateur de l'utilisateur cible.
      product_name metadata.product_name Nom du produit qui génère l'événement.
      vendor_name metadata.vendor_name Nom du fournisseur.

      Journal des modifications

      Afficher le journal des modifications de cet analyseur

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