Collecter les journaux IBM Informix

Compatible avec :

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.
  1. Connectez-vous à la consoleGoogle Cloud et sélectionnez le projet Google Cloud associé à votre instance Google SecOps.
  2. Accédez à IAM et administration > Comptes de service.
  3. Cliquez sur Créer un compte de service.
  4. 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).
  5. Cliquez sur Créer et continuer.
  6. Dans la section Autoriser ce compte de service à accéder au projet, cliquez sur Sélectionner un rôle, puis sélectionnez Éditeur Chronicle.
  7. Cliquez sur Continue (Continuer), puis sur Done (OK).
  8. Cliquez sur le compte de service que vous avez créé, puis accédez à l'onglet Clés.
  9. Cliquez sur Ajouter une clé > Créer une clé.
  10. Sélectionnez JSON, puis cliquez sur Créer. Le fichier de clé est téléchargé sur votre ordinateur.
  11. Enregistrez le fichier de clé sous le nom ingestion-auth.json dans le répertoire du collecteur BindPlane (/opt/observiq-otel-collector/ingestion-auth.json sous Linux ou C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json sous Windows), ou mettez à jour creds_file_path dans config.yaml pour qu'il corresponde au chemin d'accès où vous l'enregistrez.
  12. 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)

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres SIEM> Agents de collecte.
  3. Téléchargez le fichier d'authentification d'ingestion.
  4. 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

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres du SIEM > Profil.
  3. 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

  1. Ouvrez l'invite de commande ou PowerShell en tant qu'administrateur.
  2. Exécutez la commande suivante :

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. Attendez que l'installation se termine.

  4. Vérifiez l'installation en exécutant la commande suivante :

    sc query observiq-otel-collector
    

    Le service doit s'afficher comme étant EN COURS D'EXÉCUTION.

Installation de Linux

  1. Ouvrez un terminal avec des droits d'accès racine ou sudo.
  2. Exécutez la commande suivante :

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. Attendez que l'installation se termine.

  4. Vérifiez l'installation en exécutant la commande suivante :

    sudo systemctl status observiq-otel-collector
    

    Le 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.yaml
    
  • Windows :

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

Modifiez le fichier de configuration

  1. Remplacez l'intégralité du contenu de config.yaml par 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/informix
    
  2. Remplacez les espaces réservés suivants :

    • Configuration du récepteur :

      • listen_address : adresse IP et port à écouter :

        • 0.0.0.0:514 pour écouter sur toutes les interfaces sur le port 514 (port syslog standard)
        • Utilisez le port 1514 ou 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 nom ingestion-auth.json dans l'un des emplacements suivants :

        • Linux : /opt/observiq-otel-collector/ingestion-auth.json
        • Windows : C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • customer_id : remplacez YOUR_CUSTOMER_ID par 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, europe ou asia-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 sur chronicle.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 exporters par le code suivant. Définissez creds_file_path sur le chemin d'accès au fichier d'authentification d'ingestion. Si votre instance se trouve en dehors des États-Unis, remplacez malachiteingestion-pa.googleapis.com par 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 sur Enter, puis sur Ctrl+X.
  • Windows : cliquez sur Fichier > Enregistrer.

Redémarrez l'agent Bindplane pour appliquer les modifications.

  • Pour redémarrer l'agent BindPlane sous Linux :

    1. Exécutez la commande suivante :

      sudo systemctl restart observiq-otel-collector
      
    2. Vérifiez que le service est en cours d'exécution :

      sudo systemctl status observiq-otel-collector
      
    3. Recherchez les erreurs dans les journaux :

      sudo journalctl -u observiq-otel-collector -f
      
  • Pour redémarrer l'agent Bindplane sous Windows :

    1. Choisissez l'une des options suivantes :

      • Invite de commande ou PowerShell en tant qu'administrateur :

        net stop observiq-otel-collector && net start observiq-otel-collector
        
      • Console Services :

        1. Appuyez sur Win+R, saisissez services.msc, puis appuyez sur Entrée.
        2. Localisez observIQ OpenTelemetry Collector.
        3. Effectuez un clic droit et sélectionnez Redémarrer.
    2. Vérifiez que le service est en cours d'exécution :

      sc query observiq-otel-collector
      
    3. Recherchez 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.

  1. Connectez-vous au serveur IBM Informix en tant qu'utilisateur disposant du rôle AAO.

  2. 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,DRTB
    

    Cette commande crée le masque _default et 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
  3. 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,RDRW
    

    Cette 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
  4. Pour créer un masque pour un utilisateur spécifique, remplacez _default par le nom d'utilisateur :

    onaudit -a -u username -e +OPDB,GRDB,CRTB,ALTB,DRTB,DLRW,INRW,UPRW
    
  5. Vérifiez que les masques d'audit ont été créés :

    onaudit -o
    

Activer l'audit vers Syslog (ASL)

  1. Activez l'audit ASL et configurez les paramètres syslog :

    onaudit -E on -F LOG_LOCAL0 -I informix_audit -P LOG_INFO
    

    Cette 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 sur informix_audit (apparaît dans les messages syslog)
    • -P LOG_INFO : définit la priorité syslog sur LOG_INFO.
  2. Activez l'audit obligatoire pour les administrateurs de base de données :

    onaudit -A on -S on
    

    Cette 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).
  3. Si vous souhaitez activer l'audit au niveau des lignes pour les tables avec l'option AUDIT :

    onaudit -R 1
    

    Le paramètre ADTROWS est ainsi défini sur 1, ce qui active l'audit sélectif au niveau des lignes.

  4. Vérifiez la configuration de l'audit :

    onaudit -c
    

    Le résultat doit se présenter comme suit :

    • ADT_SYSLOG_ENABLED = 1
    • ADT_SYSLOG_FACILITY = LOG_LOCAL0
    • ADT_SYSLOG_IDENTIFIER = informix_audit
    • ADT_SYSLOG_PRIORITY = LOG_INFO
    • ADT_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) :

  1. Créez un fichier de configuration rsyslog :

    sudo nano /etc/rsyslog.d/30-informix-audit.conf
    
  2. Ajoutez la configuration suivante pour transférer les journaux d'audit Informix :

    # Forward Informix audit logs to Bindplane agent
    local0.* @127.0.0.1:514
    

    Si vous avez configuré un autre service dans la commande onaudit -F, remplacez local0 par votre service (par exemple, local1, local2, etc.).

    Si l'agent Bindplane se trouve sur un autre serveur, remplacez 127.0.0.1 par l'adresse IP de l'agent Bindplane.

    Pour le transfert TCP (plus fiable), utilisez @@ au lieu de @ :

    local0.* @@127.0.0.1:514
    
  3. Enregistrez le fichier et redémarrez rsyslog :

    sudo systemctl restart rsyslog
    
  4. Vérifiez que rsyslog est en cours d'exécution :

    sudo systemctl status rsyslog
    

Pour syslog-ng :

  1. Modifiez le fichier de configuration syslog-ng :

    sudo nano /etc/syslog-ng/syslog-ng.conf
    
  2. Ajoutez 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);
    };
    
  3. Enregistrez le fichier et redémarrez syslog-ng :

    sudo systemctl restart syslog-ng
    

Tester la configuration

  1. Générez un événement d'audit de test en vous connectant à une base de données :

    dbaccess stores_demo
    

    Quittez ensuite la base de données.

  2. 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 informix
    

    Windows :

    type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log" | findstr informix
    
  3. Vous pouvez également utiliser l'utilitaire onshowaudit pour 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_PID
    

    Options 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 messages
    • LOG_CONS : écrire dans la console si Syslog n'est pas disponible
    • LOG_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/directory
    
  • Pour définir la taille maximale du fichier d'audit :

    onaudit -s 50000000
    

    La taille maximale est ainsi définie sur 50 Mo (valeur en octets).

  • Pour démarrer manuellement un nouveau fichier d'audit :

    onaudit -n
    
  • Pour 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.