收集 ManageEngine ADAudit Plus 日志

支持的平台:

本文档介绍了如何使用 Bindplane 代理将 ManageEngine ADAudit Plus 日志注入到 Google 安全运营中心。解析器会处理来自 ADAudit Plus 的日志,并将其转换为 UDM 格式。它使用 Grok 模式从 SYSLOG (CEF) 和键值对格式的消息中提取字段,并根据从提醒和报告配置文件派生的事件类型将其映射到 UDM 字段,还会使用其他情境信息来丰富数据。该解析器还会处理登录失败、用户更改和文件修改等特定场景,并相应地调整 UDM 映射。

准备工作

  • 确保您拥有 Google SecOps 实例。
  • 确保您使用的是 Windows 2016 或更高版本,或者使用了带有 systemd 的 Linux 主机。
  • 如果在代理后面运行,请确保防火墙端口处于打开状态。
  • 确保您对 ManageEngine ADAudit 拥有特权访问权限。

获取 Google SecOps 提取身份验证文件

  1. 登录 Google SecOps 控制台。
  2. 依次前往 SIEM 设置 > 收集代理
  3. 下载提取身份验证文件。将该文件安全地保存在将安装 BindPlane 的系统上。

获取 Google SecOps 客户 ID

  1. 登录 Google SecOps 控制台。
  2. 依次选择 SIEM 设置 > 配置文件
  3. 复制并保存组织详细信息部分中的客户 ID

安装 Bindplane 代理

Windows 安装

  1. 以管理员身份打开命令提示符PowerShell
  2. 运行以下命令:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Linux 安装

  1. 打开具有 root 或 sudo 权限的终端。
  2. 运行以下命令:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

其他安装资源

  • 如需了解其他安装选项,请参阅此安装指南

配置 Bindplane 代理以注入 Syslog 并将其发送到 Google SecOps

  1. 访问配置文件:

    1. 找到 config.yaml 文件。通常,在 Linux 上,该目录位于 /etc/bindplane-agent/ 目录中;在 Windows 上,该目录位于安装目录中。
    2. 使用文本编辑器(例如 nanovi 或记事本)打开该文件。
  2. 按如下方式修改 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
    
  3. 根据基础架构中的需要替换端口和 IP 地址。

  4. <customer_id> 替换为实际的客户 ID。

  5. 获取 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

  1. 登录 ManageEngine ADAudit Plus Web 界面。
  2. 依次前往管理 > 配置 > SIEM 集成
  3. 选择启用以发送 ADAudit Plus 日志。
  4. 选择 ArcSight (CEF) 格式。
  5. 提供以下配置详细信息:
    • IP 地址:绑定平面代理 IP 地址。
    • Port(端口):绑定平面端口号;例如,对于 UDP,为 514
    • 目标类型:选择 UDP(您也可以选择 TCP,具体取决于 Bindplane 代理配置)。
  6. 点击保存

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.hostnametarget.asset.hostname 系统会将原始日志中的 CLIENT_HOST_NAME 值分配给这些 UDM 字段。
CLIENT_IP_ADDRESS target.iptarget.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.ipprincipal.asset.ip 在验证原始日志中的 IP 值是有效的 IP 地址后,系统会将其分配给这些 UDM 字段。
loggerHost intermediary.hostnameintermediary.asset.hostname 系统会将从原始日志的消息字段中提取的 loggerHost 值分配给这些 UDM 字段。
login_name target.user.useridtarget.user.email_addressestarget.user.user_display_name 如果值包含 @,则系统会将其视为电子邮件地址。如果该字符串包含空格,则系统会将其视为显示名称。否则,系统会将其视为用户 ID。此外,将 event_type 设置为 USER_LOGINextensions.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.hostnameprincipal.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_PROFILEAlertUser 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_nameevent_typeUSER_LOGIN,则设置为 USERNAME_PASSWORD
event.idm.read_only_udm.extensions.auth.type event.idm.read_only_udm.extensions.auth.type 如果存在 login_nameevent_typeUSER_LOGIN,则设置为 MACHINE
event.idm.read_only_udm.metadata.event_type event.idm.read_only_udm.metadata.event_type 由解析器根据 ALERT_PROFILEREPORT_PROFILEFORMAT_MESSAGE 的值确定。可以是以下多个值之一,包括 USER_CHANGE_PERMISSIONSUSER_STATSUSER_LOGINUSER_CHANGE_PASSWORDSETTING_MODIFICATIONFILE_DELETIONFILE_MODIFICATIONSTATUS_SHUTDOWNSCHEDULED_TASK_CREATIONFILE_READNETWORK_CONNECTIONGENERIC_EVENTUSER_UNCATEGORIZEDSTATUS_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.hostnameprincipal.asset.hostname 系统会将原始日志中的 host 值分配给这些 UDM 字段。此外,还会将 has_principal_host 设置为 true。
intermediary.hostnameintermediary.asset.hostname intermediary.hostnameintermediary.asset.hostname 设置为 loggerHost 的值。
principalHost principal.hostnameprincipal.asset.hostname 系统会检查原始日志中的 principalHost 值是否为 IP 地址,然后将其分配给这些 UDM 字段。此外,还会将 has_principal_host 设置为 true。
security_result.action security_result.action 如果 outcomemsg_data_2 包含 Success,或者 FORMAT_MESSAGE 包含 Status:Success,则设置为 ALLOW。如果 status 包含 deniedlocked outincorrectdoes not meetUnable to validate,则设置为 BLOCK。如果 ALERT_PROFILELogon Failures for Admin Users,则设置为 BLOCK
security_result.category security_result.category 如果 event_typeUSER_STATSALERT_PROFILELogon 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.hostnametarget.asset.hostnametarget.iptarget.asset.ip 系统会检查原始日志中的 targetHost 值是否为 IP 地址,然后将其分配给这些 UDM 字段。
targetUser target.user.userid 系统会将原始日志中的 targetUser 值分配给此 UDM 字段。
_CNtargetUser target.user.user_display_name 系统会将原始日志中的 _CNtargetUser 值分配给此 UDM 字段。
_user principal.user.useridtarget.user.userid 除非 event_typeUSER_CHANGE_PASSWORD,否则原始日志中的 _user 值会分配给 principal.user.userid;如果 event_typeUSER_CHANGE_PASSWORD,则会分配给 target.user.userid

变化

2025-02-19

增强功能

  • EVENT_NUMBERREMARKSEVENT_TYPEATTRIBUTES_NEW_VALUEATTRIBUTES_OLD_VALUEOPERATION_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 模式,以提取 actsuidreason
  • msg_data 映射到 security_result.description
  • cs1cs3cs4cs5cn1cn2cn3 映射到 `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_typeSCHEDULED_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
  • 如果 STATUSsuccess,则 security_result.action 映射到 ALLOW;如果 STATUSdenied or incorrect,则 security_result.action 映射到 BLOCK

需要更多帮助?向社区成员和 Google SecOps 专业人士寻求解答。