Collecter les journaux BMC AMI Defender
Ce document explique comment ingérer des journaux BMC AMI Defender dans Google Security Operations à l'aide de l'agent Bindplane.
BMC AMI Datastream for z/OS est un programme d'agent de mainframe qui surveille l'activité du système z/OS, et collecte, traite et fournit les enregistrements SMF (System Management Facility) aux systèmes SIEM distribués en temps réel. L'agent reformate les enregistrements SMF provenant de RACF, ACF2, Top Secret, TCP/IP, CICS, IMS et d'autres événements système et d'application z/OS en messages syslog conformes à la norme RFC 3164, puis les transmet via les protocoles UDP, TCP ou TLS.
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
systemdpour l'agent Bindplane - Connectivité réseau entre l'hôte de l'agent Bindplane et la LPAR z/OS exécutant BMC AMI Datastream
- 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 Datastream pour z/OS version 6.1 ou ultérieure installé et en cours d'exécution sur la LPAR z/OS
- Accès à la modification des fichiers de paramètres dans l'ensemble de données amihlq.PARM sur z/OS (nécessite généralement un accès TSO/ISPF ou une autorisation d'envoi de tâches par lot)
- Autorisation de modifier la configuration de BMC AMI Datastream (nécessite généralement un accès RACF READ aux ensembles de données de paramètres)
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: tcplog: listen_address: "0.0.0.0:1514" exporters: chronicle/bmc_datastream: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: 'your-customer-id-here' endpoint: malachiteingestion-pa.googleapis.com log_type: BMC_AMI_DEFENDER raw_log_field: body service: pipelines: logs/datastream_to_chronicle: receivers: - tcplog exporters: - chronicle/bmc_datastreamRemplacez les espaces réservés suivants :
Configuration du récepteur :
listen_address: adresse IP et port à écouter :0.0.0.0:1514pour écouter sur toutes les interfaces sur le port 1514 (recommandé pour Linux non root)0.0.0.0:514pour écouter sur toutes les interfaces sur le port syslog standard (nécessite l'accès root sur Linux)- Adresse IP spécifique à écouter sur une interface
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: votrecustomer ID. Pour en savoir plus, consultez Obtenir le numéro 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:BMC_AMI_DEFENDER
Exemple de configuration pour UDP syslog
Si vous préférez le transport UDP (latence plus faible, fire-and-forget) :
receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/bmc_datastream: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: 'a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6' endpoint: malachiteingestion-pa.googleapis.com log_type: BMC_AMI_DEFENDER raw_log_field: body service: pipelines: logs/datastream_to_chronicle: receivers: - udplog exporters: - chronicle/bmc_datastream
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 le transfert Syslog de BMC AMI Defender
Modifier le fichier de paramètres à l'aide de TSO/ISPF
- Connectez-vous à TSO/ISPF sur la LPAR z/OS où BMC AMI Datastream est installé.
- Dans le menu principal des options ISPF, saisissez 2 pour sélectionner EDIT (MODIFIER).
Sur la page Modifier – Panneau d'entrée, saisissez les informations suivantes :
- Bibliothèque ISPF : saisissez le nom de l'ensemble de données de paramètre au format
'amihlq.PARM', où amihlq est le qualificatif de haut niveau choisi lors de l'installation (par exemple,'PROD.CZAGENT.PARM'). - Membre : saisissez le membre
$$$CONFG.
- Bibliothèque ISPF : saisissez le nom de l'ensemble de données de paramètre au format
Press Enter to open the member for editing.
Configure the SIEM type
- In the
$$$CONFG, puis recherchez la section intitulée Switches for setting the SIEM type (Boutons pour définir le type de SIEM). Décommentez un type de SIEM en supprimant le point-virgule en début de ligne :
- Pour le format syslog standard, supprimez le commentaire :
SWITCH ON(RFC3164) - Pour le format d'événement commun, supprimez la mise en commentaire de :
SWITCH ON(CEF) - Pour le format JSON, supprimez le commentaire :
SWITCH ON(JSON) - Pour le format IBM QRadar LEEF, supprimez le commentaire :
SWITCH ON(LEEF) - Pour le format Splunk, supprimez le commentaire :
SWITCH ON(Splunk)
- Pour le format syslog standard, supprimez le commentaire :
Appuyez sur F3 pour enregistrer et quitter le membre.
Configurer le serveur syslog
Dans le panneau de saisie "Modifier", saisissez les informations suivantes :
- Bibliothèque ISPF : saisissez
'amihlq.PARM'(comme précédemment). - Membre : saisissez
$$$SERVR.
- Bibliothèque ISPF : saisissez
Press Enter to open the member for editing.
Locate the section corresponding to your selected SIEM type. For example:
- For RFC3164: Locate the section labeled
; RFC3164 - For CEF: Locate the section labeled
; CEF - TRANS(TCP) Recommended - For JSON: Locate the section labeled
; JSON - TRANS(TCP) Recommended
- For RFC3164: Locate the section labeled
Uncomment the SERVER statement by removing the leading semicolon.
Edit the SERVER statement with the following values:
- Replace
ip.addr.examplewith the IP address of the Bindplane agent host (for example,192.168.1.100). If using TCP (recommended), the statement should look like:
SERVER 192.168.1.100:1514 TRANS(TCP) MAXMSG(2000)If using UDP, the statement should look like:
SERVER 192.168.1.100:514 TRANS(UDP) MAXMSG(2000)
- Replace
If you selected CEF, JSON, or Splunk format and are using TCP transport, locate the OPTIONS statement section and uncomment the FRAMING parameter:
OPTIONS FRAMING(OCTETCOUNT)Press F3 to save and exit the member.
Refresh the BMC AMI Datastream configuration
- From the ISPF Primary Option Menu, enter 6 to select COMMAND.
On the TSO Command Processor screen, enter the following MVS console command:
F czagentname,PARMSReplace
czagentnamewith the name of the BMC AMI Datastream started task (typicallyCZAGENTor the instance name configured during installation).Press Enter to execute the command.
Verify the configuration was refreshed by checking the system log for message CZA0001I indicating the parameter file was successfully processed.
Verify syslog transmission
- From the ISPF Primary Option Menu, enter 6 to select COMMAND.
Enter the following command to display BMC AMI Datastream statistics:
F czagentname,STATSPress Enter to execute the command.
Check the system log for message CZA0350I showing the number of messages sent to the syslog server.
Verify the Bindplane agent is receiving messages by checking the Bindplane agent logs:
- Linux:
sudo journalctl -u observiq-otel-collector -f - Windows: Check
C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log
- Linux:
Alternative: Edit parameter file using batch job
If you do not have TSO/ISPF access, you can edit the parameter files using a batch job:
Create a batch job with the following JCL:
//EDITPARM JOB (ACCT),'EDIT DATASTREAM PARMS', // CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID //STEP1 EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSIN DD DUMMY //SYSUT1 DD * SWITCH ON(RFC3164) /* //SYSUT2 DD DSN=amihlq.PARM($$$CONFG),DISP=SHR //STEP2 EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSIN DD DUMMY //SYSUT1 DD * SERVER 192.168.1.100:1514 TRANS(TCP) MAXMSG(2000) /* //SYSUT2 DD DSN=amihlq.PARM($$$SERVR),DISP=SHR.Remplacez
amihlqpar le qualificatif de haut niveau pour votre installation BMC AMI Datastream.Remplacez
192.168.1.100:1514par l'adresse IP et le port de l'hôte de votre agent Bindplane.Envoyez le job et vérifiez qu'il s'est terminé correctement (code de retour 0).
Exécutez la commande MODIFY pour actualiser la configuration, comme décrit dans la section précédente.
Table de mappage UDM
| Champ de journal | Mappage UDM | Logique |
|---|---|---|
| aceeadsp | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| aceeaudt | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| aceeflg1 | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| aceelogu | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| aceeoper | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| aceepriv | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| aceeracf | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| aceeroa | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| aceespec | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| additional.fields | additional.fields | Informations supplémentaires sur l'événement |
| auth | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| auth_audit | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| auth_bypass | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| auth_exit | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| auth_normal | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| auth_oper | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| auth_soft | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| auth_special | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| auth_trusted | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| authinfo | security_result.description | Description du résultat de sécurité |
| événement | metadata.product_event_type | Type d'événement spécifique au produit |
| event_type | metadata.event_type | Type d'événement (par exemple, USER_LOGIN, NETWORK_CONNECTION) |
| eventdesc | metadata.description | Description de l'événement |
| groupe | additional.fields | Informations supplémentaires sur l'événement |
| nom d'hôte | principal.hostname, principal.asset.hostname | Nom d'hôte du principal, nom d'hôte de l'élément |
| jobid | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| jobnm | additional.fields | Informations supplémentaires sur l'événement |
| jsauth | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| nom | principal.user.user_display_name | Nom à afficher de l'utilisateur |
| pgm | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| privstatd | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| reas_always | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| reas_audit | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| reas_cmdviol | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| reas_globalaudit | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| reas_setropts | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| reas_special | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| reas_user | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| reas_verify | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| rtype | additional.fields | Informations supplémentaires sur l'événement |
| saf | additional.fields | Informations supplémentaires sur l'événement |
| safd | additional.fields | Informations supplémentaires sur l'événement |
| security_result.detection_fields | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| de gravité, | security_result.severity, security_result.severity_details | Niveau de gravité du résultat de sécurité, informations détaillées sur le niveau de gravité |
| sid | additional.fields | Informations supplémentaires sur l'événement |
| timestamp | metadata.event_timestamp | Code temporel de l'événement |
| tokflg1 | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| tokflg3 | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| tokpriv | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| toksus | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| tokudus | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| userid | principal.user.userid | ID utilisateur |
| violation | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| user_warning | security_result.detection_fields | Champs utilisés pour déterminer le résultat de sécurité |
| worktyped | additional.fields | Informations supplémentaires sur l'événement |
| metadata.product_name | Nom du produit | |
| metadata.vendor_name | Nom du fournisseur/de l'entreprise |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.