如何使用非管理用户获取安全日志



哈勃! 在cat下阅读如何在没有管理员权限的情况下访问Windows安全日志。 这不是有关Windows日志的Habr的第一篇文章,也不是最原始的文章,但是我认为我花了太多时间寻找普通用户读取日志的简单解决方案,因此我决定分享“成功案例”。

我还必须将Powershell cmdlet与Get-WinEventGet-EventLog cmdlet的性能进行比较。

削减的所有内容都与Windows Server 2008R2 / 2012R2,Windows 10 Pro(1809)有关,我尚未在其他版本上进行过测试,我认为情况与2016年和2019年的产品类似。

因此,默认情况下,普通用户没有读取安全日志的权限。
当您尝试获取日志时,会出现错误。



并且通过事件查看器访问也将被拒绝。



放映时间


将用户添加到本地事件日志读取器组。



接下来,我们授予对MACHINE \ System \ CurrentControlSet \ Services \ Eventlog \ Security注册表分支的读取权限。



如果不更改此注册表分支的权限,您将无法读取安全日志的参数;因此,您将无法找到日志文件的位置和名称。 安全性 ,这是Eventlog服务中唯一不从根继承访问权限的部分。

这就是MACHINE \ System \ CurrentControlSet \ Services \ Eventlog的权限。



检查Get-WinEventGet-EventLog cmdlet是否都起作用!
稍后,返回比较这些cmdlet ...



管理审核和安全日志


如果需要授予用户清除日志的权限,则必须编辑组策略。 一个用户或一组用户需要添加“ 管理审核和安全日志”权限

该组位于此处计算机配置\ Windows设置\安全设置\本地策略\用户权限分配



您可以在此处阅读有关管理审核和安全日志的更多信息
此策略设置确定哪些用户可以为单个资源(例如文件,Active Directory对象和注册表项)指定对象访问审核选项。 这些对象指定其系统访问控制列表(SACL)。 分配了此用户权限的用户还可以在事件查看器中查看和清除安全日志。 有关对象访问审核策略的更多信息,请参阅审核对象访问。

我们检查,一切都按承诺进行,日志已清理...



没有其他逻辑可以清除权利。



老实说,我无法提出需要授予用户清理安全日志的权限的方案,但是有这样的机会。

Get-WinEvent VS Get-EventLog


现在该比较这两个cmdlet

获取事件日志
说明:

Get-EventLog cmdlet可以在本地和远程计算机上获取事件和事件日志。

您可以使用cmdlet的参数和属性值来搜索事件。 此cmdlet获取与指定属性值匹配的事件。

包含EventLog名词的cmdlet仅在经典事件日志中起作用。 要从使用Windows Vista和更高版本Windows中的Windows事件日志技术的日志中获取事件,请使用Get-WinEvent。

Get-WinEvent
说明:

Get-WinEvent cmdlet从事件日志中获取事件,这些事件日志包括经典日志(例如系统日志和应用程序日志)以及由Windows Vista中引入的Windows Event Log技术生成的事件日志。 它还从Windows事件跟踪(ETW)生成的日志文件中获取事件。

没有参数,Get-WinEvent命令将从计算机上的所有事件日志中获取所有事件。 要中断命令,请按CTRL +C。

Get-WinEvent还列出了事件日志和事件日志提供程序。 您可以从选定的日志或选定的事件提供程序生成的日志中获取事件。 而且,您可以在一个命令中组合来自多个来源的事件。 此cmdlet允许您使用XPath查询,结构化XML查询和简化的哈希表查询来过滤事件

根据描述, Get-WinEvent可以与WIndows Vista中出现的大量杂志一起使用。

为了清楚起见,这是这些cmdlet可以使用的列表我停止了Get-WinEvent的输出。



但是有一件事,性能很重要,比较查询执行时间。



Get-WinEvent的运行时间简直惊人的,请注意ApplocationSecurity日志中的条目数,事件数大约是3400-3600,但是运行时间差了将近20倍...

Get-WinEvent花费127秒而不是52秒的Get-EventLog来读取应用程序事件。

与同伴相比, Get-WinEvent花费2020秒花费45秒的Get-EventLog来读取安全事件。

如果您在本地执行相同的命令,一切看起来都不会很糟糕,但是即使在本地, Get-EventLog处理安全日志也比Get-WinEvent快50倍。



另一个示例,已经有了一些有意义的示例,该示例使用代码4624接收事件帐户已成功登录



我能说什么,数字不会说谎...

非管理员访问DC事件日志


最后,我离开了访问域控制器上的安全日志的主题。

以上所有内容都与域控制器相关,但有一些修改。

1-您将在内置安全主体对象中找到“ 事件日志读取器”组。



通过将用户添加到该组,您仅向域控制器授予读取权限。

并且不要忘记,在每个域控制器上,您必须授予读取注册表分支MACHINE \ System \ CurrentControlSet \ Services \ Eventlog \ Security的权限

这是一个示例,没有权限读取成员服务器的日志,如果您需要从域中的其他计算机读取日志,请使用组策略将用户或用户组添加到本地“ 事件日志读取器”组。



2-要添加清除日志的权限,必须编辑默认域控制器策略

3-若要允许代表用户在域控制器上启动任务,还必须编辑默认域控制器策略,并为用户授予作为批处理作业登录的权限。

4-在编辑默认域策略时要格外小心!

聚苯乙烯

简短的资源列表对我有帮助:


我认为,有关Habr的有用出版物,其主题与Windows日志有关:


结束

Source: https://habr.com/ru/post/zh-CN443386/


All Articles