Recopila registros de ManageEngine ADAudit Plus
En este documento, se explica cómo transferir registros de ManageEngine ADAudit Plus a Google Security Operations con un agente de Bindplane. El analizador controla los registros de ADAudit Plus y los convierte en formato UDM. Usa patrones de grok para extraer campos de SYSLOG (CEF) y mensajes con formato de par clave-valor, asignándolos a campos de la UDM según los tipos de eventos derivados de los perfiles de alertas y de informes, y enriqueciendo los datos con contexto adicional. El analizador también controla situaciones específicas, como fallas de acceso, cambios de usuario y modificaciones de archivos, y ajusta la asignación de la UDM según corresponda.
Antes de comenzar
- Asegúrate de tener una instancia de Google SecOps.
- Asegúrate de usar Windows 2016 o una versión posterior, o un host de Linux con
systemd
. - Si se ejecuta detrás de un proxy, asegúrate de que los puertos del firewall estén abiertos.
- Asegúrate de tener acceso con privilegios a ManageEngine ADAudit.
Obtén el archivo de autenticación de transferencia de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a Configuración de SIEM > Agentes de recopilación.
- Descarga el archivo de autenticación de transferencia. Guarda el archivo de forma segura en el sistema en el que se instalará Bindplane.
Obtén el ID de cliente de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a Configuración de SIEM > Perfil.
- Copia y guarda el ID de cliente de la sección Detalles de la organización.
Instala el agente de Bindplane
Instalación de Windows
- Abre el símbolo del sistema o PowerShell como administrador.
Ejecuta el siguiente comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Instalación de Linux
- Abre una terminal con privilegios de raíz o sudo.
Ejecuta el siguiente comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Recursos de instalación adicionales
- Para obtener más opciones de instalación, consulta esta guía de instalación.
Configura el agente de Bindplane para transferir Syslog y enviarlo a Google SecOps
Accede al archivo de configuración:
- Ubica el archivo
config.yaml
. Por lo general, se encuentra en el directorio/etc/bindplane-agent/
en Linux o en el directorio de instalación en Windows. - Abre el archivo con un editor de texto (por ejemplo,
nano
,vi
o Bloc de notas).
- Ubica el archivo
Edita el archivo
config.yaml
de la siguiente manera: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
Reemplaza el puerto y la dirección IP según sea necesario en tu infraestructura.
Reemplaza
<customer_id>
por el ID de cliente real.Actualiza
/path/to/ingestion-authentication-file.json
a la ruta de acceso en la que se guardó el archivo de autenticación en la sección Obtén el archivo de autenticación de transferencia de Google SecOps.
Reinicia el agente de Bindplane para aplicar los cambios.
Para reiniciar el agente de Bindplane en Linux, ejecuta el siguiente comando:
sudo systemctl restart bindplane-agent
Para reiniciar el agente de Bindplane en Windows, puedes usar la consola Services o ingresar el siguiente comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Cómo configurar el Syslog de ManageEngine ADAudit Plus
- Accede a la IU web de ManageEngine ADAudit Plus.
- Ve a Administrador > Configuración > Integración de SIEM.
- Selecciona Habilitar para enviar los registros de ADAudit Plus.
- Selecciona el formato ArcSight (CEF).
- Proporciona los siguientes detalles de configuración:
- Dirección IP: Es la dirección IP del agente de Bindplane.
- Puerto: Es el número de puerto de Bindplane; por ejemplo,
514
para UDP. - Tipo de destino: Selecciona UDP (también puedes seleccionar TCP, según la configuración de tu agente de Bindplane).
- Haz clic en Guardar.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
ACCOUNT_DOMAIN |
principal.administrative_domain |
El valor de ACCOUNT_DOMAIN del registro sin procesar se asigna a este campo de la AUA. |
ACCOUNT_NAME |
principal.user.userid |
El valor de ACCOUNT_NAME del registro sin procesar se asigna a este campo de la AUA. |
ALERT_PROFILE |
security_result.summary |
El valor de ALERT_PROFILE del registro sin procesar se asigna a este campo de la AUA. |
APPLICATION_NAME |
target.resource.name |
El valor de APPLICATION_NAME del registro sin procesar se asigna a este campo de la AUA. También establece target.resource.resource_type en TASK y has_target_resource en verdadero. |
CALLER_DISPLAY_NAME |
target.user.user_display_name |
El valor de CALLER_DISPLAY_NAME del registro sin procesar se asigna a este campo de la AUA. |
CALLER_USER_NAME |
target.user.userid |
El valor de CALLER_USER_NAME del registro sin procesar se asigna a este campo de la AUA. |
CALLER_USER_SID |
target.group.windows_sid |
El valor de CALLER_USER_SID del registro sin procesar se asigna a este campo de UDM después de quitar los caracteres [%,{,}] . Esto solo se hace si el valor coincide con un patrón de SID de Windows. |
Category |
metadata.product_event_type |
El valor de Category del registro sin procesar se asigna a este campo de la AUA. |
CLIENT_HOST_NAME |
target.hostname , target.asset.hostname |
El valor de CLIENT_HOST_NAME del registro sin procesar se asigna a estos campos de la AUA. |
CLIENT_IP_ADDRESS |
target.ip , target.asset.ip |
El valor de CLIENT_IP_ADDRESS del registro sin procesar se asigna a estos campos de la AUA después de validar que es una dirección IP válida. |
CLIENT_PORT |
target.port |
El valor de CLIENT_PORT del registro sin procesar se asigna a este campo de la AUA después de convertirlo en un número entero. |
DOMAIN |
target.administrative_domain |
El valor de DOMAIN del registro sin procesar se asigna a este campo de la AUA. Si está presente, ACCOUNT_DOMAIN podría reemplazar este valor más adelante. |
FILE_LOCATION |
target.file.full_path |
El valor de FILE_LOCATION del registro sin procesar se asigna a este campo de la AUA. |
FILE_NAME |
target.file.full_path |
El valor de FILE_NAME del registro sin procesar se asigna a este campo de la AUA si no está presente FILE_LOCATION . |
FORMAT_MESSAGE |
security_result.description |
El valor de FORMAT_MESSAGE del registro sin procesar se asigna a este campo de la AUA. Se pueden usar partes de este campo para propagar otros campos de la UDM y, luego, quitarlos de la descripción. |
IP |
principal.ip , principal.asset.ip |
El valor de IP del registro sin procesar se asigna a estos campos de la AUA después de validar que es una dirección IP válida. |
loggerHost |
intermediary.hostname , intermediary.asset.hostname |
El valor de loggerHost extraído del campo de mensaje del registro sin procesar se asigna a estos campos de la AUA. |
login_name |
target.user.userid o target.user.email_addresses o target.user.user_display_name |
Si el valor contiene @ , se trata como una dirección de correo electrónico. Si contiene espacios, se considera un nombre visible. De lo contrario, se considera un ID de usuario. También establece event_type en USER_LOGIN , extensions.auth.type en MACHINE y extensions.auth.mechanism en USERNAME_PASSWORD . |
RECORD_NUMBER |
principal.process.pid |
El valor de RECORD_NUMBER del registro sin procesar se asigna a este campo de la AUA. |
REPORT_PROFILE |
metadata.description |
El valor de REPORT_PROFILE del registro sin procesar se asigna a este campo de la AUA. |
SEVERITY |
security_result.severity |
El valor de SEVERITY determina el valor de este campo de la UDM: 1 se asigna a LOW, 2 a MEDIUM y 3 a HIGH. También establece is_significant en verdadero si SEVERITY es 3 y en falso de lo contrario. |
SOURCE |
principal.hostname , principal.asset.hostname |
El valor de SOURCE del registro sin procesar, combinado con DOMAIN si SOURCE no contiene una parte de dominio, se asigna a estos campos de la AUA. También establece has_principal_host como verdadero. |
TIME_GENERATED |
metadata.event_timestamp.seconds |
El valor de TIME_GENERATED del registro sin procesar se usa como la marca de tiempo del evento. |
UNIQUE_ID |
metadata.product_log_id |
El valor de UNIQUE_ID del registro sin procesar se asigna a este campo de la AUA. |
USERNAME |
principal.user.userid |
El valor de USERNAME del registro sin procesar se asigna a este campo de la AUA si no está presente ACCOUNT_NAME . |
USER_OU_GUID |
metadata.product_log_id |
El valor de USER_OU_GUID del registro sin procesar, después de quitar las llaves, se asigna a este campo de la AUA si no está presente UNIQUE_ID . |
access_mode |
security_result.detection_fields.value |
El valor de access_mode del registro sin procesar se asigna a este campo de la UDM, con la clave establecida en ACCESS_MODE . |
action_name |
security_result.description |
El valor de action_name del registro sin procesar se asigna a este campo de la AUA. |
domain_name |
principal.administrative_domain |
El valor de domain_name del registro sin procesar se asigna a este campo de la AUA. |
event.idm.is_alert |
event.idm.is_alert |
Se establece en verdadero si ALERT_PROFILE es Alert , User Account Locked Out o coincide con Unusual Activity.*? . De lo contrario, se establece como falso. |
event.idm.is_significant |
event.idm.is_significant |
Se establece en verdadero si SEVERITY es 3. De lo contrario, se establece como falso. |
event.idm.read_only_udm.extensions.auth.mechanism |
event.idm.read_only_udm.extensions.auth.mechanism |
Se establece en USERNAME_PASSWORD si login_name está presente o si event_type es USER_LOGIN . |
event.idm.read_only_udm.extensions.auth.type |
event.idm.read_only_udm.extensions.auth.type |
Se establece en MACHINE si login_name está presente o si event_type es USER_LOGIN . |
event.idm.read_only_udm.metadata.event_type |
event.idm.read_only_udm.metadata.event_type |
El analizador lo determina en función de los valores de ALERT_PROFILE , REPORT_PROFILE y FORMAT_MESSAGE . Puede ser uno de varios valores, incluidos 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 o STATUS_UPDATE . |
event.idm.read_only_udm.metadata.log_type |
event.idm.read_only_udm.metadata.log_type |
Siempre se establece en ADAUDIT_PLUS . |
event.idm.read_only_udm.metadata.product_name |
event.idm.read_only_udm.metadata.product_name |
Siempre se establece en ADAudit Plus . |
event.idm.read_only_udm.metadata.vendor_name |
event.idm.read_only_udm.metadata.vendor_name |
Siempre se establece en Zoho Corporation . |
host |
principal.hostname , principal.asset.hostname |
El valor de host del registro sin procesar se asigna a estos campos de la AUA. También establece has_principal_host como verdadero. |
intermediary.hostname , intermediary.asset.hostname |
intermediary.hostname , intermediary.asset.hostname |
Se establece en el valor de loggerHost . |
principalHost |
principal.hostname , principal.asset.hostname |
El valor de principalHost del registro sin procesar se asigna a estos campos de la UDM después de verificar si es una IP. También establece has_principal_host como verdadero. |
security_result.action |
security_result.action |
Se establece en ALLOW si outcome o msg_data_2 contiene Success , o si FORMAT_MESSAGE contiene Status:Success . Se establece en BLOCK si status contiene denied , locked out , incorrect , does not meet o Unable to validate . Se establece en BLOCK , si ALERT_PROFILE es Logon Failures for Admin Users . |
security_result.category |
security_result.category |
Se establece en POLICY_VIOLATION si event_type es USER_STATS o si ALERT_PROFILE es Logon Failures for Admin Users . |
security_result.rule_name |
security_result.rule_name |
Se extrae del campo FORMAT_MESSAGE si contiene Reason: . |
status |
security_result.summary |
El valor de status del registro sin procesar se asigna a este campo de la AUA. |
targetHost |
target.hostname , target.asset.hostname o target.ip , target.asset.ip |
El valor de targetHost del registro sin procesar se asigna a estos campos de la UDM después de verificar si es una IP. |
targetUser |
target.user.userid |
El valor de targetUser del registro sin procesar se asigna a este campo de la AUA. |
_CNtargetUser |
target.user.user_display_name |
El valor de _CNtargetUser del registro sin procesar se asigna a este campo de la AUA. |
_user |
principal.user.userid o target.user.userid |
El valor de _user del registro sin procesar se asigna a principal.user.userid , a menos que event_type sea USER_CHANGE_PASSWORD , en cuyo caso se asigna a target.user.userid . |
Cambios
2025-02-19
Mejora:
- Se asignaron
EVENT_NUMBER
,REMARKS
,EVENT_TYPE
,ATTRIBUTES_NEW_VALUE
,ATTRIBUTES_OLD_VALUE
yOPERATION_TYPE
aadditional.fields
. - Se asignó
EVENT_TYPE_TEXT
asecurity_result.detection_fields
. - Se asignó
ACCOUNT_NAME
aprincipal.user.user_display_name
.
2024-05-20
Mejora:
- Si el valor del campo
outcome
es similar aSuccess
, establecesecurity_result.action
enALLOW
. - Si el valor del campo
msg_data
es similar aSuccess
, establecesecurity_result.action
enALLOW
. - Se agregó un patrón Grok sobre
msg_data
para extraeract
,suid
yreason
. - Se asignó
msg_data
asecurity_result.description
. - Se asignaron
cs1
,cs3
,cs4
,cs5
,cn1
,cn2
ycn3
a "additional.fields
".
2024-01-19
Mejora:
- Se modificó un patrón de Grok para analizar registros sin analizar.
- Se asignó
IP
aprincipal.asset.ip
. - Se asignó
_PrincipalIP
aprincipal.asset.ip
. - Se asignó
host
aprincipal.asset.hostname
. - Se asignó
principalHost
aprincipal.asset.hostname
. - Se asignó
SOURCE
aprincipal.asset.hostname
. - Se asignó
_TargetIP
atarget.asset.ip
. - Se asignó
CLIENT_IP_ADDRESS
atarget.asset.hostname
. - Se asignó
CLIENT_HOST_NAME
atarget.asset.hostname
. - Se asignó
targetHost
atarget.asset.hostname
.
2023-10-17
Corrección de errores:
- Se agregó la verificación de IP antes de asignar
IP
aprincipal.ip
. - Se agregó la verificación de IP antes de asignar
CLIENT_IP_ADDRESS
atarget.ip
. - Se agregó la verificación de validación para
ACCOUNT_SID
antes de asignarlo aprincipal.group.windows_sid
. - Se agregó la verificación de validación para
CALLER_USER_SID
antes de asignarlo atarget.group.windows_sid
. - Cuando
principal
esté presente, estableceevent_type
comoSTATUS_UPDATE
. - Se modificó un patrón de Grok para analizar
file_path
a partir del nuevo patrón deFORMAT_MESSAGE
. - Se agregó una verificación de
has_target_resource
cuandoevent_type
esSCHEDULED_TASK_CREATION
.
2023-03-17
Mejora:
- Se admiten registros en formato CEF y se asignaron los siguientes campos:
IP
se asignó aprincipal.ip
.LOGIN NAME
se asignó atarget.user.userid or target.user.email_addresses or target.user.user_display_name
.DOMAIN NAME
se asignó aprincipal.administrative_domain
.HOST
se asignó aprincipal.hostname
.ACCESS_MODE
se asignó asecurity_result.detection_fields
.STATUS
se asignó asecurity_result.summary
.- Si
STATUS
essuccess
,security_result.action
se asigna aALLOW
. De lo contrario, siSTATUS
esdenied or incorrect
,security_result.action
se asigna aBLOCK
.
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.