[ 重剑无锋,大巧不工。]
大家好,我是【WeiyiGeek/唯一极客】一个正在向全栈工程师(SecDevOps)前进的技术爱好者
作者微信:WeiyiGeeker
公众号/知识星球:全栈工程师修炼指南
主页博客: 【 https://weiyigeek.top 】- 为者常成,行者常至。
文章目录
0x00 前言简述
首先,由于企业网络安全等级保护要求以及安全运维工作的需求,企业安全运维人员需要了解企业内各业务系统的安全事件,以便及时发现并处理安全事件。当下在企业中仍有占有一定量的业务运行在 Windows Server 操作系统中,因此了解 Windows 事件日志对于企业安全运维人员来说是十分必要的。
Windows 事件日志是 Windows 系统安全事件以及错误信息记录的地方,可以帮助你识别和解决各种问题,例如,安全认证审核、应用程序崩溃、系统错误等,此外由于等保审计需求,需要配置 Windows 事件的审计功能,并在事件日志存储在本地服务器上的同时,还需上传到企业的中心日志服务器中(Rsyslog、Loki(PLG 技术栈)、Elasticsearch(ELK技术栈)
),更有甚者将其载入到 Grafana 可视化,以备后续发生安全事件时,网络安全工程师可以及时的检索日志以溯源跟踪。
所以本文能够帮助你更好地理解和使用 Windows 事件日志,以及让你企业中 Windows 服务器满足等保日志审计要求,让运维更加便利,系统更加的安全,希望大家能多多支持此《#运维从业必学》专栏!
本章日志审计实践效果如下图所示:
温馨提示:作者最近开通的知识星球,全栈系列从门到实践教程将会逐步同步到星球内(实时更新),加入星球将获得作者在安全、运维、开发(Sec、Ops、Dev)中的所有学习实践笔记,和问题答疑以及远程技术支持,希望大家多多支持!
0x01 日志知识
什么是 Windows 事件日志?
描述:Windows 操作系统在其运行的生命周期中会记录其大量的日志信息,包括:Windows 事件日志(Event Log),IIS 应用日志,FTP 应用日志,Exchange Server 邮件服务日志 以及 MSSQL Server 数据库日志等,并且涵盖了应用程序错误、系统错误等,此外,遇到应用程序频繁崩溃或蓝屏死机(BSOD),Windows 会记录应用程序异常信息,以及在系统崩溃时创建一个日志来记录崩溃原因,便可以追溯问题发生的原因,了解计算机的健康状况,以及排除故障。
此处,Windows 系统内置的三个核心(System,Security 和 Application)事件日志文件,其默认大小均为 20480KB(20MB),记录事件数据超过 20MB 时,默认系统将优先覆盖过期的日志记录,其它应用程序及服务日志默认最大为 1024KB,超过最大限制也优先覆盖过期的日志记录,当然我们可以根据实际需求进行更改,具体修改可继续参考后续章节。
温馨提示:有时错误信息很直观,可以一目了然地帮助我们解决问题(完结撒花 🎉),但是有时却只有一个错误代码,例如 0xC000021A(一脸懵 X😳),此时就需要通过查询 Microsoft 知识库、上网进一步搜索,或咨询专业系统运维工程师来找到详细的解决方法。
-
Microsoft 知识库:提供了有关事件日志的详细信息和解决方案, 直达 [https://learn.microsoft.com/en-us/troubleshoot/]。
-
Microsoft 支持社区:可以就特定事件 ID 和错误代码寻求帮助, 直达 [https://answers.microsoft.com/zh-hans]。
Windows 事件日志分类
描述:Windows 事件日志可分为 Windows 日志
、应用程序和服务日志
两大类,了解这些类别有助于在出现问题时迅速定位相关日志,缩小排查范围。
Windows 日志
-
System:即系统日志,包含 Windows 系统组件记录的事件。例如,在启动过程中加载驱动程序或其他系统组件失败将记录在系统日志中。
-
Security:即安全日志,包含系统安全相关的事件。例如,记录用户登录、注销、系统启动和关闭、用户帐户管理、密码策略更改等安全相关的事件。
-
Application:即应用程序日志,包含由应用程序或程序记录的事件。例如,数据库程序可在应用程序日志中记录文件错误,程序开发人员决定记录哪些事件。
-
Setup:即安装程序日志,包含 Windows 组件及补丁更新安装相关的事件。例如,Windows 安装程序在安装过程中记录事件。
-
Forwarded:即转发日志,包含从其他设备转发过来的事件日志。例如,远程服务器登录失败、网络连接中断等事件。
应用程序和服务日志
-
Microsoft:包含了 200 多个微软内置的事件日志分类,只有部分类型默认启用记录功能,如远程桌面客户端连接、无线网络、有线网路、设备安装等相关日志。
-
Internet Explorer:包含 IE 浏览器应用程序的日志信息,默认未启用,需要通过组策略进行配置。
-
Windows PowerShell:包含 PowerShell 应用的日志信息。
-
Key Management Service: 包含密钥管理服务的日志信息。
-
HardwareEvents:包含硬件事件日志信息。
温馨提示:上述类别的日志都是存放在磁盘的 %SystemRoot%\System32\Winevt\Logs\
目录中,如下图示:
Windows 事件日志级别
描述:在 Windows 事件日志中根据事件的重要性,事件日志可以分为以下 5 种类型(英文语系下是数字标号表示):
-
Information(信息)
: 记录正常运行的事件, 例如:启动服务、关闭服务等。 -
Warning(警告)
: 提示潜在问题的事件, 例如: 磁盘空间不足、网络连接中断等。 -
Error(错误)
: 表示出现严重问题的事件, 例如: 硬件故障、系统崩溃等。 -
Success audit(审核成功)
: 记录安全审核成功的事件, 例如: 用户登录、用户注销等。 -
Failure audit(审核失败)
: 记录安全审核失败过的事件,例如: 用户登录失败、用户注销失败等。
通常情况,运维人员会特别关注警告
和错误
级别的事件日志,它们通常和系统故障紧密相关。
Windows 事件日志属性
描述:Windows 事件日志文件实际上是以特定的数据结构的方式存储内容,其中包括有关于系统,安全,应用程序的事件记录,每个记录事件的数据结构中包含如下 10 个常规日志属性(可以理解成数据库中的字段),当发生安全事件时应急响应工程师可以根据日志取证,了解计算机上上发生的具体行为。
常规日志属性:
-
日志名称:事件所属的类型。
-
来源:产生事件的应用或组件。
-
事件 ID:用于识别具体事件的编号。
-
级别:事件的严重程度,比如
信息
、警告
、错误
等。 -
用户:事件发生时的用户账户。
-
操作代码:别称 OpCode,记录触发事件时所执行的操作。
-
记录时间:事件发生的具体时间。
-
任务类别:用于表示事件发行者的子组件或活动,用于提供事件更多细节的分类。
-
关键字:用于分类事件赛选的关键词,常见的有
经典
、审核成功
、审核失败
、响应时间
。 -
计算机:记录事件的计算机名称。
知识扩展:Windows 事件日志元数据 xml 内容示例说明
<!-- 根元素 <Event>: 指定XML文档遵循的架构或规范。-->
<Event xmlns='http://schemas.microsoft.com/win/2004/08/events/event'>
<!-- <System> 元素: 提供了事件的元数据。-->
<System>
<!-- 事件的提供者 -->
<Provider Name='Microsoft-Windows-Security-Auditing' Guid='{54849625-5478-4994-a5ba-3e3b0328c30d}'/>
<!-- 事件的唯一标识符,例如此处是注销 -->
<EventID>4634</EventID>
<Version>0</Version>
<!-- 重要性或严重性级别 -->
<Level>0</Level>
<!-- 事件相关的任务或操作的标识符 -->
<Task>12545</Task>
<!-- 操作代码,表示事件的特定类型或子类型 -->
<Opcode>0</Opcode>
<!-- 与事件相关的关键字,用于过滤或搜索事件 -->
<Keywords>0x8020000000000000</Keywords>
<!-- 事件创建的时间 -->
<TimeCreated SystemTime='2020-08-24T18:45:50.181682600Z'/>
<!-- 事件的记录ID,确保事件在日志中的唯一性 -->
<EventRecordID>138280</EventRecordID>
<Correlation/>
<Execution ProcessID='668' ThreadID='11916'/>
<!-- 事件所属的主机 -->
<Computer>WEIYIGEEK.TOP</Computer>
<!-- 事件所属的通道 -->
<Channel>Security</Channel>
<!-- 通常是一个空元素,也表示事件所属的通道。 -->
<Security/>
</System>
<!-- <EventData> 元素:包含事件的具体数据 -->
<EventData>
<!-- 如目标用户的SID、用户名、域名、登录ID和登录类型 -->
<Data Name='TargetUserSid'>S-1-5-21-3059585724-171103038-3195841082-500</Data>
<Data Name='TargetUserName'>weiyigeek</Data>
<Data Name='TargetDomainName'>WEIYIGEEK.TOP</Data>
<Data Name='TargetLogonId'>0xec6d372</Data>
<Data Name='LogonType'>7</Data>
</EventData>
<!-- <RenderingInfo> 元素: 显示为人类可读的形式提供了事件的描述 -->
<RenderingInfo Culture='zh-CN'>
<Message>已注销帐户.....登录 ID 是唯一的。</Message>
<Level>信息(Info)</Level>
<!-- 表示关机任务 -->
<Task>Logoff</Task>
<Opcode>信息</Opcode>
<Channel>Security</Channel>
<Provider>Microsoft Windows security auditing.</Provider>
<Keywords>
<Keyword>审核成功</Keyword>
</Keywords>
</RenderingInfo>
</Event>
Windows 事件ID标识
描述:Windows 事件 ID 是 Windows 事件日志中记录的事件的唯一标识符,每个事件 ID 都对应一个事件,作为安全运维人员应该熟知常见的一些事件ID,用于在发生网络安全应急事件中快速定位相关问题及事件。
安全(Security)类别常见事件 EventID:
完整原文,请访问公众号浏览:Win 运维 | Windows Server 系统事件日志浅析与日志审计实践