[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路。]
大家好,我是【WeiyiGeek/唯一极客】一个正在向全栈工程师(SecDevOps)前进的技术爱好者
作者微信:WeiyiGeeker
公众号/知识星球:全栈工程师修炼指南
主页博客: 【 https://weiyigeek.top 】- 为者常成,行者常至。
前言简述
描述:在上一篇文章中,已经将 Windows Server 业务服务器通过 syslog 的方式将系统日志转发到 远程 rsyslog 日志服务器中,但是由于 rsyslog windows agent 诸多限制(太贵了
),所以最终放弃了此方法,从而继续查看是否有其他更好的收集Windows 事件日志的方法,通过搜索引擎,最终找到 Promtail 采集 Windows Server 事件日志的配置方法,这里不得不说到国内关于使用 Promtail 采集 Windows Server 事件日志的资料很少,大多只是只言片语,所以作者在实践中遇到的许多的坑,最终是靠着Loki官方日志、和issue以及不断的尝试,这里记录下以便后续有需求的童鞋,也希望各位看友能多多支持《#网络安全攻防实践》专栏,收获一定大于付出。
此文实践效果展示:
温馨提示:如需下载一键安装PowerShell脚本以及Promtail 、rsyslog agent 工具的请在文末获取
weiyigeek.top-使用Powershell脚本快速部署抓取系统事件日志图
通过Loki官方文档提到,在 Windows 上,Promtail 支持读取事件日志,可以使用 Windows_events
节配置抓取 Windows Server 事件目标, 并发送到 Loki 服务器,其配置说明文档如下:
-
https://grafana.com/docs/loki/latest/send-data/promtail/scraping/#windows-event-log
-
https://grafana.com/docs/loki/latest/send-data/promtail/configuration/#windows_events
Windows_events 配置详述:
windows_events:
# Promtail是否应该传递传入日志生成的时间戳,当为 false 时将当前时间戳分配给日志。
[use_incoming_timestamp: <bool> | default = false]
# 抓取新事件的时间间隔。默认目标每3秒检查一次。
[poll_interval: <duration> | default = 3s]
# 用于事件呈现的LCID(区域设置ID)
# - 1033 to force English language
# - 0 to use default Windows locale
[locale: <int> | default = 0]
# 事件日志的名称,仅当 xpath_query 为空时使用,更多日志可使用 `wevtutil el` DOS 命令查看事件日志名称。
# Example: "Application" "System" "Security"
[eventlog_name: <string> | default = ""]
# xpath_query可以是定义的缩写形式,例如 "Event/System[EventID=999]",更多 XPath 查询语法请参考:
# https://docs.microsoft.com/en-us/windows/win32/wes/consuming-events
[xpath_query: <string> | default = "*"]
# 书签包含目标在XML中的当前位置,当重新启动或推出Promtail时,目标将继续根据书签位置从它停止的地方刮取事件(特别注意:它是自动创建的)。
[bookmark_path: <string> | default = ""]
# 允许排除xml事件数据,自定义事件数据,以节省空间。
[exclude_event_data: <bool> | default = false]
# 允许排除人性化事件消息,建议启用
[exclude_event_message: <bool> | default = false]
# 允许排除 windows 事件的用户数据,自定义事件数据,以节省空间。
[exclude_user_data: <bool> | default = false]
# 添加到从windows事件日志读取的每条日志行的标签
labels:
[ <labelname>: <labelvalue> ... ]
温馨提示:默认情况下,事件每 3 秒定期抓取一次,但可以使用 poll_interval
,若有要订阅特定事件流,您需要提供 eventlog_name
或 xpath_query
参数
实践步骤:
Step 1.每一个Grafana-Loki版本都包含Promtail的二进制文件,此处作者使用v3.0.0版本的Promtail.
链接直达:
https://github.com/grafana/loki/releases/download/v3.0.0/promtail-windows-amd64.exe.zip
温馨提示:由于最新版本可能会根据时间的变化而变化,而不同的版本配置上有些许差异,若需要选择最新版本请自行测试如下配置是否可行,若不行请参考官方文档进行调整。
温馨提示:若无法访问Github下载promtail,请访问 https://d.serctl.com/ 镜像站来下载。
Step 2.将下载的 promtail-windows-amd64.exe.zip
压缩包上传到需要抓取系统事件日志的服务器上解压,然后按照下述示例配置 promtail.yaml 文件,作者添加了用Promtail 流水线阶段处理过滤审计需要关注的 Windows事件。