Collecter les journaux LDAP du serveur d'annuaire Red Hat
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
rsysloginstallé 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.
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 (ancien)
- 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 un numéro client Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres 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 Linux en suivant les instructions ci-dessous.
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 la fin de l'installation.
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 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.yamlpar 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 :udplogpour syslog UDPtcplogpour syslog TCPsyslogpour le syslog RFC 3164/5424
0.0.0.0: adresse IP sur laquelle écouter :0.0.0.0pour é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édentelocation: 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.- Remplacez
creds_file_pathpar 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
- Linux :
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 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/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 surEnter, puis surCtrl+X.
- Linux : appuyez sur
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
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é.
- Ouvrez un terminal avec des droits root ou sudo sur l'hôte du serveur d'annuaire.
Activez le journal d'audit en exécutant la commande suivante :
dsconf -D "cn=Directory Manager" instance_name config replace nsslapd-auditlog-logging-enabled=onActivez 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=onVé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-enabledVé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
- Connectez-vous à la console Web Red Hat Directory Server.
- Sélectionnez l'instance.
- Accédez à Serveur > Journalisation.
- Sélectionnez le type de journal que vous souhaitez activer (par exemple, Journal d'audit).
- Activez le bouton de journalisation pour le type de journal sélectionné.
- 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.
Créez un nouveau fichier de configuration rsyslog pour le transfert des journaux de serveur d'annuaire :
sudo nano /etc/rsyslog.d/rhds-forward.confAjoutez 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:514Vérifiez la syntaxe de configuration de rsyslog :
sudo rsyslogd -N1Redémarrez le service rsyslog pour appliquer les modifications :
sudo systemctl restart rsyslogVé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.