Collecter les journaux IBM Security Access Manager
Ce document explique comment ingérer des journaux IBM Security Access Manager dans Google Security Operations à l'aide de Bindplane.
IBM Verify Identity Access (anciennement IBM Security Access Manager / IBM Security Verify Access) est une solution de sécurité basée sur un dispositif réseau qui fournit des services de gestion des accès, de sécurité Web et d'authentification. Il applique les règles de sécurité pour les ressources Web à l'aide d'une architecture de proxy inverse (WebSEAL) et génère des journaux d'audit, d'authentification, d'autorisation et système essentiels pour la surveillance de la sécurité.
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'appareil IBM Verify Identity Access
- Si vous exécutez l'outil derrière un proxy, assurez-vous que les ports du pare-feu sont ouverts.
- Accès privilégié à l'interface de gestion locale (LMI) IBM Verify Identity Access
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).
- 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 (ancienne méthode)
- 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 où 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 que l'installation se termine.
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 sous Linux
- Ouvrez un terminal avec des privilèges 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 que l'installation se termine.
Vérifiez l'installation en exécutant la commande suivante :
sudo systemctl status observiq-otel-collectorLe service doit s'afficher comme actif (en cours d'exécution).
Ressources d'installation supplémentaires
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/chronicle_w_labels: 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: '/path/to/ingestion-authentication-file.json' customer_id: '<customer_id>' endpoint: chronicle.googleapis.com log_type: 'IBM_SAM' raw_log_field: body ingestion_labels: service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
Paramètres de configuration
Remplacez les espaces réservés suivants :
Configuration du récepteur :
listen_address: adresse IP et port sur lesquels l'agent Bindplane écoute les messages syslog entrants. Utilisez0.0.0.0:514pour écouter sur toutes les interfaces sur le port514. Modifiez le port si514est déjà utilisé ou si vous préférez un port non privilégié tel que1514.- Pour utiliser TCP au lieu d'UDP, remplacez
udplogpartcplogdans les sectionsreceiversetpipelines.
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: ID client Google SecOps copié précédemment.location: remplacez<LOCATION>par la région de votre instance Google SecOps (par exemple,us,europeouasia-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 surchronicle.googleapis.com.log_type: doit être défini surIBM_SAM.
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 de l'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/chronicle_w_labels: compression: gzip creds_file_path: '/path/to/ingestion-authentication-file.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: 'IBM_SAM' raw_log_field: body ingestion_labels:
Enregistrez le fichier de configuration.
Une fois les modifications effectuées, enregistrez le fichier :
- 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, procédez comme suit :
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, procédez comme suit :
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 et 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 dans IBM Verify Identity Access
Ajouter une définition de serveur syslog distant
- Connectez-vous à l'interface de gestion locale (LMI) d'IBM Verify Identity Access.
- Accédez à Monitor> Logs> Remote Syslog Forwarding (Surveiller > Journaux > Transfert Syslog à distance).
- Sur la page Transfert Syslog à distance, cliquez sur Ajouter.
- Fournissez les informations de configuration suivantes :
- Serveur : saisissez l'adresse IP ou le nom d'hôte de l'hôte de l'agent Bindplane (par exemple,
192.168.1.100). - Port : saisissez le numéro de port sur lequel l'agent BindPlane écoute (par exemple,
514). - Protocole : sélectionnez UDP pour qu'il corresponde au récepteur
udplogdans la configuration de l'agent BindPlane. Sélectionnez TCP si vous avez configuré l'agent BindPlane avectcplog. - Format : sélectionnez le format du message syslog :
- Protocole Syslog BSD : format RFC 3164 (recommandé pour une compatibilité maximale).
- Protocole Syslog : format RFC 5424.
- Déboguer : laissez cette option décochée, sauf si un dépannage est nécessaire. Lorsque cette option est activée, des informations de débogage supplémentaires sont écrites dans le fichier journal
rsyslog_forwarderaccessible depuis la page Afficher les fichiers journaux de l'application.
- Serveur : saisissez l'adresse IP ou le nom d'hôte de l'hôte de l'agent Bindplane (par exemple,
- Cliquez sur Enregistrer.
Configurer les sources de journaux pour le serveur syslog distant
- Sur la page Transfert Syslog distant, sélectionnez l'entrée de serveur Syslog distant que vous avez créée.
- Cliquez sur Sources.
- Cliquez sur Ajouter pour ajouter une source de journaux.
- Fournissez les informations de configuration suivantes :
- Nom : sélectionnez une source du journal dans la liste déroulante. Voici les sources de journaux disponibles :
- Messages LMI : messages de l'application LMI
- LMI Trace : journaux de trace et de débogage LMI
- LMI Access : journaux d'accès HTTP LMI
- Messages d'exécution : messages de l'environnement d'exécution
- Trace d'exécution : journaux de trace et de débogage d'exécution
- Audit d'exécution : événements d'audit d'exécution (authentification, autorisation)
- Journaux d'exécution : journaux d'application d'exécution
- WebSEAL : journaux du proxy inverse Web (nécessite de sélectionner un nom d'instance et un fichier journal)
- Serveur d'autorisation : journaux du serveur d'autorisation (nécessite de sélectionner un nom d'instance et un fichier journal)
- Policy Server : journaux de serveur de règles (nécessite de sélectionner un fichier journal)
- Registre d'utilisateurs intégré : journaux du registre d'utilisateurs LDAP intégré
- Cluster : journaux de gestion du cluster
- Système : journaux au niveau du système d'exploitation
- DSC : journaux du cache de session distribué
- FELB : journaux de l'équilibreur de charge de l'interface
- Nom de l'instance : ce champ n'est disponible que lorsque WebSEAL ou Serveur d'autorisation est sélectionné dans le champ Nom. Sélectionnez le nom de l'instance dans la liste déroulante (par exemple,
default). - Fichier journal : ce champ est disponible lorsque WebSEAL, Serveur d'autorisation, Serveur de règles ou Journaux d'exécution sont sélectionnés dans le champ Nom. Sélectionnez le fichier journal spécifique dans la liste déroulante.
- Tag : saisissez un nom de tag unique pour cette source de journaux. La balise ne doit pas contenir d'espaces (par exemple,
WebSEAL_AuditouRuntimeAudit). - Fonctionnalité : sélectionnez une catégorie de fonctionnalité syslog pour les entrées de journal transférées (par exemple,
local0,local1,authouuser). - Gravité : sélectionnez Informations pour capturer toutes les entrées de journal.
- Nom : sélectionnez une source du journal dans la liste déroulante. Voici les sources de journaux disponibles :
- Cliquez sur OK.
Pour ajouter d'autres sources de journaux, répétez les étapes 3 à 5 pour chaque source que vous souhaitez transférer.
Cliquez sur Enregistrer pour appliquer la configuration de la source de journaux.
Pour activer les modifications, accédez au haut de la page et cliquez sur Deploy Pending Changes (Déployer les modifications en attente). La configuration du transfert syslog n'est pas active tant qu'elle n'est pas déployée.
Table de mappage UDM
| Champ du journal | Mappage UDM | Logique |
|---|---|---|
| sha256_value | additional.fields | Fusionné avec le mappage {key: "sha256_value", value: {string_value: sha256_value}} et le mappage {key: "connection_type", value: {string_value: connection_type}} |
| connection_type | additional.fields | |
| dvc_ip | intermediary.hostname | Valeur copiée directement si dvc_ip n'est pas une adresse IP valide |
| dvc_ip | intermediary.ip | Définissez sur dvc_ip s'il s'agit d'une adresse IP valide. Fusionnez les adresses IP supplémentaires valides de ip_address qui ne sont pas égales à src_ip ou dst_ip, qui ne sont pas vides et qui ne sont pas "-". |
| ip_address | intermediary.ip | |
| ts | metadata.collected_timestamp | Analysé à partir de ts2 s'il est présent au format aaaa-MM-jjTHH:mm:ss, sinon à partir de ts au format ISO8601, MMM jj HH:mm:ss, MMM j HH:mm:ss |
| ts2 | metadata.collected_timestamp | |
| description | metadata.description | Valeur copiée directement |
| code temporel | metadata.event_timestamp | Analyse à l'aide des formats de date jj/MMM/aaaa:HH:mm:ss Z ou aaaa-MM-jj-HH:mm:ss.SSSZZI |
| src_ip | metadata.event_type | Définissez sur "NETWORK_HTTP" si le principal (src_ip ou src_host), la cible (dst_ip ou target_hostname) et http (method ou response_code) sont présents, "NETWORK_CONNECTION" si le principal et la cible sont présents, "STATUS_UPDATE" si le principal est présent, sinon "GENERIC_EVENT". |
| src_host | metadata.event_type | |
| dst_ip | metadata.event_type | |
| target_hostname | metadata.event_type | |
| method | metadata.event_type | |
| response_code | metadata.event_type | |
| product_event_type | metadata.product_event_type | Valeur copiée directement |
| metadata.product_name | metadata.product_name | Défini sur "IBM_SAM" |
| metadata.vendor_name | metadata.vendor_name | Défini sur "IBM" |
| proto | network.application_protocol | Valeur copiée directement si elle est au format HTTP ou HTTPS |
| version | network.application_protocol_version | Valeur copiée directement |
| method | network.http.method | Valeur issue de method_value si elle n'est pas vide, sinon méthode |
| method_value | network.http.method | |
| response_code | network.http.response_code | Converti en entier |
| ip_protocol_value | network.ip_protocol | Valeur copiée directement si elle est au format TCP, UDP ou ICMP |
| rcv_bytes | network.received_bytes | Converti en uinteger |
| sent_bytes | network.sent_bytes | Converti en uinteger |
| request_id | network.session_id | Valeur copiée directement |
| src_application | principal.application | Valeur copiée directement |
| src_host | principal.asset.hostname | Valeur copiée directement |
| src_ip | principal.asset.ip | Valeur copiée directement si elle n'est pas vide, un espace, nulle, N/A ou - |
| file_name | principal.file.full_path | Valeur copiée directement |
| src_host | principal.hostname | Valeur copiée directement |
| src_ip | principal.ip | Valeur copiée directement si elle n'est pas vide, un espace, nulle, N/A ou - |
| src_port | principal.port | Converti en entier |
| pid | principal.process.pid | Valeur copiée directement |
| src_resource | principal.resource.name | Valeur copiée directement |
| user_name | principal.user.userid | Valeur copiée directement si elle n'est pas non authentifiée ou vide |
| description | security_result.action | Définissez sur "BLOCK" si la description contient "could not establish a secure connection", "could not be determined" ou "have expired". |
| de gravité, | security_result.severity | Valeur copiée directement, avec WARNING mappé sur MEDIUM |
| user_name | security_result.summary | Définir sur "unauthenticated" si user_name == "unauthenticated" |
| target_hostname | target.asset.hostname | Valeur copiée directement |
| dst_ip | target.asset.ip | La valeur est copiée directement si elle n'est pas vide, ni égale à un espace, à null, à N/A ou à "-". |
| target_hostname | target.hostname | Valeur copiée directement |
| dst_ip | target.ip | Valeur copiée directement si elle n'est pas vide, un espace, nulle, N/A ou - |
| url | target.url | Concaténation de "url" et "url1" |
| url1 | target.url | |
ip_protocol_value |
event.idm.read_only_udm.network.ip_protocol |
Mappé à partir du journal des modifications |
method_value |
event.idm.read_only_udm.network.http.method |
Mappé à partir du journal des modifications |
sha256_value |
event.idm.read_only_udm.additional.fields |
Mappé à partir du journal des modifications |
Journal des modifications
Afficher le journal des modifications de ce parseur
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.