收集 Elastic Windows Event Log Beats 日志

支持的平台:

本文档介绍了如何使用 Bindplane 代理将 Elastic Windows Event Log Beats 日志注入到 Google Security Operations 中。

Winlogbeat 是 Elastic 的 Windows 特定事件日志传送代理,用于收集 Windows 事件日志并将其转发到各种目的地。它在 Windows 系统上作为 Windows 服务运行,可以从“应用程序”“安全性”“系统”和其他 Windows 事件日志渠道收集事件。

准备工作

请确保满足以下前提条件:

  • Google SecOps 实例
  • Windows Server 2016 或更高版本,或者具有 systemd 的 Linux 主机(用于运行 Bindplane 代理)
  • Bindplane 代理与 Logstash 服务器之间的网络连接
  • Logstash 与 Bindplane 代理之间的网络连接
  • 如果通过代理运行,请确保防火墙端口已根据 Bindplane 代理要求打开
  • 将安装 Winlogbeat 以收集事件日志的 Windows 系统
  • 管理员对 Windows 系统的访问权限(用于安装 Winlogbeat)
  • 用于中间处理的 Logstash 服务器(版本 7.x 或 8.x)

获取 Google SecOps 注入身份验证文件

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

获取 Google SecOps 客户 ID

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

安装 Bindplane 代理

按照以下说明在 Windows 或 Linux 操作系统上安装 Bindplane 代理。

Windows 安装

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

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. 等待安装完成。

  4. 运行以下命令来验证安装:

    sc query observiq-otel-collector
    

    服务状态应为 RUNNING

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
    
  3. 等待安装完成。

  4. 运行以下命令来验证安装:

    sudo systemctl status observiq-otel-collector
    

    服务状态应为有效(正在运行)

其他安装资源

如需了解其他安装选项和问题排查信息,请参阅 Bindplane 代理安装指南

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

找到配置文件

  • Linux:

    sudo nano /etc/bindplane-agent/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

修改配置文件

  1. config.yaml 的全部内容替换为以下配置:

    receivers:
        tcplog:
            listen_address: "0.0.0.0:1514"
    
    exporters:
        chronicle/winlogbeat:
            compression: gzip
            creds_file_path: '<CREDS_FILE_PATH>'
            customer_id: '<CUSTOMER_ID>'
            endpoint: <REGION_ENDPOINT>
            log_type: ELASTIC_WINLOGBEAT
            raw_log_field: body
            ingestion_labels:
                env: production
                source: winlogbeat
    
    service:
        pipelines:
            logs/winlogbeat_to_chronicle:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/winlogbeat
    
  2. 替换以下占位符:

    • 接收器配置:

      • listen_address:设置为 0.0.0.0:1514 可在端口 1514 (TCP) 上监听所有接口。您可以根据需要更改端口号,但请确保它与 Logstash syslog 输出配置相匹配。
    • 导出器配置:

      • <CREDS_FILE_PATH>:提取身份验证文件的完整路径:

        • Linux/etc/bindplane-agent/ingestion-auth.json
        • WindowsC:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • <CUSTOMER_ID>:上一步中的客户 ID

      • <REGION_ENDPOINT>:区域端点网址:

        • 美国malachiteingestion-pa.googleapis.com
        • 欧洲europe-malachiteingestion-pa.googleapis.com
        • 亚洲asia-southeast1-malachiteingestion-pa.googleapis.com
        • 如需查看完整列表,请参阅区域级端点

配置示例:

  • receivers:
      tcplog:
        listen_address: "0.0.0.0:1514"
    
    exporters:
      chronicle/winlogbeat:
        compression: gzip
        creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
        customer_id: 'a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: ELASTIC_WINLOGBEAT
        raw_log_field: body
        ingestion_labels:
          env: production
          source: winlogbeat
    
    service:
      pipelines:
        logs/winlogbeat_to_chronicle:
          receivers:
            - tcplog
          exporters:
            - chronicle/winlogbeat
    

保存配置文件

修改后,保存文件:

  • Linux:依次按 Ctrl+OEnterCtrl+X
  • Windows:依次点击文件 > 保存

重启 Bindplane 代理以应用更改

  • 如需在 Linux 中重启 Bindplane 代理,请执行以下操作:

    1. 运行以下命令:

      sudo systemctl restart observiq-otel-collector
      
    2. 验证服务是否正在运行:

      sudo systemctl status observiq-otel-collector
      
    3. 检查日志是否存在错误:

      sudo journalctl -u observiq-otel-collector -f
      
  • 如需在 Windows 中重启 Bindplane 代理,请执行以下操作:

    1. 请从下列选项中选择一项:

      • 以管理员身份运行命令提示符或 PowerShell:

        net stop observiq-otel-collector && net start observiq-otel-collector
        
      • 服务控制台:

        1. Win+R,输入 services.msc,然后按 Enter 键。
        2. 找到 observIQ OpenTelemetry 收集器
        3. 右键点击并选择重新启动
    2. 验证服务是否正在运行:

      sc query observiq-otel-collector
      
    3. 检查日志是否存在错误:

      type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
      

安装和配置 Logstash

Logstash 必须充当中间介质,才能从 Winlogbeat 接收事件并通过 syslog 将其转发给 Bindplane 代理。Winlogbeat 不具备原生 syslog 输出功能。

安装 Logstash

  1. Elastic 下载页面下载 Logstash。
  2. 在 Windows 或 Linux 服务器上安装 Logstash:
  • Linux(Debian/Ubuntu)

    wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
    sudo apt-get install apt-transport-https
    echo "deb https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list
    sudo apt-get update && sudo apt-get install logstash
    
  • Linux(RHEL/CentOS)

    sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
    sudo tee /etc/yum.repos.d/logstash.repo <<EOF
    [logstash-8.x]
    name=Elastic repository for 8.x packages
    baseurl=https://artifacts.elastic.co/packages/8.x/yum
    gpgcheck=1
    gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
    enabled=1
    autorefresh=1
    type=rpm-md
    EOF
    sudo yum install logstash
    
  • Windows

    1. 从 Elastic 下载页面下载 ZIP 文件。
    2. 提取到 C:\logstash

配置 Logstash 流水线

  1. 创建新的流水线配置文件:

    • Linux

      sudo nano /etc/logstash/conf.d/winlogbeat-to-syslog.conf
      
    • Windows

      notepad "C:\logstash\config\winlogbeat-to-syslog.conf"
      
  2. 添加以下配置:

    input {
        beats {
            port => 5044
        }
    }
    
    output {
        syslog {
            host => "<BINDPLANE_AGENT_IP>"
            port => 1514
            protocol => "tcp"
            rfc => "rfc5424"
            appname => "winlogbeat"
            facility => "user-level"
            severity => "informational"
        }
    }
    
  3. <BINDPLANE_AGENT_IP> 替换为运行 Bindplane 代理的服务器的 IP 地址。

Logstash 配置示例

  • input {
        beats {
            port => 5044
        }
    }
    
    output {
        syslog {
            host => "192.168.1.100"
            port => 1514
            protocol => "tcp"
            rfc => "rfc5424"
            appname => "winlogbeat"
            facility => "user-level"
            severity => "informational"
        }
    }
    

启动 Logstash

  • Linux

    1. 启动 Logstash:

      sudo systemctl start logstash
      sudo systemctl enable logstash
      
    2. 验证 Logstash 是否正在运行:

      sudo systemctl status logstash
      
    3. 检查 Logstash 日志:

      sudo tail -f /var/log/logstash/logstash-plain.log
      
  • Windows

    cd C:\logstash\bin
    logstash.bat -f C:\logstash\config\winlogbeat-to-syslog.conf
    

    对于生产用途,请使用 NSSM 或类似工具将 Logstash 安装为 Windows 服务。

在 Windows 系统上安装 Winlogbeat

下载 Winlogbeat

  1. Elastic 下载页面下载 Winlogbeat。
  2. 选择适用于 Windows 的 ZIP 或 MSI 安装程序。

安装 Winlogbeat

  • 使用 MSI 安装程序

    1. 运行 MSI 安装程序。
    2. 按照安装向导操作。
    3. 安装到默认位置:C:\Program Files\Winlogbeat
  • 使用 ZIP 文件

    1. 将 ZIP 文件解压到 C:\Program Files\Winlogbeat
    2. 以管理员身份打开 PowerShell
    3. 前往 Winlogbeat 目录:

      cd 'C:\Program Files\Winlogbeat'
      
    4. 运行安装脚本:

      .\install-service-winlogbeat.ps1
      

配置 Winlogbeat 以将日志发送到 Logstash

  1. 打开 Winlogbeat 配置文件:

    notepad "C:\Program Files\Winlogbeat\winlogbeat.yml"
    
  2. 配置要收集的事件日志。找到 winlogbeat.event_logs 部分,然后按如下方式进行配置:

    winlogbeat.event_logs:
      - name: Application
        ignore_older: 72h
      - name: System
      - name: Security
      - name: Microsoft-Windows-Sysmon/Operational
        ignore_older: 72h
      - name: Windows PowerShell
        event_id: 400, 403, 600, 800
      - name: Microsoft-Windows-PowerShell/Operational
        event_id: 4103, 4104, 4105, 4106
      - name: ForwardedEvents
        tags: [forwarded]
    
  3. 在每行开头添加 #,注释掉 Elasticsearch 输出部分:

    #output.elasticsearch:
    #  hosts: ["localhost:9200"]
    
  4. 取消注释并配置 Logstash 输出部分:

    output.logstash:
      hosts: ["<LOGSTASH_SERVER_IP>:5044"]
    
  5. <LOGSTASH_SERVER_IP> 替换为 Logstash 服务器的 IP 地址。

Winlogbeat 配置示例

  • winlogbeat.event_logs:
      - name: Application
        ignore_older: 72h
      - name: System
      - name: Security
      - name: Microsoft-Windows-Sysmon/Operational
        ignore_older: 72h
    
    output.logstash:
      hosts: ["192.168.1.50:5044"]
    

保存配置文件

保存并关闭文件。

启动 Winlogbeat 服务

  1. 以管理员身份打开 PowerShell
  2. 启动 Winlogbeat 服务:

    Start-Service winlogbeat
    
  3. 验证服务是否正在运行:

    Get-Service winlogbeat
    

    状态应显示为正在运行

  4. 检查 Winlogbeat 日志是否存在错误:

    Get-Content "C:\ProgramData\winlogbeat\Logs\winlogbeat" -Tail 50
    

验证日志流

验证 Winlogbeat 与 Logstash 的连接

  1. 在 Logstash 服务器上,检查 Logstash 日志:

    • Linux

      sudo tail -f /var/log/logstash/logstash-plain.log
      
    • Windows

      type C:\logstash\logs\logstash-plain.log
      
  2. 查找指示 Beats 连接的消息:

    [INFO ][logstash.inputs.beats] Beats inputs: Starting input listener {:address=>"0.0.0.0:5044"}
    

验证 Logstash 与 Bindplane 代理之间的连接

  1. 在 Bindplane 代理服务器上,检查代理日志:

    • Linux

      sudo journalctl -u observiq-otel-collector -f
      
    • Windows

      type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
      
  2. 查找指示日志成功提取的消息。

在 Google SecOps 中验证日志

  1. 登录 Google SecOps 控制台。
  2. 前往搜索
  3. 运行搜索查询,验证 Winlogbeat 日志是否正在被注入:

    metadata.log_type = "ELASTIC_WINLOGBEAT"
    
  4. 验证 Windows 事件日志是否显示在搜索结果中。

问题排查

Winlogbeat 未连接到 Logstash

  • 验证 Winlogbeat 与 Logstash 之间的网络连接:

    Test-NetConnection -ComputerName <LOGSTASH_IP> -Port 5044
    
  • 检查 Windows 防火墙规则是否允许通过端口 5044 建立出站连接。

  • 验证 Logstash 是否正在侦听端口 5044:

    • Linux

      sudo netstat -tulpn | grep 5044
      
    • Windows

      netstat -an | findstr 5044
      

Logstash 未转发到 Bindplane 代理

  • 验证 Logstash 与 Bindplane 代理之间的网络连接:

    • Linux

      telnet <BINDPLANE_IP> 1514
      
    • Windows

      Test-NetConnection -ComputerName <BINDPLANE_IP> -Port 1514
      
  • 检查防火墙规则是否允许通过端口 1514 进行 TCP 连接。

  • 验证 Bindplane 代理是否正在监听端口 1514:

    • Linux

      sudo netstat -tulpn | grep 1514
      
    • Windows

      netstat -an | findstr 1514
      

日志未显示在 Google SecOps 中

  • 验证客户 ID 和注入身份验证文件是否正确。
  • 检查 Bindplane 代理日志中是否存在身份验证错误。
  • 验证区域端点是否与您的 Google SecOps 实例区域匹配。
  • 确保 log_type 设置为 ELASTIC_WINLOGBEAT,且完全按照所示方式设置。

UDM 映射表

此解析器没有字段映射信息。

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