Collecter les journaux IBM Informix
Ce document explique comment ingérer des journaux IBM Informix dans Google Security Operations à l'aide de l'agent Bindplane.
IBM Informix est un système de gestion de base de données relationnelle hautes performances qui fournit des fonctionnalités complètes de journalisation d'audit via son outil d'audit sécurisé. La fonctionnalité Audit to Syslog (ASL) permet d'envoyer des enregistrements d'audit au daemon syslog pour la journalisation centralisée et l'intégration SIEM.
Avant de commencer
Assurez-vous de remplir les conditions suivantes :
- Une instance Google SecOps
- Windows Server 2016 ou version ultérieure, ou un hôte Linux avec
systemd - Connectivité réseau entre l'agent Bindplane et le serveur IBM Informix
- 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.
- Accès administrateur au serveur IBM Informix avec le rôle AAO (Audit Administrator Officer)
- IBM Informix 12.10 ou version ultérieure (la fonctionnalité ASL a été introduite dans la version 12.10)
- Masques d'audit configurés pour les utilisateurs ou les événements que vous souhaitez surveiller
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 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
- 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 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 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).
Autres ressources d'installation
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.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/informix: 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: INFORMIX raw_log_field: body ingestion_labels: env: production source: informix_audit service: pipelines: logs/informix_to_chronicle: receivers: - udplog exporters: - chronicle/informixRemplacez les espaces réservés suivants :
Configuration du récepteur :
listen_address: adresse IP et port à écouter :0.0.0.0:514pour écouter sur toutes les interfaces sur le port 514 (port syslog standard)- Utilisez le port
1514ou un port supérieur si vous exécutez le serveur en tant qu'utilisateur non racine sur Linux. - Ajustez le numéro de port pour qu'il corresponde à votre configuration syslog Informix.
Configuration de l'exportateur :
creds_file_path: chemin d'accès complet au fichier de clé JSON du compte de service (option 1). Veillez à enregistrer le fichier d'identifiants sous le nomingestion-auth.jsondans l'un des emplacements suivants :- Linux :
/opt/observiq-otel-collector/ingestion-auth.json - Windows :
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux :
customer_id: remplacezYOUR_CUSTOMER_IDpar le numéro client de l'étape précédente.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 dans IAM et administration > Paramètres.endpoint: laissez la valeur définie surchronicle.googleapis.com.log_type: définie sur "INFORMIX"ingestion_labels: libellés facultatifs pour catégoriser les journaux (à personnaliser selon vos besoins)
Exemple de configuration pour TCP syslog
Si vous préférez TCP pour une distribution fiable, utilisez plutôt cette configuration :
receivers: tcplog: listen_address: "0.0.0.0:514" exporters: chronicle/informix: 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: INFORMIX raw_log_field: body service: pipelines: logs/informix_to_chronicle: receivers: - tcplog exporters: - chronicle/informix
Ancien exportateur d'API d'ingestion
Si vous utilisez le fichier d'authentification d'ingestion de l'option 2, remplacez le bloc
exporterspar le code suivant. 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/informix: compression: gzip creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json' customer_id: 'YOUR_CUSTOMER_ID' endpoint: malachiteingestion-pa.googleapis.com log_type: INFORMIX raw_log_field: body ingestion_labels: env: production source: informix_audit
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. - Localisez 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 IBM Informix
Créer des masques d'audit
Avant d'activer l'audit, vous devez créer des masques d'audit pour définir les événements à auditer pour chaque utilisateur.
Connectez-vous au serveur IBM Informix en tant qu'utilisateur disposant du rôle AAO.
Créez un masque d'audit par défaut pour tous les utilisateurs afin d'auditer les événements de base de données courants :
onaudit -a -u _default -e +OPDB,GRDB,CRTB,ALTB,DRTBCette commande crée le masque
_defaultet audite les événements suivants :- OPDB : Open Database
- GRDB : accorder l'accès à la base de données
- CRTB : créer une table
- ALTB : Alter Table
- DRTB : supprimer le tableau
Pour activer l'audit au niveau des lignes pour les modifications de données, créez un masque avec des événements au niveau des lignes :
onaudit -a -u _require -e +DLRW,INRW,UPRW,RDRWCette commande crée le masque et les audits
_require:- DLRW : supprimer la ligne
- INRW : insérer une ligne
- UPRW : Update Row (Mettre à jour la ligne)
- RDRW : lecture de ligne
Pour créer un masque pour un utilisateur spécifique, remplacez
_defaultpar le nom d'utilisateur :onaudit -a -u username -e +OPDB,GRDB,CRTB,ALTB,DRTB,DLRW,INRW,UPRWVérifiez que les masques d'audit ont été créés :
onaudit -o
Activer l'audit vers Syslog (ASL)
Activez l'audit ASL et configurez les paramètres syslog :
onaudit -E on -F LOG_LOCAL0 -I informix_audit -P LOG_INFOCette commande :
-E on: active la fonctionnalité d'audit vers Syslog.-F LOG_LOCAL0: définit la fonctionnalité syslog sur LOG_LOCAL0 (recommandé pour le filtrage)-I informix_audit: définit l'identifiant syslog surinformix_audit(apparaît dans les messages syslog)-P LOG_INFO: définit la priorité syslog sur LOG_INFO.
Activez l'audit obligatoire pour les administrateurs de base de données :
onaudit -A on -S onCette commande :
-A on: active l'audit obligatoire pour le groupe DBSA (administrateur de serveur de base de données).-S on: active l'audit obligatoire pour le groupe DBSSO (Database Security Officer).
Si vous souhaitez activer l'audit au niveau des lignes pour les tables avec l'option AUDIT :
onaudit -R 1Le paramètre ADTROWS est ainsi défini sur 1, ce qui active l'audit sélectif au niveau des lignes.
Vérifiez la configuration de l'audit :
onaudit -cLe résultat doit se présenter comme suit :
ADT_SYSLOG_ENABLED = 1ADT_SYSLOG_FACILITY = LOG_LOCAL0ADT_SYSLOG_IDENTIFIER = informix_auditADT_SYSLOG_PRIORITY = LOG_INFOADT_DBSA = 1(si activé)ADT_DBSSO = 1(si activées)
Configurer le daemon syslog pour qu'il transfère les données à l'agent Bindplane
La fonctionnalité Informix ASL envoie des enregistrements d'audit au daemon syslog local. Vous devez configurer le daemon syslog pour qu'il transfère ces messages à l'agent BindPlane.
Pour rsyslog (le plus courant sous Linux) :
Créez un fichier de configuration rsyslog :
sudo nano /etc/rsyslog.d/30-informix-audit.confAjoutez la configuration suivante pour transférer les journaux d'audit Informix :
# Forward Informix audit logs to Bindplane agent local0.* @127.0.0.1:514Si vous avez configuré un autre service dans la commande
onaudit -F, remplacezlocal0par votre service (par exemple,local1,local2, etc.).Si l'agent Bindplane se trouve sur un autre serveur, remplacez
127.0.0.1par l'adresse IP de l'agent Bindplane.Pour le transfert TCP (plus fiable), utilisez
@@au lieu de@:local0.* @@127.0.0.1:514Enregistrez le fichier et redémarrez rsyslog :
sudo systemctl restart rsyslogVérifiez que rsyslog est en cours d'exécution :
sudo systemctl status rsyslog
Pour syslog-ng :
Modifiez le fichier de configuration syslog-ng :
sudo nano /etc/syslog-ng/syslog-ng.confAjoutez la configuration suivante :
# Define destination for Bindplane agent destination d_bindplane { udp("127.0.0.1" port(514)); }; # Filter for Informix audit logs filter f_informix { facility(local0); }; # Log path to forward Informix logs log { source(s_src); filter(f_informix); destination(d_bindplane); };Enregistrez le fichier et redémarrez syslog-ng :
sudo systemctl restart syslog-ng
Tester la configuration
Générez un événement d'audit de test en vous connectant à une base de données :
dbaccess stores_demoQuittez ensuite la base de données.
Consultez les journaux de l'agent Bindplane pour vérifier que les journaux d'audit sont bien reçus :
Linux :
sudo journalctl -u observiq-otel-collector -f | grep informixWindows :
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log" | findstr informixVous pouvez également utiliser l'utilitaire
onshowauditpour afficher les enregistrements d'audit à partir des fichiers syslog :onshowaudit -f /var/log/syslog -u your_username
Format des journaux d'audit
Les journaux d'audit Informix envoyés via syslog ont le format suivant :
Jan 12 11:59:21 hostname informix_audit: ONLN|2021-01-12 18:59:21.512|hostname|31055|servername|username|0:OPDB:stores_demo:0:-Le format inclut les éléments suivants :
- Code temporel et nom d'hôte Syslog (ajoutés par le daemon Syslog)
- Identifiant Syslog (configuré avec l'option
-I) - État du serveur (ONLN = en ligne)
- Code temporel Informix
- Nom d'hôte
- ID du processus
- Nom du serveur
- Nom d'utilisateur
- Code et détails de l'événement (séparés par une barre verticale)
Options de configuration supplémentaires
Pour définir les options syslog :
onaudit -O LOG_NDELAY,LOG_PIDOptions disponibles :
LOG_NDELAY: ouvrir la connexion immédiatement (par défaut)LOG_ODELAY: retarder l'ouverture de la connexion (mutuellement exclusif avec LOG_NDELAY)LOG_PID: Inclure l'ID du processus dans les messagesLOG_CONS: écrire dans la console si Syslog n'est pas disponibleLOG_PERROR: écrire dans stderr et dans syslog
Pour modifier le chemin d'accès au fichier d'audit (pour l'audit classique) :
onaudit -p /path/to/audit/directoryPour définir la taille maximale du fichier d'audit :
onaudit -s 50000000La taille maximale est ainsi définie sur 50 Mo (valeur en octets).
Pour démarrer manuellement un nouveau fichier d'audit :
onaudit -nPour définir le mode de gestion des exceptions :
onaudit -e 1
Modes d'erreur :
0: continuer le traitement et consigner l'erreur (par défaut)1: suspend le thread jusqu'à ce que l'enregistrement d'audit puisse être écrit.3: éteindre le serveur
Table de mappage UDM
| Champ de journal | Mappage UDM | Logique |
|---|---|---|
| id, dequeue_count, RequestId | about.labels | Fusionné avec les étiquettes "ID du message", "Nombre de retraits de la file d'attente" et "ID de la requête" |
| code temporel | metadata.event_timestamp | Converti au format aaaa-MM-jj HH:mm:ss.SSS |
| type | metadata.event_type | Définissez sur "GENERIC_EVENT" si le type est "ERROR", sinon sur "SYSTEM_AUDIT_LOG_UNCATEGORIZED". |
| serverName | principal.asset.asset_id | Concaténé à partir de "PRODUCT_SPECIFIC_ID: " et serverName si type != 'ERROR' |
| hostName | principal.hostname | Valeur copiée directement si le type est différent de "ERROR" |
| processId | principal.process.pid | Valeur copiée directement si le type n'est pas "ERROR" |
| eventOutput, eventName | principal.resource.attribute.labels | Fusionné avec les libellés "Sortie de l'événement" et "Nom de l'événement" |
| dbName | principal.resource.name | Valeur copiée directement si data != "" |
| principal.resource.type | Défini sur "DATABASE" si data != "" | |
| userName (Nom d'utilisateur) | principal.user.userid | Valeur copiée directement si le type est différent de "ERROR" |
| errorCode, type | security_result.action | Définissez sur "BLOCK" si type == "ERROR", sinon sur "ALLOW" si errorCode == "0", sinon sur "BLOCK". |
| Exception | security_result.description | Valeur copiée directement si kv_data_1 != "" |
| ErrorCode | security_result.rule_name | Valeur copiée directement si kv_data_1 != "" |
| description | security_result.summary | Valeur copiée directement si la description est différente de "" |
| blob_name, file_name | target.file.full_path | Valeur de blob_name si type == 'ERROR', sinon file_name |
| metadata.product_name | Définissez cette option sur "INFORMIX". | |
| metadata.vendor_name | Défini sur "IBM" |
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.