Collecter les journaux LDAP du serveur d'annuaire Red Hat

Compatible avec :

Ce document explique comment ingérer les journaux LDAP Red Hat Directory Server dans Google Security Operations à l'aide de l'agent Bindplane.

Red Hat Directory Server est un service d'annuaire LDAP de niveau entreprise basé sur des normes ouvertes. Il fournit une gestion centralisée des identités des utilisateurs, une authentification et un contrôle des accès pour les environnements Linux et UNIX. Le serveur d'annuaire stocke les journaux d'accès, d'erreur, d'audit, d'échec d'audit et les événements liés à la sécurité dans le répertoire /var/log/dirsrv/slapd-instance_name/, en enregistrant les connexions client, les opérations LDAP, les modifications de configuration, les échecs d'opérations et les événements liés à la sécurité tels que les tentatives d'authentification et les problèmes d'autorisation.

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

  • Une instance Google SecOps
  • Un hôte Linux avec systemd
  • Connectivité réseau entre l'agent BindPlane et l'hôte du serveur d'annuaire Red Hat
  • 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.
  • Un accès root ou sudo à l'hôte Red Hat Directory Server
  • Red Hat Directory Server 11 ou version ultérieure installé et en cours d'exécution
  • Service rsyslog installé et en cours d'exécution sur l'hôte du serveur d'annuaire

Obtenir les 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).
  • Anciens déploiements : continuez à utiliser le fichier d'authentification d'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 (ancien)

  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 un numéro client Google SecOps

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres 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 Linux en suivant les instructions ci-dessous.

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 la fin de l'installation.

  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).

Ressources d'installation supplémentaires

Pour en savoir plus sur les options d'installation et le 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.yaml
    

Modifiez le fichier de configuration

  • Remplacez l'intégralité du contenu de config.yaml par la configuration suivante :

    receivers:
      udplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/redhat_ds:
        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: '<customer_id>'
        endpoint: chronicle.googleapis.com
        log_type: REDHAT_DIRECTORY_SERVER
        raw_log_field: body
    
    service:
      pipelines:
        logs/redhat_ds:
          receivers:
            - udplog
          exporters:
            - chronicle/redhat_ds
    

Paramètres de configuration

Remplacez les espaces réservés suivants :

  • Configuration du récepteur :

    • udplog : type de récepteur basé sur le protocole :
      • udplog pour syslog UDP
      • tcplog pour syslog TCP
      • syslog pour le syslog RFC 3164/5424
    • 0.0.0.0 : adresse IP sur laquelle écouter :
      • 0.0.0.0 pour écouter sur toutes les interfaces (recommandé)
      • Adresse IP spécifique pour écouter sur une interface
    • 514 : numéro de port d'écoute (par exemple, 514, 1514, 6514)
  • Configuration de l'exportateur :

    • <customer_id> : ID 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 indiqué dans IAM et administration > Paramètres.
    • endpoint : laissez la valeur définie sur chronicle.googleapis.com.
    • Remplacez creds_file_path par le chemin d'accès au fichier de clé JSON de votre compte de service (option 1), en fonction de la plate-forme :
      • Linux : /opt/observiq-otel-collector/ingestion-auth.json

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 de l'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/redhat_ds:
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: REDHAT_DIRECTORY_SERVER
        raw_log_field: body
    

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.

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-collector
    
    1. Vérifiez que le service est en cours d'exécution :

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

      sudo journalctl -u observiq-otel-collector -f
      

Activer la journalisation des audits et des échecs d'audit dans Red Hat Directory Server

Par défaut, Red Hat Directory Server active la journalisation des accès, des erreurs et de la sécurité, mais désactive la journalisation des audits et des échecs d'audit. Activez ces journaux pour capturer toutes les modifications apportées à l'annuaire et les opérations ayant échoué.

  1. Ouvrez un terminal avec des droits root ou sudo sur l'hôte du serveur d'annuaire.
  2. Activez le journal d'audit en exécutant la commande suivante :

    dsconf -D "cn=Directory Manager" instance_name config replace nsslapd-auditlog-logging-enabled=on
    
  3. Activez le journal des échecs d'audit en exécutant la commande suivante :

    dsconf -D "cn=Directory Manager" instance_name config replace nsslapd-auditfaillog-logging-enabled=on
    
  4. Vérifiez que tous les types de journaux sont activés :

    dsconf -D "cn=Directory Manager" instance_name config get nsslapd-accesslog-logging-enabled nsslapd-errorlog-logging-enabled nsslapd-auditlog-logging-enabled nsslapd-auditfaillog-logging-enabled nsslapd-securitylog-logging-enabled
    
  5. Vérifiez que les fichiers journaux existent dans le répertoire des journaux :

    ls -la /var/log/dirsrv/slapd-instance_name/
    

Facultatif : Activer la journalisation à l'aide de la console Web

  1. Connectez-vous à la console Web Red Hat Directory Server.
  2. Sélectionnez l'instance.
  3. Accédez à Serveur > Journalisation.
  4. Sélectionnez le type de journal que vous souhaitez activer (par exemple, Journal d'audit).
  5. Activez le bouton de journalisation pour le type de journal sélectionné.
  6. Cliquez sur Save Log Settings (Enregistrer les paramètres des journaux).

Configurer rsyslog pour transférer les journaux de serveur d'annuaire à l'agent Bindplane

Red Hat Directory Server écrit les journaux dans des fichiers situés dans /var/log/dirsrv/slapd-instance_name/ plutôt que directement dans syslog. Utilisez le module rsyslog imfile pour surveiller ces fichiers journaux et transférer les entrées à l'agent BindPlane.

  1. Créez un nouveau fichier de configuration rsyslog pour le transfert des journaux de serveur d'annuaire :

    sudo nano /etc/rsyslog.d/rhds-forward.conf
    
  2. Ajoutez le contenu suivant au fichier de configuration :

    # Load the imfile module to read log files
    module(load="imfile" PollingInterval="10")
    
    # Monitor the access log
    input(type="imfile"
        File="/var/log/dirsrv/slapd-instance_name/access"
        Tag="dirsrv-access"
        Severity="info"
        Facility="local6")
    
    # Monitor the error log
    input(type="imfile"
        File="/var/log/dirsrv/slapd-instance_name/errors"
        Tag="dirsrv-errors"
        Severity="err"
        Facility="local6")
    
    # Monitor the audit log
    input(type="imfile"
        File="/var/log/dirsrv/slapd-instance_name/audit"
        Tag="dirsrv-audit"
        Severity="info"
        Facility="local6")
    
    # Monitor the security log
    input(type="imfile"
        File="/var/log/dirsrv/slapd-instance_name/security"
        Tag="dirsrv-security"
        Severity="info"
        Facility="local6")
    
    # Forward all Directory Server logs to the Bindplane agent
    local6.* @BINDPLANE_IP:514
    
  3. Vérifiez la syntaxe de configuration de rsyslog :

    sudo rsyslogd -N1
    
  4. Redémarrez le service rsyslog pour appliquer les modifications :

    sudo systemctl restart rsyslog
    
  5. Vérifiez que les journaux du serveur d'annuaire sont transférés en consultant les journaux de l'agent BindPlane :

    sudo journalctl -u observiq-otel-collector -f
    

Table de mappage UDM

Champ de journal Mappage UDM Logique
attrs_label about.labels Fusionné
cn_label about.labels Fusionné
conn_label about.labels Fusionné
csn_label about.labels Fusionné
err_label about.labels Fusionné
etime_label about.labels Fusionné
fd_label about.labels Fusionné
filter_label about.labels Fusionné
label about.labels Fusionné
method_label about.labels Fusionné
msgid_label about.labels Fusionné
name_label about.labels Fusionné
nentries_label about.labels Fusionné
offset_label about.labels Fusionné
op_label about.labels Fusionné
optime_label about.labels Fusionné
org_label about.labels Fusionné
ou_label about.labels Fusionné
scope_label about.labels Fusionné
slot_label about.labels Fusionné
tag_label about.labels Fusionné
targetop_label about.labels Fusionné
version_label about.labels Fusionné
wtime_label about.labels Fusionné
desc metadata.description Mappé directement
creationDate metadata.event_timestamp Analysé en tant que UNIX_MS
recordDate metadata.event_timestamp Analysé en tant que UNIX_MS
time metadata.event_timestamp Analysé en tant que dd/MMM/yyyy:HH:mm:ss Z
ts metadata.event_timestamp Analysé en tant que MMM d HH:mm:ss
operation metadata.product_event_type Mappage direct
mrId metadata.product_log_id Mappé directement
properties._ecs_agent_version metadata.product_version Mappé directement
host principal.asset.hostname Mappé directement
oid principal.asset.product_object_id Mappé directement
host principal.hostname Mappé directement
client_ip principal.ip Fusionné
namespace principal.namespace Mappé directement
user principal.user.userid Mappé directement
sec_result security_result Fusionné
properties._hostname target.asset.hostname Mappé directement
properties.host target.asset.hostname Mappé directement
properties._hostname target.hostname Mappé directement
properties.host target.hostname Mappé directement
target_ip target.ip Fusionné
properties.country target.location.country_or_region Mappé directement
properties._file_path target.process.file.full_path Mappage direct
properties._file_size target.process.file.size Renommé/Mappé
discipline_label target.resource.attribute.labels Fusionné
document_type_label target.resource.attribute.labels Fusionné
environment_label target.resource.attribute.labels Fusionné
hostgroup_label target.resource.attribute.labels Fusionné
platform_label target.resource.attribute.labels Fusionné
product_label target.resource.attribute.labels Fusionné
project_label target.resource.attribute.labels Fusionné
base target.user.group_identifiers Fusionné
dn target.user.group_identifiers Fusionné
N/A metadata.event_type Constante : NETWORK_CONNECTION
N/A metadata.product_name Constante : REDHAT_DIRECTORY_SERVER
N/A metadata.vendor_name Constante : REDHAT
N/A target.platform Constante : LINUX
properties._file_inode event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
properties._file_offset event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
conn event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
op event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
err event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
tag event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
nentries event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
wtime event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
optime event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
etime event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
csn event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
cn event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
ou event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
filter event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
attrs event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
scope event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
o event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
targetop event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
msgid event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
method event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
version event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
fd event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
slot event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
name event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
properties.discipline" ,"properties.document_type" ,"properties.environment" ,"properties.hostgroup" ,"properties.platform" ,"properties.product target.resource.attribute.labels Mappé à partir du journal des modifications

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.