使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

收集 Microsoft Windows AD 数据

此文档包含以下信息:

  • 部署架构和安装步骤,以及生成 Microsoft Windows Active Directory 事件的 Chronicle 解析器支持的日志所需的任何配置。如需简要了解 Chronicle 数据注入,请参阅将数据注入到 Chronicle
  • 有关解析器如何将原始日志中的字段映射到 Chronicle Unified Data Model 字段的信息。

本文档中的信息适用于具有 WINDOWS_AD 注入标签的解析器。注入标签标识哪个解析器将原始日志数据标准化为结构化 UDM 格式。

准备工作

下图演示了部署架构中用于收集 Microsoft Windows 事件并将其发送到 Chronicle 的推荐基础组件。将此信息与您的环境进行比较,以确保已安装这些组件。每个客户部署都与此表示法不同,并且可能更复杂。以下是必须满足的条件:

  • 部署架构中的所有系统都使用世界协调时间 (UTC) 时区进行配置。
  • 在每个 Microsoft Windows AD 服务器上创建并配置 Powershell 脚本以收集 USER_CONTEXT 和 ASSET_CONTEXT 数据。
  • 每个 Microsoft Windows AD 服务器上安装了 NXLog,用于将数据发送到中央 Microsoft Windows 或 Linux 服务器。
  • Chronicle 转发器安装在中央 Microsoft Windows 或 Linux 服务器上,用于将日志数据转发到 Chronicle。

    部署架构

查看支持的设备和版本

Chronicle 解析器支持来自以下 Microsoft Windows 服务器版本的日志。Microsoft Windows Server 按以下版本发布:Foundation、Essentials、Standard 和 Datacenter。每个版本生成的日志事件架构没有区别。

  • Microsoft Windows Server 2019
  • Microsoft Windows Server 2016
  • Microsoft Windows Server 2012

Chronicle 解析器支持 NXLog Community 或 Enterprise Edition 收集的日志。

查看支持的日志类型

Chronicle 解析器将解析从用户上下文资源上下文中检索的数据并对其进行标准化。它支持使用英语文本生成的日志,不支持使用非英语生成的日志。

配置 Microsoft Windows AD 服务器

在部署架构中配置 Microsoft Windows AD 服务器的步骤:

  1. 使用世界协调时间 (UTC) 时区配置所有系统。
  2. 在每个 Microsoft Windows Active Directory 服务器上,创建并配置 PowerShell 脚本以将日志数据收集到输出文件。NXLog 会读取输出文件并将数据发送到中央 Microsoft Windows 或 Linux 服务器。
  3. 创建 Powershell 脚本。请参阅以下示例。将 $OUTPUT_FILENAME 的值更改为应写入输出文件的位置。NXLog 将读取此文件。数据必须以 JSON 格式存储。将编码设置为 utf8。调用 Get-ADUserGet-ADComputer cmdlet 时,请使用 -Filter 参数,而不是 -LDAPFilter 参数。

    # Set the location where the log file will be written
    $OUTPUT_FILENAME="<Path_of_the_output_file>"
    
    If (Test-Path -Path $OUTPUT_FILENAME) { Remove-Item -path $OUTPUT_FILENAME -ErrorAction SilentlyContinue}
    
    # USER_CONTEXT: Gets all Active Directory users and their properties.
    Get-ADUser -Filter * -properties samAccountName | % { Get-ADUser $_.SamAccountName -properties * | ConvertTo-JSON -compress | Out-File -encoding utf8 $OUTPUT_FILENAME -Append }
    
    # ASSET_CONTEXT: Gets all Active Directory assets and their properties.
    Get-ADComputer -Filter * -properties samAccountName | % { Get-ADComputer $_.SamAccountName -properties * | ConvertTo-JSON -compress | Out-File -encoding utf8 $OUTPUT_FILENAME -Append }
    
  4. 创建运行脚本的周期性任务,以将数据提取并写入到输出文件。

    1. 打开“任务计划程序”应用。
    2. 点击右侧面板上的“创建任务”。
    3. 输入任务的名称和说明。
    4. 选中“Run with highest privileges”(以最高权限运行)复选框,以确保检索所有数据。创建任务

    5. 在“触发器”标签页中,定义何时希望重复执行该任务。

    6. 在“操作”标签页中,添加新操作,并提供存储该脚本的文件的路径。创建时间表

  5. 在每个 Microsoft Windows Active Directory 服务器上安装 NXLog 代理。该应用会将日志转发到中央 Microsoft Windows 或 Linux 服务器。按照 NXLog 文档进行操作。

  6. 为每个 NXLog 实例创建一个配置文件。使用 NXLog im_file 模块从文件中读取内容并将行解析为字段。使用 om_tcp 模块将数据转发到中央 Microsoft Windows 或 Linux 服务器。

    以下是 NXLog 配置示例。将 <hostname><port> 值替换为目标中央 Microsoft Windows 或 Linux 服务器的信息。在 <Input in_adcontext> 部分和 File 属性中,添加由 Powershell 脚本写入的输出日志文件的路径。始终设置 DirCheckIntervalPollInterval。如果未定义,则 NXLog 每 1 秒轮询一次文件。

    define ROOT C:\Program Files\nxlog
    define ADCONTEXT_OUTPUT_DESTINATION_ADDRESS <hostname>
    define ADCONTEXT_OUTPUT_DESTINATION_PORT <port>
    
    Moduledir   %ROOT%\modules
    CacheDir    %ROOT%\data
    Pidfile     %ROOT%\data\nxlog.pid
    SpoolDir    %ROOT%\data
    LogFile     %ROOT%\data\nxlog.log
    
    <Input in_adcontext>
        Module im_file
        File "<Path_of_the_output_file>"
        DirCheckInterval 3600
        PollInterval 3600
    </Input>
    
    <Output out_chronicle_adcontext>
        Module  om_tcp
        Host    %ADCONTEXT_OUTPUT_DESTINATION_ADDRESS%
        Port    %ADCONTEXT_OUTPUT_DESTINATION_PORT%
    </Output>
    
    <Route ad_context_to_chronicle>
        Path in_adcontext => out_chronicle_adcontext
    </Route>
    
  7. 在每个系统中启动 NXLog 服务。

配置中央 Microsoft Windows 或 Linux 服务器

如需了解如何安装和配置转发器,请参阅在 Linux 上安装和配置转发器在 Microsoft Windows 上安装和配置转发器

  1. 使用世界协调时间 (UTC) 时区配置系统。
  2. 在中央 Microsoft Windows 或 Linux 服务器上安装 Chronicle 转发器。
  3. 配置 Chronicle 转发器,以将日志发送到 Chronicle。以下是转发器配置示例。

      - syslog:
          common:
            enabled: true
            data_type: WINDOWS_AD
            batch_n_seconds: 10
            batch_n_bytes: 1048576
          tcp_address: 0.0.0.0:10518
          connection_timeout_sec: 60
    

字段映射参考信息:设备日志字段到 UDM 字段

本部分介绍解析器如何将原始日志字段映射到 Unified Data Model 字段。

用户上下文日志

NXLog 字段 UDM 字段
GivenName entity.entity.user.first_name
姓氏 entity.entity.user.last_name
SamAccountName entity.entity.user.userid
SID.Value entity.entity.user.windows_sid
ObjectClass 如果值为“user”,
则 entity.metadata.entity_type 设置为 USER
ObjectGuid entity.entity.user.product_object_id
AccountExpirationDate 存储为 entity.entity.user.attribute.label.键值对。
badPwdCount 存储为 entity.entity.user.attribute.label.键值对。
CanonicalName entity.enitity.administrative_domain
城市 entity.entity.user.personal_address.city
公司 entity.entity.user.company_name
国家/地区 entity.entity.user.personal_address.country_or_region
entity.entity.user.department
说明 entity.metadata.description
DisplayName entity.entity.user.user_display_name
EmailAddress entity.entity.user.email_addresses
EmployeeID entity.entity.user.employee_id
HomeDirectory entity.entity.file.full_path
HomePage entity.entity.url
HomePhone entity.entity.user.phone_numbers
LastBadPasswordAttempt 存储为 entity.entity.user.attribute.label.键值对。
lastLogoff 存储为 entity.entity.user.attribute.label.键值对。
lastLogon 存储为 entity.entity.user.attribute.label.键值对。
LastLogonDate 存储为 entity.entity.user.attribute.label.键值对。
经理 GUID、SAMAccountname、SID 的值均映射到不同的 UDM 字段:
- SID 存储在 manager.windows_sid 中
- 标识名(即第一个 CN 中的值)存储在 manager.user_display_name 中
- GUID、SamAccountName 存储在 manager.userid 中
MemberOf 首次出现的 CN 中的以下字段已设置:
entity.relations.entity.group.group_display_name
entity.relations.entity_type 设置为 GROUP
entity.relations.relationship 设置为 t0 MEMBER
entity.relations.direction 设置为 UNIDIRECTIONAL
MobilePhone entity.entity.user.phone_numbers
办公室 entity.entity.user.office_address.name
PasswordExpired 存储为 entity.entity.user.attribute.label.键值对。
PasswordLastSet 存储为 entity.entity.user.attribute.label.键值对。
PasswordNeverExpires 存储为 entity.entity.user.attribute.label.键值对。
PasswordNotRequired 存储为 entity.entity.user.attribute.label.键值对。
PrimaryGroup 以下字段已设置:
- entity.relations.entity.group.group_display_name
- entity.relations.entity_type 设置为 GROUP
- entity.relations.relationship 设置为 MEMBER
- entity.relations.direction 设置为 UNIDIRECTIONAL
ServicePrincipalNames 存储为 entity.entity.user.attribute.label.键值对。
entity.entity.user.personal_address.state
StreetAddress entity.entity.user.personal_address.name
标题 entity.entity.user.title
whenCreated entity.user.attribute.creation_time

资源上下文日志

NXLog 字段 UDM 字段
DNSHostName entity.entity.asset.hostname
SamAccountName entity.entity.asset.asset_id
SID.Value entity.entity.user.windows_sid
ObjectClass 如果值为“computer”,则 entity.metadata.entity_type 设置为 ASSET
ObjectGuid entity.entity.asset.product_object_id
AccountExpirationDate entity.entity.asset.attribute.label.键值对
badPwdCount entity.entity.asset.attribute.label.键值对
CanonicalName entity.entity.administrative_domain
countryCode entity.entity.asset.location.country_or_region
说明 entity.entity.metadata.description
HomePage entity.entity.url
IPv4Address entity.entity.asset.ip
IPv6Address entity.entity.asset.ip
LastBadPasswordAttempt 存储为 entity.entity.asset.attribute.label.键值对。
lastLogoff 存储为 entity.entity.asset.attribute.label.键值对。
lastLogon 存储为 entity.entity.asset.attribute.label.键值对。
LastLogonDate 存储为 entity.entity.asset.attribute.label.键值对。
位置 entity.entity.asset.location.name
ManagedBy 以下字段已设置:

entity.entity.user.user_display_name
entity.relations.entity_type 设置为 USER
entity.relations.relationship 设置为 ADMINISTERS
entity.relations.direction 设置为 UNIDIRECTIONAL
ObjectCategory entity.entity.asset.category
OperatingSystem 如果名称包含“Windows”,则 entity.entity.asset.platform_software.platform 字段设置为 WINDOWS。
OperatingSystemServicePack entity.entity.asset.platform_software.platform_patch_level
OperatingSystemVersion 字段 entity.entity.asset.platform_software.platform_version 设置为 %{OperatingSystem} - %{OperatingSystemVersion}
PasswordExpired 存储为 entity.entity.asset.attribute.label.键值对。
PasswordLastSet 存储为 entity.entity.asset.attribute.label.键值对。
PasswordNeverExpires 存储为 entity.entity.asset.attribute.label.键值对。
PasswordNotRequired 存储为 entity.entity.asset.attribute.label.键值对。
PrimaryGroup 以下字段已设置:
- entity.relations.entity.group.group_display_name
- entity.relations.entity_type 设置为 GROUP
- entity.relations.relationship 设置为 MEMBER
entity.relations.direction 设置为 UNIDIRECTIONAL
ServicePrincipalNames 存储为 entity.entity.asset.attribute.label.键值对。
whenChanged entity.entity.asset.attribute.last_update_time
whenCreated entity.entity.asset.attribute.creation_time