收集 ManageEngine ADAudit Plus 日志
本文档介绍了如何使用 Bindplane 代理将 ManageEngine ADAudit Plus 日志注入到 Google Security Operations 中。解析器会处理来自 ADAudit Plus 的日志,并将其转换为 UDM 格式。它使用 grok 模式从 SYSLOG (CEF) 和键值格式的消息中提取字段,根据从提醒和报告配置文件中派生的事件类型将这些字段映射到 UDM 字段,并使用其他上下文丰富数据。解析器还会处理登录失败、用户更改和文件修改等特定场景,并相应地调整 UDM 映射。
准备工作
- 确保您拥有 Google SecOps 实例。
- 确保您使用的是 Windows 2016 或更高版本,或者具有
systemd的 Linux 主机。 - 如果通过代理运行,请确保防火墙 端口 处于打开状态。
- 确保您对 ManageEngine ADAudit 具有特权访问权限。
获取 Bindplane 代理的 Google SecOps 凭据
如需向 Google SecOps 验证 Bindplane 代理的身份,请选择以下方法之一:
- 新部署:使用 Chronicle API(方法 1)。
- 旧版部署:继续使用注入身份验证文件(方法 2),直到注入 API 于 2027 年 7 月 20 日停用为止。
方法 1:为 Chronicle API 创建服务帐号(推荐)
- 登录 Google Cloud 控制台,然后选择与您的 Google SecOps 实例关联的 Google Cloud 项目。
- 依次前往 IAM 和管理 > 服务账号。
- 点击创建服务账号 。
- 提供以下配置详细信息:
- 服务账号名称:输入账号的名称(例如
bindplane-ingest)。 - 服务账号说明:输入说明(例如
Bindplane agent log ingestion)。
- 服务账号名称:输入账号的名称(例如
- 点击创建并继续 。
- 在向此服务帐号授予对项目的访问权限 部分,点击选择角色 ,然后选择 Chronicle Editor 。
- 点击继续 ,然后点击完成 。
- 点击您创建的服务帐号,然后前往密钥 标签页。
- 依次点击添加密钥 > 创建新密钥。
- 选择 JSON ,然后点击创建 。密钥文件会下载到您的计算机上。
- 将密钥文件另存为 Bindplane 收集器目录中的
ingestion-auth.json(在 Linux 上为/opt/observiq-otel-collector/ingestion-auth.json,在 Windows 上为C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json),或者更新creds_file_path在config.yaml中以与您保存该文件的路径匹配。 - 依次前往 IAM 和管理 > 设置 ,然后复制项目编号 。您需要此编号进行导出器配置。
方法 2:下载注入身份验证文件(旧版)
- 登录 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 安装
- 打开具有根权限或 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 上的/opt/observiq-otel-collector/目录或 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: 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 # 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: chronicle.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 地址。
将
<LOCATION>替换为 Google SecOps 实例的区域(例如us、europe或asia-southeast1)。导出器会使用此值为chronicle.googleapis.com添加前缀。将
<PROJECT_NUMBER>替换为 IAM 和管理 > 设置 中的项目编号。将
<customer_id>替换为实际客户 ID。将
/path/to/ingestion-authentication-file.json更新为在 获取 Bindplane 代理的 Google SecOps 凭据 部分中保存服务帐号密钥文件(方法 1)的路径。
旧版注入 API 导出器
如果您使用方法 2 中的注入身份验证文件,请将
exporters代码块替换为以下内容。将creds设置为注入身份验证文件的路径,如果您的实例位于美国境外,请将malachiteingestion-pa.googleapis.com替换为您的 区域端点(例如europe-malachiteingestion-pa.googleapis.com)。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
重启 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 地址:Bindplane 代理 IP 地址。
- 端口:Bindplane 端口号;例如,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 映射到 LOW,2 映射到 MEDIUM,3 映射到 HIGH。 |
SOURCE |
principal.hostname、principal.asset.hostname |
原始日志中的 SOURCE 值(如果 SOURCE 不包含网域部分,则与 DOMAIN 组合)会分配给这些 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.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 |
原始日志中的 _user 值会分配给 principal.user.userid,除非 event_type 为 USER_CHANGE_PASSWORD,在这种情况下,该值会分配给 target.user.userid。 |
更新日志
需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。