Collecter les journaux CA ACF2
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 de 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 la 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 for 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 for z/OS installé et en cours d'exécution sur la LPAR z/OS où ACF2 est actif
- Accès permettant de 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 le fichier d'authentification d'ingestion Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres du 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 Bindplane doit être installé.
Obtenir l'ID client Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres SIEM> Profil.
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
- Ouvrez l'invite de commandes 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 être indiqué comme RUNNING (EN COURS D'EXÉCUTION).
Installation de Linux
- Ouvrez un terminal avec les droits root 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 /etc/bindplane-agent/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: compression: gzip creds_file_path: '/etc/bindplane-agent/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 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 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 d'authentification de l'ingestion :- Linux :
/etc/bindplane-agent/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.endpoint: URL du point de terminaison régional :- États-Unis :
malachiteingestion-pa.googleapis.com - Europe :
europe-malachiteingestion-pa.googleapis.com - Asie :
asia-southeast1-malachiteingestion-pa.googleapis.com - Pour obtenir la liste complète, consultez Points de terminaison régionaux.
- États-Unis :
log_type: défini surCA_ACF2(libellé d'ingestion Chronicle pour les journaux ACF2)ingestion_labels: libellés facultatifs pour catégoriser les journaux (personnalisez-les selon vos besoins)
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 commandes 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. - Localisez 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 for z/OS pour 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(RFC3164) SIEM(RFC3164) TIMESTAMP INSTNAME(SIEM.Agent)- RFC3164: 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 des enregistrements SMF ACF2.
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 sélecteur 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 ACF2 SMF (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" (Sécurité, 4).SEVERITY(INFORMATIONAL): définit la gravité par défaut sur "Informationnel".- Les mots de passe non valides ou les cas de non-respect de l'autorité sont automatiquement envoyés avec le niveau de gravité ERROR.
- Les cas de non-respect des règles concernant les ressources sont automatiquement envoyés avec le niveau de gravité ERROR.
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 liés à un mot de passe ou à une autorisation non valides (niveau d'erreur)
- Sous-type V : non-respect des règles concernant les ressources (niveau d'erreur : ERROR)
- Sous-type D : non-respect des règles d'accès aux ensembles de données (niveau d'erreur)
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 recharger le fichier de paramètres :
F CZAGENT,PARMS- Remplacez
CZAGENTpar le nom de la tâche démarrée de votre BMC AMI Defender, le cas échéant. - Cette commande recharge le fichier de paramètres sans arrêter l'agent.
- Remplacez
Vérifiez la configuration en examinant le résultat de 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 que les messages syslog ACF2 ont bien été reçus :
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 ingérés :
- Accédez à Rechercher > Recherche UDM.
Saisissez la requête suivante :
metadata.log_type = "CA_ACF2"Vérifiez que les événements de sécurité ACF2 s'affichent 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. | |
| pondérée | 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 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 | 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. |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.