收集 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 的特权访问权限。

获取 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. /path/to/ingestion-authentication-file.json 更新为获取 Google SecOps 提取身份验证文件部分中保存身份验证文件的路径。

重启 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 地址:Bindplane 代理 IP 地址。
    • 端口:Bindplane 端口号;例如,514 表示 UDP。
    • 目标类型:选择 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 设置为 MACHINEextensions.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.hostnameprincipal.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 如果原始日志中 USER_OU_GUID 的值(在移除大括号后)不包含 UNIQUE_ID,则将其分配给此 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_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 原始日志中的 _user 值会分配给 principal.user.userid,除非 event_typeUSER_CHANGE_PASSWORD,在这种情况下,该值会分配给 target.user.userid

需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。