收集 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 注入身份验证文件
- 登录 Google SecOps 控制台。
- 依次前往 SIEM 设置 > 收集代理。
下载注入身份验证文件。将该文件安全地保存在将要安装 Bindplane 的系统上。
获取 Google SecOps 客户 ID
- 登录 Google SecOps 控制台。
- 依次前往 SIEM 设置 > 配置文件。
复制并保存组织详细信息部分中的客户 ID。
安装 Bindplane 代理
按照以下说明在 Windows 或 Linux 操作系统上安装 Bindplane 代理。
Windows 安装
- 以管理员身份打开命令提示符或 PowerShell。
运行以下命令:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet等待安装完成。
运行以下命令来验证安装:
sc query observiq-otel-collector服务状态应为 RUNNING。
Linux 安装
- 打开具有 root 或 sudo 权限的终端。
运行以下命令:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh等待安装完成。
运行以下命令来验证安装:
sudo systemctl status observiq-otel-collector服务状态应为有效(正在运行)。
其他安装资源
如需了解其他安装选项和问题排查信息,请参阅 Bindplane 代理安装指南。
配置 Bindplane 代理以注入 syslog 并将其发送到 Google SecOps
找到配置文件
Linux:
sudo nano /etc/bindplane-agent/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
修改配置文件
将
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替换以下占位符:
接收器配置:
listen_address:设置为0.0.0.0:1514可在端口 1514 (TCP) 上监听所有接口。您可以根据需要更改端口号,但请确保它与 Logstash syslog 输出配置相匹配。
导出器配置:
<CREDS_FILE_PATH>:提取身份验证文件的完整路径:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
<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+O、Enter和Ctrl+X - Windows:依次点击文件 > 保存
重启 Bindplane 代理以应用更改
如需在 Linux 中重启 Bindplane 代理,请执行以下操作:
运行以下命令:
sudo systemctl restart observiq-otel-collector验证服务是否正在运行:
sudo systemctl status observiq-otel-collector检查日志是否存在错误:
sudo journalctl -u observiq-otel-collector -f
如需在 Windows 中重启 Bindplane 代理,请执行以下操作:
请从下列选项中选择一项:
以管理员身份运行命令提示符或 PowerShell:
net stop observiq-otel-collector && net start observiq-otel-collector服务控制台:
- 按
Win+R,输入services.msc,然后按 Enter 键。 - 找到 observIQ OpenTelemetry 收集器。
- 右键点击并选择重新启动。
- 按
验证服务是否正在运行:
sc query observiq-otel-collector检查日志是否存在错误:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
安装和配置 Logstash
Logstash 必须充当中间介质,才能从 Winlogbeat 接收事件并通过 syslog 将其转发给 Bindplane 代理。Winlogbeat 不具备原生 syslog 输出功能。
安装 Logstash
- 从 Elastic 下载页面下载 Logstash。
- 在 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 logstashLinux(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 logstashWindows:
- 从 Elastic 下载页面下载 ZIP 文件。
- 提取到
C:\logstash。
配置 Logstash 流水线
创建新的流水线配置文件:
Linux:
sudo nano /etc/logstash/conf.d/winlogbeat-to-syslog.confWindows:
notepad "C:\logstash\config\winlogbeat-to-syslog.conf"
添加以下配置:
input { beats { port => 5044 } } output { syslog { host => "<BINDPLANE_AGENT_IP>" port => 1514 protocol => "tcp" rfc => "rfc5424" appname => "winlogbeat" facility => "user-level" severity => "informational" } }将
<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:
启动 Logstash:
sudo systemctl start logstash sudo systemctl enable logstash验证 Logstash 是否正在运行:
sudo systemctl status logstash检查 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
- 从 Elastic 下载页面下载 Winlogbeat。
- 选择适用于 Windows 的 ZIP 或 MSI 安装程序。
安装 Winlogbeat
使用 MSI 安装程序:
- 运行 MSI 安装程序。
- 按照安装向导操作。
- 安装到默认位置:
C:\Program Files\Winlogbeat。
使用 ZIP 文件:
- 将 ZIP 文件解压到
C:\Program Files\Winlogbeat。 - 以管理员身份打开 PowerShell。
前往 Winlogbeat 目录:
cd 'C:\Program Files\Winlogbeat'运行安装脚本:
.\install-service-winlogbeat.ps1
- 将 ZIP 文件解压到
配置 Winlogbeat 以将日志发送到 Logstash
打开 Winlogbeat 配置文件:
notepad "C:\Program Files\Winlogbeat\winlogbeat.yml"配置要收集的事件日志。找到
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]在每行开头添加
#,注释掉 Elasticsearch 输出部分:#output.elasticsearch: # hosts: ["localhost:9200"]取消注释并配置 Logstash 输出部分:
output.logstash: hosts: ["<LOGSTASH_SERVER_IP>:5044"]将
<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 服务
- 以管理员身份打开 PowerShell。
启动 Winlogbeat 服务:
Start-Service winlogbeat验证服务是否正在运行:
Get-Service winlogbeat状态应显示为正在运行。
检查 Winlogbeat 日志是否存在错误:
Get-Content "C:\ProgramData\winlogbeat\Logs\winlogbeat" -Tail 50
验证日志流
验证 Winlogbeat 与 Logstash 的连接
在 Logstash 服务器上,检查 Logstash 日志:
Linux:
sudo tail -f /var/log/logstash/logstash-plain.logWindows:
type C:\logstash\logs\logstash-plain.log
查找指示 Beats 连接的消息:
[INFO ][logstash.inputs.beats] Beats inputs: Starting input listener {:address=>"0.0.0.0:5044"}
验证 Logstash 与 Bindplane 代理之间的连接
在 Bindplane 代理服务器上,检查代理日志:
Linux:
sudo journalctl -u observiq-otel-collector -fWindows:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
查找指示日志成功提取的消息。
在 Google SecOps 中验证日志
- 登录 Google SecOps 控制台。
- 前往搜索。
运行搜索查询,验证 Winlogbeat 日志是否正在被注入:
metadata.log_type = "ELASTIC_WINLOGBEAT"验证 Windows 事件日志是否显示在搜索结果中。
问题排查
Winlogbeat 未连接到 Logstash
验证 Winlogbeat 与 Logstash 之间的网络连接:
Test-NetConnection -ComputerName <LOGSTASH_IP> -Port 5044检查 Windows 防火墙规则是否允许通过端口 5044 建立出站连接。
验证 Logstash 是否正在侦听端口 5044:
Linux:
sudo netstat -tulpn | grep 5044Windows:
netstat -an | findstr 5044
Logstash 未转发到 Bindplane 代理
验证 Logstash 与 Bindplane 代理之间的网络连接:
Linux:
telnet <BINDPLANE_IP> 1514Windows:
Test-NetConnection -ComputerName <BINDPLANE_IP> -Port 1514
检查防火墙规则是否允许通过端口 1514 进行 TCP 连接。
验证 Bindplane 代理是否正在监听端口 1514:
Linux:
sudo netstat -tulpn | grep 1514Windows:
netstat -an | findstr 1514
日志未显示在 Google SecOps 中
- 验证客户 ID 和注入身份验证文件是否正确。
- 检查 Bindplane 代理日志中是否存在身份验证错误。
- 验证区域端点是否与您的 Google SecOps 实例区域匹配。
- 确保
log_type设置为ELASTIC_WINLOGBEAT,且完全按照所示方式设置。
UDM 映射表
此解析器没有字段映射信息。
需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。