收集 ManageEngine ADAudit Plus 日志
支持的平台:
Google SecOps
SIEM
本文档介绍了如何使用 Bindplane 代理将 ManageEngine ADAudit Plus 日志注入到 Google 安全运营中心。解析器会处理来自 ADAudit Plus 的日志,并将其转换为 UDM 格式。它使用 Grok 模式从 SYSLOG (CEF) 和键值对格式的消息中提取字段,并根据从提醒和报告配置文件派生的事件类型将其映射到 UDM 字段,还会使用其他情境信息来丰富数据。该解析器还会处理登录失败、用户更改和文件修改等特定场景,并相应地调整 UDM 映射。
准备工作
- 确保您拥有 Google SecOps 实例。
- 确保您使用的是 Windows 2016 或更高版本,或者使用了带有
systemd
的 Linux 主机。 - 如果在代理后面运行,请确保防火墙端口处于打开状态。
- 确保您对 ManageEngine ADAudit 拥有特权访问权限。
获取 Google SecOps 提取身份验证文件
- 登录 Google SecOps 控制台。
- 依次前往 SIEM 设置 > 收集代理。
- 下载提取身份验证文件。将该文件安全地保存在将安装 BindPlane 的系统上。
获取 Google SecOps 客户 ID
- 登录 Google SecOps 控制台。
- 依次选择 SIEM 设置 > 配置文件。
- 复制并保存组织详细信息部分中的客户 ID。
安装 Bindplane 代理
Windows 安装
- 以管理员身份打开命令提示符或 PowerShell。
运行以下命令:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Linux 安装
- 打开具有 root 或 sudo 权限的终端。
运行以下命令:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
其他安装资源
- 如需了解其他安装选项,请参阅此安装指南。
配置 Bindplane 代理以注入 Syslog 并将其发送到 Google SecOps
访问配置文件:
- 找到
config.yaml
文件。通常,在 Linux 上,该目录位于/etc/bindplane-agent/
目录中;在 Windows 上,该目录位于安装目录中。 - 使用文本编辑器(例如
nano
、vi
或记事本)打开该文件。
- 找到
按如下方式修改
config.yaml
文件: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
根据基础架构中的需要替换端口和 IP 地址。
将
<customer_id>
替换为实际的客户 ID。在获取 Google SecOps 提取身份验证文件部分中,将
/path/to/ingestion-authentication-file.json
更新为身份验证文件的保存路径。
重启 Bindplane 代理以应用更改
如需在 Linux 中重启 Bindplane 代理,请运行以下命令:
sudo systemctl restart bindplane-agent
如需在 Windows 中重启 Bindplane 代理,您可以使用服务控制台,也可以输入以下命令:
net stop BindPlaneAgent && net start BindPlaneAgent
配置 ManageEngine ADAudit Plus Syslog
- 登录 ManageEngine ADAudit Plus Web 界面。
- 依次前往管理 > 配置 > SIEM 集成。
- 选择启用以发送 ADAudit Plus 日志。
- 选择 ArcSight (CEF) 格式。
- 提供以下配置详细信息:
- IP 地址:绑定平面代理 IP 地址。
- Port(端口):绑定平面端口号;例如,对于 UDP,为
514
。 - 目标类型:选择 UDP(您也可以选择 TCP,具体取决于 Bindplane 代理配置)。
- 点击保存。
UDM 映射表
日志字段 | UDM 映射 | 逻辑 |
---|---|---|
ACCOUNT_DOMAIN |
principal.administrative_domain |
系统会将原始日志中的 ACCOUNT_DOMAIN 值分配给此 UDM 字段。 |
ACCOUNT_NAME |
principal.user.userid |
系统会将原始日志中的 ACCOUNT_NAME 值分配给此 UDM 字段。 |
ALERT_PROFILE |
security_result.summary |
系统会将原始日志中的 ALERT_PROFILE 值分配给此 UDM 字段。 |
APPLICATION_NAME |
target.resource.name |
系统会将原始日志中的 APPLICATION_NAME 值分配给此 UDM 字段。此外,还会将 target.resource.resource_type 设置为 TASK ,并将 has_target_resource 设置为 true。 |
CALLER_DISPLAY_NAME |
target.user.user_display_name |
系统会将原始日志中的 CALLER_DISPLAY_NAME 值分配给此 UDM 字段。 |
CALLER_USER_NAME |
target.user.userid |
系统会将原始日志中的 CALLER_USER_NAME 值分配给此 UDM 字段。 |
CALLER_USER_SID |
target.group.windows_sid |
移除字符 [%,{,}] 后,系统会将原始日志中的 CALLER_USER_SID 值分配给此 UDM 字段。只有当值与 Windows SID 模式匹配时,才会执行此操作。 |
Category |
metadata.product_event_type |
系统会将原始日志中的 Category 值分配给此 UDM 字段。 |
CLIENT_HOST_NAME |
target.hostname ,target.asset.hostname |
系统会将原始日志中的 CLIENT_HOST_NAME 值分配给这些 UDM 字段。 |
CLIENT_IP_ADDRESS |
target.ip ,target.asset.ip |
在验证原始日志中的 CLIENT_IP_ADDRESS 值是有效的 IP 地址后,系统会将其分配给这些 UDM 字段。 |
CLIENT_PORT |
target.port |
将原始日志中的 CLIENT_PORT 值转换为整数后,系统会将其分配给此 UDM 字段。 |
DOMAIN |
target.administrative_domain |
系统会将原始日志中的 DOMAIN 值分配给此 UDM 字段。此值稍后可能会被 ACCOUNT_DOMAIN (如果存在)覆盖。 |
FILE_LOCATION |
target.file.full_path |
系统会将原始日志中的 FILE_LOCATION 值分配给此 UDM 字段。 |
FILE_NAME |
target.file.full_path |
如果 FILE_LOCATION 不存在,则将原始日志中的 FILE_NAME 值分配给此 UDM 字段。 |
FORMAT_MESSAGE |
security_result.description |
系统会将原始日志中的 FORMAT_MESSAGE 值分配给此 UDM 字段。此字段的部分内容可能会用于填充其他 UDM 字段,然后从说明中移除。 |
IP |
principal.ip ,principal.asset.ip |
在验证原始日志中的 IP 值是有效的 IP 地址后,系统会将其分配给这些 UDM 字段。 |
loggerHost |
intermediary.hostname ,intermediary.asset.hostname |
系统会将从原始日志的消息字段中提取的 loggerHost 值分配给这些 UDM 字段。 |
login_name |
target.user.userid 、target.user.email_addresses 或 target.user.user_display_name |
如果值包含 @ ,则系统会将其视为电子邮件地址。如果该字符串包含空格,则系统会将其视为显示名称。否则,系统会将其视为用户 ID。此外,将 event_type 设置为 USER_LOGIN 、extensions.auth.type 设置为 MACHINE ,并将 extensions.auth.mechanism 设置为 USERNAME_PASSWORD 。 |
RECORD_NUMBER |
principal.process.pid |
系统会将原始日志中的 RECORD_NUMBER 值分配给此 UDM 字段。 |
REPORT_PROFILE |
metadata.description |
系统会将原始日志中的 REPORT_PROFILE 值分配给此 UDM 字段。 |
SEVERITY |
security_result.severity |
SEVERITY 的值决定了此 UDM 字段的值:1 映射到“低”,2 映射到“中”,3 映射到“高”。此外,如果 SEVERITY 为 3,则将 is_significant 设置为 true;否则,将其设置为 false。 |
SOURCE |
principal.hostname ,principal.asset.hostname |
系统会将原始日志中的 SOURCE 值(如果 SOURCE 不包含域名部分,则将 DOMAIN 添加到 SOURCE 中)分配给这些 UDM 字段。此外,还会将 has_principal_host 设置为 true。 |
TIME_GENERATED |
metadata.event_timestamp.seconds |
原始日志中的 TIME_GENERATED 值用作事件时间戳。 |
UNIQUE_ID |
metadata.product_log_id |
系统会将原始日志中的 UNIQUE_ID 值分配给此 UDM 字段。 |
USERNAME |
principal.user.userid |
如果 ACCOUNT_NAME 不存在,则将原始日志中的 USERNAME 值分配给此 UDM 字段。 |
USER_OU_GUID |
metadata.product_log_id |
如果不存在 UNIQUE_ID ,则将原始日志中的 USER_OU_GUID 值(移除大括号后)分配给此 UDM 字段。 |
access_mode |
security_result.detection_fields.value |
将原始日志中的 access_mode 值分配给此 UDM 字段,并将键设置为 ACCESS_MODE 。 |
action_name |
security_result.description |
系统会将原始日志中的 action_name 值分配给此 UDM 字段。 |
domain_name |
principal.administrative_domain |
系统会将原始日志中的 domain_name 值分配给此 UDM 字段。 |
event.idm.is_alert |
event.idm.is_alert |
如果 ALERT_PROFILE 为 Alert 、User Account Locked Out 或与 Unusual Activity.*? 匹配,则设置为 true。否则将其设置为 false。 |
event.idm.is_significant |
event.idm.is_significant |
如果 SEVERITY 为 3,则设置为 true。否则将其设置为 false。 |
event.idm.read_only_udm.extensions.auth.mechanism |
event.idm.read_only_udm.extensions.auth.mechanism |
如果存在 login_name 或 event_type 为 USER_LOGIN ,则设置为 USERNAME_PASSWORD 。 |
event.idm.read_only_udm.extensions.auth.type |
event.idm.read_only_udm.extensions.auth.type |
如果存在 login_name 或 event_type 为 USER_LOGIN ,则设置为 MACHINE 。 |
event.idm.read_only_udm.metadata.event_type |
event.idm.read_only_udm.metadata.event_type |
由解析器根据 ALERT_PROFILE 、REPORT_PROFILE 和 FORMAT_MESSAGE 的值确定。可以是以下多个值之一,包括 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 或 STATUS_UPDATE 。 |
event.idm.read_only_udm.metadata.log_type |
event.idm.read_only_udm.metadata.log_type |
一律设置为 ADAUDIT_PLUS |
event.idm.read_only_udm.metadata.product_name |
event.idm.read_only_udm.metadata.product_name |
一律设置为 ADAudit Plus |
event.idm.read_only_udm.metadata.vendor_name |
event.idm.read_only_udm.metadata.vendor_name |
一律设置为 Zoho Corporation |
host |
principal.hostname ,principal.asset.hostname |
系统会将原始日志中的 host 值分配给这些 UDM 字段。此外,还会将 has_principal_host 设置为 true。 |
intermediary.hostname ,intermediary.asset.hostname |
intermediary.hostname ,intermediary.asset.hostname |
设置为 loggerHost 的值。 |
principalHost |
principal.hostname ,principal.asset.hostname |
系统会检查原始日志中的 principalHost 值是否为 IP 地址,然后将其分配给这些 UDM 字段。此外,还会将 has_principal_host 设置为 true。 |
security_result.action |
security_result.action |
如果 outcome 或 msg_data_2 包含 Success ,或者 FORMAT_MESSAGE 包含 Status:Success ,则设置为 ALLOW 。如果 status 包含 denied 、locked out 、incorrect 、does not meet 或 Unable to validate ,则设置为 BLOCK 。如果 ALERT_PROFILE 为 Logon Failures for Admin Users ,则设置为 BLOCK 。 |
security_result.category |
security_result.category |
如果 event_type 为 USER_STATS 或 ALERT_PROFILE 为 Logon Failures for Admin Users ,则设置为 POLICY_VIOLATION 。 |
security_result.rule_name |
security_result.rule_name |
从 FORMAT_MESSAGE 字段中提取(如果该字段包含 Reason: )。 |
status |
security_result.summary |
系统会将原始日志中的 status 值分配给此 UDM 字段。 |
targetHost |
target.hostname 、target.asset.hostname 或 target.ip 、target.asset.ip |
系统会检查原始日志中的 targetHost 值是否为 IP 地址,然后将其分配给这些 UDM 字段。 |
targetUser |
target.user.userid |
系统会将原始日志中的 targetUser 值分配给此 UDM 字段。 |
_CNtargetUser |
target.user.user_display_name |
系统会将原始日志中的 _CNtargetUser 值分配给此 UDM 字段。 |
_user |
principal.user.userid 或 target.user.userid |
除非 event_type 为 USER_CHANGE_PASSWORD ,否则原始日志中的 _user 值会分配给 principal.user.userid ;如果 event_type 为 USER_CHANGE_PASSWORD ,则会分配给 target.user.userid 。 |
变化
2025-02-19
增强功能:
- 将
EVENT_NUMBER
、REMARKS
、EVENT_TYPE
、ATTRIBUTES_NEW_VALUE
、ATTRIBUTES_OLD_VALUE
和OPERATION_TYPE
映射到additional.fields
。 - 将
EVENT_TYPE_TEXT
映射到security_result.detection_fields
。 - 将
ACCOUNT_NAME
映射到principal.user.user_display_name
。
2024-05-20
增强功能:
- 如果字段
outcome
的值与Success
类似,请将security_result.action
设置为ALLOW
。 - 如果字段
msg_data
的值与Success
类似,请将security_result.action
设置为ALLOW
。 - 在
msg_data
上添加了 Grok 模式,以提取act
、suid
和reason
。 - 将
msg_data
映射到security_result.description
。 - 将
cs1
、cs3
、cs4
、cs5
、cn1
、cn2
和cn3
映射到 `additional.fields
。
2024-01-19
增强功能:
- 修改了 Grok 模式,以解析未解析的日志。
- 将
IP
映射到principal.asset.ip
。 - 将
_PrincipalIP
映射到principal.asset.ip
。 - 将
host
映射到principal.asset.hostname
。 - 将
principalHost
映射到principal.asset.hostname
。 - 将
SOURCE
映射到principal.asset.hostname
。 - 将
_TargetIP
映射到target.asset.ip
。 - 将
CLIENT_IP_ADDRESS
映射到target.asset.hostname
。 - 将
CLIENT_HOST_NAME
映射到target.asset.hostname
。 - 将
targetHost
映射到target.asset.hostname
。
2023-10-17
bug 修复:
- 在将
IP
映射到principal.ip
之前添加了 IP 检查。 - 在将
CLIENT_IP_ADDRESS
映射到target.ip
之前添加了 IP 检查。 - 在映射到
principal.group.windows_sid
之前添加了对ACCOUNT_SID
的验证检查。 - 在映射到
target.group.windows_sid
之前添加了对CALLER_USER_SID
的验证检查。 - 如果存在
principal
,请将event_type
设置为STATUS_UPDATE
。 - 修改了 Grok 模式,以便根据新模式
FORMAT_MESSAGE
解析file_path
。 - 添加了当
event_type
为SCHEDULED_TASK_CREATION
时对has_target_resource
的检查。
2023-03-17
增强功能:
- 支持 CEF 格式日志并映射了以下字段:
IP
已映射到principal.ip
。LOGIN NAME
已映射到target.user.userid or target.user.email_addresses or target.user.user_display_name
。DOMAIN NAME
已映射到principal.administrative_domain
。HOST
已映射到principal.hostname
。ACCESS_MODE
已映射到security_result.detection_fields
。STATUS
已映射到security_result.summary
。- 如果
STATUS
为success
,则security_result.action
映射到ALLOW
;如果STATUS
为denied or incorrect
,则security_result.action
映射到BLOCK
。
需要更多帮助?向社区成员和 Google SecOps 专业人士寻求解答。