Collecter les journaux ManageEngine ADAudit Plus
Ce document explique comment ingérer des journaux ManageEngine ADAudit Plus dans Google Security Operations à l'aide d'un agent Bindplane. L'analyseur gère les journaux d'ADAudit Plus et les convertit au format UDM. Il utilise des modèles Grok pour extraire des champs à partir de messages au format SYSLOG (CEF) et clé-valeur, en les mappant sur des champs UDM en fonction des types d'événements dérivés des profils d'alertes et de rapports, et en enrichissant les données avec un contexte supplémentaire. L'analyseur gère également des scénarios spécifiques tels que les échecs de connexion, les changements d'utilisateur et les modifications de fichiers, en ajustant le mappage UDM en conséquence.
Avant de commencer
- Assurez-vous de disposer d'une instance Google SecOps.
- Assurez-vous d'utiliser Windows 2016 ou une version ultérieure, ou un hôte Linux avec
systemd
. - Si vous exécutez le programme derrière un proxy, assurez-vous que les ports du pare-feu sont ouverts.
- Assurez-vous de disposer d'un accès privilégié à ManageEngine ADAudit.
Obtenir le fichier d'authentification d'ingestion Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres du 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 sur lequel Bindplane sera installé.
Obtenir l'ID client Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres SIEM> Profil.
- Copiez et enregistrez le numéro client de la section Informations sur l'organisation.
Installer l'agent Bindplane
Installation de fenêtres
- Ouvrez l'invite de commandes 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" /quiet
Installation de Linux
- Ouvrez un terminal avec les droits 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.sh
Ressources d'installation supplémentaires
- Pour plus d'options d'installation, consultez ce guide d'installation.
Configurer l'agent Bindplane pour ingérer Syslog et l'envoyer à Google SecOps
Accédez au fichier de configuration :
- Recherchez le fichier
config.yaml
. En règle générale, il se trouve dans le répertoire/etc/bindplane-agent/
sous Linux ou dans le répertoire d'installation sous Windows. - Ouvrez le fichier à l'aide d'un éditeur de texte (par exemple,
nano
,vi
ou le Bloc-notes).
- Recherchez le fichier
Modifiez le fichier
config.yaml
comme suit :receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization ingestion_labels: log_type: ADAUDIT_PLUS raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
Remplacez le port et l'adresse IP selon les besoins de votre infrastructure.
Remplacez
<customer_id>
par le numéro client réel.Mettez à jour
/path/to/ingestion-authentication-file.json
en indiquant le chemin d'accès où le fichier d'authentification a été enregistré dans la section Obtenir le fichier d'authentification pour l'ingestion Google SecOps.
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 bindplane-agent
Pour redémarrer l'agent Bindplane sous Windows, vous pouvez utiliser la console Services ou saisir la commande suivante :
net stop BindPlaneAgent && net start BindPlaneAgent
Configurer ManageEngine ADAudit Plus Syslog
- Connectez-vous à l'interface utilisateur Web ManageEngine ADAudit Plus.
- Accédez à Admin > Configuration > Intégration SIEM.
- Sélectionnez Activer pour envoyer les journaux ADAudit Plus.
- Sélectionnez le format ArcSight (CEF).
- Fournissez les informations de configuration suivantes :
- Adresse IP : adresse IP de l'agent Bindplane.
- Port : numéro de port Bindplane, par exemple
514
pour UDP. - Type de cible : sélectionnez UDP (vous pouvez également sélectionner TCP, en fonction de la configuration de votre agent Bindplane).
- Cliquez sur Enregistrer.
Table de mappage UDM
Champ de journal | Mappage UDM | Logique |
---|---|---|
ACCOUNT_DOMAIN |
principal.administrative_domain |
La valeur de ACCOUNT_DOMAIN du journal brut est attribuée à ce champ UDM. |
ACCOUNT_NAME |
principal.user.userid |
La valeur de ACCOUNT_NAME du journal brut est attribuée à ce champ UDM. |
ALERT_PROFILE |
security_result.summary |
La valeur de ALERT_PROFILE du journal brut est attribuée à ce champ UDM. |
APPLICATION_NAME |
target.resource.name |
La valeur de APPLICATION_NAME du journal brut est attribuée à ce champ UDM. Définit également target.resource.resource_type sur TASK et has_target_resource sur "true". |
CALLER_DISPLAY_NAME |
target.user.user_display_name |
La valeur de CALLER_DISPLAY_NAME du journal brut est attribuée à ce champ UDM. |
CALLER_USER_NAME |
target.user.userid |
La valeur de CALLER_USER_NAME du journal brut est attribuée à ce champ UDM. |
CALLER_USER_SID |
target.group.windows_sid |
La valeur CALLER_USER_SID du journal brut est attribuée à ce champ UDM après suppression des caractères [%,{,}] . Cette opération n'est effectuée que si la valeur correspond à un modèle SID Windows. |
Category |
metadata.product_event_type |
La valeur de Category du journal brut est attribuée à ce champ UDM. |
CLIENT_HOST_NAME |
target.hostname , target.asset.hostname |
La valeur de CLIENT_HOST_NAME du journal brut est attribuée à ces champs UDM. |
CLIENT_IP_ADDRESS |
target.ip , target.asset.ip |
La valeur de CLIENT_IP_ADDRESS du journal brut est attribuée à ces champs UDM après avoir vérifié qu'il s'agit d'une adresse IP valide. |
CLIENT_PORT |
target.port |
La valeur de CLIENT_PORT du journal brut est attribuée à ce champ UDM après avoir été convertie en entier. |
DOMAIN |
target.administrative_domain |
La valeur de DOMAIN du journal brut est attribuée à ce champ UDM. Cette valeur peut être remplacée ultérieurement par ACCOUNT_DOMAIN , le cas échéant. |
FILE_LOCATION |
target.file.full_path |
La valeur de FILE_LOCATION du journal brut est attribuée à ce champ UDM. |
FILE_NAME |
target.file.full_path |
La valeur de FILE_NAME du journal brut est attribuée à ce champ UDM si FILE_LOCATION n'est pas présent. |
FORMAT_MESSAGE |
security_result.description |
La valeur de FORMAT_MESSAGE du journal brut est attribuée à ce champ UDM. Certaines parties de ce champ peuvent être utilisées pour renseigner d'autres champs UDM, puis supprimées de la description. |
IP |
principal.ip , principal.asset.ip |
La valeur de IP du journal brut est attribuée à ces champs UDM après avoir vérifié qu'il s'agit d'une adresse IP valide. |
loggerHost |
intermediary.hostname , intermediary.asset.hostname |
La valeur de loggerHost extraite du champ de message du journal brut est attribuée à ces champs UDM. |
login_name |
target.user.userid , target.user.email_addresses ou target.user.user_display_name |
Si la valeur contient @ , elle est traitée comme une adresse e-mail. S'il contient des espaces, il est traité comme un nom à afficher. Dans le cas contraire, il est traité comme un ID utilisateur. Définit également event_type sur USER_LOGIN , extensions.auth.type sur MACHINE et extensions.auth.mechanism sur USERNAME_PASSWORD . |
RECORD_NUMBER |
principal.process.pid |
La valeur de RECORD_NUMBER du journal brut est attribuée à ce champ UDM. |
REPORT_PROFILE |
metadata.description |
La valeur de REPORT_PROFILE du journal brut est attribuée à ce champ UDM. |
SEVERITY |
security_result.severity |
La valeur de SEVERITY détermine la valeur de ce champ UDM : 1 correspond à "LOW", 2 à "MEDIUM" et 3 à "HIGH". |
SOURCE |
principal.hostname , principal.asset.hostname |
La valeur de SOURCE du journal brut, combinée à DOMAIN si SOURCE ne contient pas de partie de domaine, est attribuée à ces champs UDM. Définit également has_principal_host sur "true". |
TIME_GENERATED |
metadata.event_timestamp.seconds |
La valeur de TIME_GENERATED du journal brut est utilisée comme code temporel de l'événement. |
UNIQUE_ID |
metadata.product_log_id |
La valeur de UNIQUE_ID du journal brut est attribuée à ce champ UDM. |
USERNAME |
principal.user.userid |
La valeur de USERNAME du journal brut est attribuée à ce champ UDM si ACCOUNT_NAME n'est pas présent. |
USER_OU_GUID |
metadata.product_log_id |
La valeur de USER_OU_GUID du journal brut, après suppression des accolades, est attribuée à ce champ UDM si UNIQUE_ID n'est pas présent. |
access_mode |
security_result.detection_fields.value |
La valeur de access_mode du journal brut est attribuée à ce champ UDM, avec la clé définie sur ACCESS_MODE . |
action_name |
security_result.description |
La valeur de action_name du journal brut est attribuée à ce champ UDM. |
domain_name |
principal.administrative_domain |
La valeur de domain_name du journal brut est attribuée à ce champ UDM. |
event.idm.read_only_udm.extensions.auth.mechanism |
event.idm.read_only_udm.extensions.auth.mechanism |
Définie sur USERNAME_PASSWORD si login_name est présent ou si event_type est USER_LOGIN . |
event.idm.read_only_udm.extensions.auth.type |
event.idm.read_only_udm.extensions.auth.type |
Définie sur MACHINE si login_name est présent ou si event_type est USER_LOGIN . |
event.idm.read_only_udm.metadata.event_type |
event.idm.read_only_udm.metadata.event_type |
Déterminé par l'analyseur en fonction des valeurs de ALERT_PROFILE , REPORT_PROFILE et FORMAT_MESSAGE . Il peut s'agir de l'une des valeurs suivantes : USER_CHANGE_PERMISSIONS , USER_STATS , USER_LOGIN , USER_CHANGE_PASSWORD , SETTING_MODIFICATION , FILE_DELETION , FILE_MODIFICATION , STATUS_SHUTDOWN , SCHEDULED_TASK_CREATION , FILE_READ , NETWORK_CONNECTION , GENERIC_EVENT , USER_UNCATEGORIZED ou STATUS_UPDATE . |
event.idm.read_only_udm.metadata.log_type |
event.idm.read_only_udm.metadata.log_type |
Toujours défini sur ADAUDIT_PLUS . |
event.idm.read_only_udm.metadata.product_name |
event.idm.read_only_udm.metadata.product_name |
Toujours défini sur ADAudit Plus . |
event.idm.read_only_udm.metadata.vendor_name |
event.idm.read_only_udm.metadata.vendor_name |
Toujours défini sur Zoho Corporation . |
host |
principal.hostname , principal.asset.hostname |
La valeur de host du journal brut est attribuée à ces champs UDM. Définit également has_principal_host sur "true". |
intermediary.hostname , intermediary.asset.hostname |
intermediary.hostname , intermediary.asset.hostname |
Définissez la valeur sur loggerHost . |
principalHost |
principal.hostname , principal.asset.hostname |
La valeur principalHost du journal brut est attribuée à ces champs UDM après vérification de l'adresse IP. Définit également has_principal_host sur "true". |
security_result.action |
security_result.action |
Définie sur ALLOW si outcome ou msg_data_2 contient Success , ou si FORMAT_MESSAGE contient Status:Success . Définissez sur BLOCK si status contient denied , locked out , incorrect , does not meet ou Unable to validate . Définie sur BLOCK , si ALERT_PROFILE est Logon Failures for Admin Users . |
security_result.category |
security_result.category |
Définie sur POLICY_VIOLATION si event_type est USER_STATS ou si ALERT_PROFILE est Logon Failures for Admin Users . |
security_result.rule_name |
security_result.rule_name |
Extrait du champ FORMAT_MESSAGE s'il contient Reason: . |
status |
security_result.summary |
La valeur de status du journal brut est attribuée à ce champ UDM. |
targetHost |
target.hostname , target.asset.hostname ou target.ip , target.asset.ip |
La valeur targetHost du journal brut est attribuée à ces champs UDM après vérification de l'adresse IP. |
targetUser |
target.user.userid |
La valeur de targetUser du journal brut est attribuée à ce champ UDM. |
_CNtargetUser |
target.user.user_display_name |
La valeur de _CNtargetUser du journal brut est attribuée à ce champ UDM. |
_user |
principal.user.userid ou target.user.userid |
La valeur de _user du journal brut est attribuée à principal.user.userid , sauf si event_type est défini sur USER_CHANGE_PASSWORD , auquel cas elle est attribuée à target.user.userid . |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.