Collecter les journaux CA ACF2
Version de l'analyseur : 2.0
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 for 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 du pare-feu sont ouverts conformément aux exigences de l'agent BindPlane.
- BMC AMI Defender for z/OS installé et en cours d'exécution 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 les 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.
Option 1 : Créer un compte de service pour l'API Chronicle (recommandé)
- Connectez-vous à la consoleGoogle Cloud et sélectionnez le projet Google Cloud associé à votre instance Google SecOps.
- Accédez à IAM et administration > Comptes de service.
- Cliquez sur Créer un compte de service.
- 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).
- Nom du compte de service : saisissez un nom pour le compte (par exemple,
- Cliquez sur Créer et continuer.
- Dans la section Autoriser ce compte de service à accéder au projet, cliquez sur Sélectionner un rôle, puis sélectionnez Éditeur Chronicle.
- Cliquez sur Continue (Continuer), puis sur Done (OK).
- Cliquez sur le compte de service que vous avez créé, puis accédez à l'onglet Clés.
- Cliquez sur Ajouter une clé > Créer une clé.
- Sélectionnez JSON, puis cliquez sur Créer. Le fichier de clé est téléchargé sur votre ordinateur.
- Enregistrez le fichier de clé sous le nom
ingestion-auth.jsondans le répertoire du collecteur BindPlane (/opt/observiq-otel-collector/ingestion-auth.jsonsous Linux ouC:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.jsonsous Windows), ou mettez à jourcreds_file_pathdansconfig.yamlpour qu'il corresponde au chemin d'accès où vous l'enregistrez. - 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 (ancien)
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres 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 l'agent Bindplane sera installé.
Obtenir l'ID client Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres du SIEM > Profil.
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
- Ouvrez l'invite de commande 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" /quietAttendez la fin de l'installation.
Vérifiez l'installation en exécutant la commande suivante :
sc query observiq-otel-collectorLe service doit s'afficher comme étant EN COURS D'EXÉCUTION.
Installation de Linux
- Ouvrez un terminal avec des droits d'accès racine 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.shAttendez la fin de l'installation.
Vérifiez l'installation en exécutant la commande suivante :
sudo systemctl status observiq-otel-collectorLe service doit être indiqué comme actif (en cours d'exécution).
Autres ressources d'installation
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.yamlWindows :
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Modifiez le fichier de configuration
Remplacez l'intégralité du contenu de
config.yamlpar 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_logsRemplacez les espaces réservés suivants :
Configuration du récepteur :
listen_address: définissez la valeur sur0.0.0.0:514pour écouter sur toutes les interfaces sur le port UDP 514.- Pour les systèmes Linux exécutés en tant que non-root, utilisez le port
1514ou un port supérieur. - Faites correspondre ce port à la configuration de l'instruction BMC AMI Defender SERVER.
- Pour les systèmes Linux exécutés en tant que non-root, utilisez le port
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
- Linux :
customer_id: remplacezYOUR_CUSTOMER_IDpar votrecustomer 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,europeouasia-southeast1). L'exportateur préfixechronicle.googleapis.comavec cette valeur. 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 surchronicle.googleapis.com.log_type: définissez cette option surCA_ACF2(étiquette d'ingestion Chronicle pour les journaux ACF2).ingestion_labels: libellés facultatifs 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
exporterspar ce qui suit. Définissezcreds_file_pathsur le chemin d'accès au fichier d'authentification d'ingestion. Si votre instance se trouve en dehors des États-Unis, remplacezmalachiteingestion-pa.googleapis.compar 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 surEnter, puis surCtrl+X. - Windows : cliquez sur Fichier > Enregistrer.
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 observiq-otel-collectorVérifiez que le service est en cours d'exécution :
sudo systemctl status observiq-otel-collectorRecherchez les erreurs dans les journaux :
sudo journalctl -u observiq-otel-collector -f
Pour redémarrer l'agent BindPlane sous Windows :
Choisissez l'une des options suivantes :
Invite de commande ou PowerShell en tant qu'administrateur :
net stop observiq-otel-collector && net start observiq-otel-collectorConsole Services :
- Appuyez sur
Win+R, saisissezservices.msc, puis appuyez sur Entrée. - Recherchez observIQ OpenTelemetry Collector.
- Effectuez un clic droit, puis sélectionnez Redémarrer.
- Appuyez sur
Vérifiez que le service est en cours d'exécution :
sc query observiq-otel-collectorRecherchez les erreurs dans les journaux :
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
- Sign in to the z/OS system using TSO/ISPF or a 3270 emulator.
- Navigate to the BMC AMI Defender parameter library:
- Enter
ISPFat the TSO READY prompt. - Select option 2 (Edit).
- In the ISPF Library field, enter the data set name:
amihlq.CZAGENT.PARM(replaceamihlqwith your installation high-level qualifier). - Press Enter.
- Enter
- Edit the $$$SERVR :
- Saisissez
Eà côté du membre du paramètre $$$SERVR member. - Press Enter.
- Saisissez
- Locate the SERVER statement section (approximately line 40-60).
- Uncomment one of the SERVER statements by removing the leading semicolon (
;). Configure the SERVER statement with the Bindplane agent IP address and port:
SERVER bindplane-host-ip:514 TRANS(UDP) MAXMSG(2000)- Replace
bindplane-host-ipwith 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).
- Replace
Verify the OPTIONS statement for syslog format:
- Scroll up to locate the OPTIONS statements (approximately line 10-30).
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)
Save the changes:
- Press F3 to exit the editor.
- Type
SAVEwhen prompted. - Press Enter.
Edit the $$$CONFG pour activer la collecte d'enregistrements ACF2 SMF.
Dans la liste des membres de l'ensemble de données
amihlq.CZAGENT.PARM, modifiez le membre $$$CONFG member:- Type
Enext to the $$$CONFG. - Appuyez sur Entrée.
- Type
Localisez le commutateur de sélection d'enregistrement ACF2 SMF (recherchez
ACF2ouSMF 230).Décommentez l'instruction SELECT pour ACF2 :
SELECT IF(ACF2) SMF(ACF2)- Cela permet de collecter les enregistrements SMF ACF2 (type 230 par défaut).
- Si votre site utilise un autre type d'enregistrement SMF pour ACF2, vérifiez le type avec la commande
ACF SHOW SYSTEMSdans TSO.
Enregistrez les modifications :
- Appuyez sur F3 pour quitter l'éditeur.
- Saisissez
SAVElorsque vous y êtes invité. - Appuyez sur Entrée.
- Dans la liste des membres de l'ensemble de données
amihlq.CZAGENT.PARM, vérifiez si un membre nommé $$$ACF2 or SMFACF2 exists. If the member does not exist, create it:
- Type
C(Create) on the command line. - Enter the member name:
$$$ACF2.
- Type
Créer ou modifier le membre du paramètre de l'instruction SMF ACF2
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 avecACF SHOW SYSTEMS).FACILITY(SECURITY4): définit la fonctionnalité syslog sur "Security" (4).SEVERITY(INFORMATIONAL): définit le niveau de gravité par défaut sur "Informationnel".- Les violations de mot de passe ou d'autorité non valides sont automatiquement envoyées avec le niveau de gravité ERROR.
- Les cas de non-respect des ressources sont automatiquement envoyés avec le niveau de gravité ERREUR.
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 (niveau d'erreur)
- Sous-type D : violations d'accès à l'ensemble de données (gravité ERROR)
Enregistrez les modifications :
- Appuyez sur F3 pour quitter l'éditeur.
- Saisissez
SAVElorsque vous y êtes invité. - Appuyez sur Entrée.
Actualiser le fichier de paramètres BMC AMI Defender
- Quittez ISPF et revenez à l'invite TSO READY.
Exécutez la commande MODIFY pour actualiser le fichier de paramètres :
F CZAGENT,PARMS- Remplacez
CZAGENTpar 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.
- Remplacez
Vérifiez la configuration en consultant la sortie CZAPRINT :
- Dans ISPF, sélectionnez l'option 3.4 (DSLIST).
- Saisissez le modèle de nom de l'ensemble de données :
CZAGENT.CZAPRINT(ou votre convention de dénomination spécifique au site). - Appuyez sur Entrée.
- Saisissez
B(Parcourir) à côté de l'ensemble de données CZAPRINT le plus récent. - Appuyez sur Entrée.
Recherchez les messages indiquant que la connexion au serveur syslog a réussi :
CZA0070I Connected to server bindplane-host-ip:514CZA0100I SMF ACF2 statement processed
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
Générez des événements de sécurité ACF2 de test :
- Dans TSO, essayez d'accéder à un ensemble de données auquel vous n'êtes pas autorisé à accéder.
- Essayez de vous connecter avec un mot de passe non valide (utilisez un compte de test).
- Exécutez une commande TSO enregistrée par ACF2.
Consultez les journaux de l'agent Bindplane pour vérifier la réception des messages syslog ACF2 :
Linux :
sudo journalctl -u observiq-otel-collector -f | grep ACF2Windows :
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log" | findstr ACF2
Connectez-vous à la console Google SecOps et vérifiez que les journaux ACF2 sont bien ingérés :
- Accédez à Recherche > Recherche UDM.
Saisissez la requête suivante :
metadata.log_type = "CA_ACF2"Vérifiez que les événements liés à la sécurité ACF2 apparaissent dans les résultats de recherche.
Table de mappage UDM
| Champ de 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.