事件日志监听器突然解析整个安全日志。

问题描述 投票:1回答:1

我有一个简单的VB.Net窗体应用程序,它有一个Windows安全日志的监听器。它的配置是,每当网络登录成功或失败(事件ID 46245,登录类型3),它就会记录相关的源IP和用于登录的用户名,并打印这些(与程序的 自己 时间戳)到我的输出日志表格。

它工作得很好--直到我无法确定的原因,程序突然读取了我的 全部 Windows安全日志,并将发生过的每一个 "匹配 "事件都转储到表格中--这将使程序立即崩溃(实际上是冻结程序,但我先将其杀死......当这种情况发生时,需要很长的时间才能完成)。

现在,在检查一次这样的事件的输出时,时间戳与实际的事件日志不符。他们从程序 "恐慌 "并从头到尾读取整个日志的时间开始。所以,一个两天前发生的事件,在程序中却有一个今天的时间戳,因为那是程序 "读取 "数据的时候。

但是,这到底是怎么发生的呢?EntryWritten 事件应该只有在每个事件真正被添加时才会被触发? 这就像日志中的每一个条目都突然变成了 "新条目 "一样。 这似乎只发生在我的Windows 10 PC上,而不是在我的Windows Server 2019机器上。

可能的触发器(或至少是同步的)事件已经包括。

  • 从另一台机器登录到这台机器上的共享文件夹。
  • 从本机登录到另一台机器上的RDP。
  • 在Microsoft Edge中打开一个网站

我在这里完全迷茫了;我甚至不知道这是一个Stack Overflow的问题还是一个超级用户的问题......但由于交叉张贴是不允许的,我就从这里开始吧。另外值得注意的是,当这种情况发生时,甚至没有添加新的事件。它停在洪水开始时日志的确切位置;实际上,洪水开始后发生的新事件似乎不会被包括在洪水中。(我可能错了。但我没有一个可靠的方法来检查--很遗憾,上述方法是不可重复的。.)

更新。 我可以100%可靠地诱发 "事件召回洪灾",通过反复失败的RDP登录从有关机器到另一台机器。不知道为什么这会导致安全日志中的每一个事件都会触发 "事件召回洪水"。EntryWritten 事件,但...

vb.net event-log
1个回答
1
投票

Windows 10 (Ver. 1909 Build 18363.778)中的安全事件日志(可能还有其他日志)在达到容量并被修剪时将 "重新处理 "整个日志,导致日志中的所有剩余事件以 "新事件 "的形式显示给任何附加的事件。EventLog 听众,导致大量的 EventWritten 触发器,如果日志很大,就会挂起一个应用程序。(在写这篇文章的时候,最小大小是20Mb,大约有31,000个事件......所以是的。)

这种影响是可以减少的。(1) 暂时性的,通过清空日志;或 (2) 更加持久,通过将日志配置为"Archive the log when full, do not overwrite events."

enter image description here

巨大的感谢安德鲁-莫顿的一针见血的提示,在哪里寻找! 正如他在评论中提到的那样,这 "似乎是一个错误"。它现在已经被报告给微软反馈中心,并提供了文档。

© www.soinside.com 2019 - 2024. All rights reserved.