按用户和登录类型过滤安全日志


17

我被要求找出上周用户何时登录系统。现在,Windows中的审核日志应包含我需要的所有信息。我认为如果我使用特定的AD用户和登录类型2(交互式登录)搜索事件ID 4624(登录成功),它应该可以为我提供所需的信息,但是在我的生命中,我无法弄清楚如何进行实际过滤事件日志以获取此信息。是否可以在“事件查看器”内部使用,还是需要使用外部工具将其解析到此级别?

我发现http://nerdsknowbest.blogspot.com.au/2013/03/filter-security-event-logs-by-user-in.html,这似乎是我需要的一部分。我稍加修改,只给了我最近7天的价值。以下是我尝试过的XML。

<QueryList>
  <Query Id="0" Path="Security">
    <Select Path="Security">*[System[(EventID=4624) and TimeCreated[timediff(@SystemTime) &lt;= 604800000]]]</Select>
    <Select Path="Security">*[EventData[Data[@Name='Logon Type']='2']]</Select>
    <Select Path="Security">*[EventData[Data[@Name='subjectUsername']='Domain\Username']]</Select>
  </Query>
</QueryList>

它只给了我最后7天的时间,但其余的时间都无效。

有人可以协助我吗?

编辑

感谢Lucky Luke的建议,我一直在进步。以下是我当前的查询,尽管正如我将解释的那样,它不返回任何结果。

<QueryList>
  <Query Id="0" Path="Security">
    <Select Path="Security">
     *[System[(EventID='4624')]
     and
     System[TimeCreated[timediff(@SystemTime) &lt;= 604800000]]
     and
     EventData[Data[@Name='TargetUserName']='john.doe']
     and
     EventData[Data[@Name='LogonType']='2']
     ] 
    </Select>
  </Query>
</QueryList>

正如我提到的,它没有返回任何结果,所以我一直在弄弄它。我可以得到它以正确产生结果,直到我在LogonType行中添加为止。在那之后,它不返回任何结果。知道为什么会这样吗?

编辑2

我将LogonType行更新为以下内容:

EventData[Data[@Name='LogonType'] and (Data='2' or Data='7')]

这应该捕获“工作站登录”以及“工作站解锁”,但是我仍然一无所获。然后,我对其进行修改以搜索其他类型很多的登录类型,例如3或8。这使我相信查询可以正常工作,但是由于某种原因,事件日志中没有登录类型等于2的条目,这对我来说是没有意义的。是否可以关闭此功能?


如果您获得其他登录类型的结果,则查询似乎正在运行。您可能需要查看其他登录类型,尤其是经常使用的登录类型11,而不是Vista和更高版本上的登录类型2。您可以在此处查看所有登录类型:myeventlog.com/search/show/799。我敢打赌,您的登录类型为11。让我知道。
幸运卢克

有趣的是,我得到的唯一非3结果是我确定的8。由于某些原因,我希望不会看到2、7或11。
Trido 2014年

您是否已在本地安全策略(或域策略,如果它是域的一部分)中验证了审核设置,以确保所有登录都已得到审核?让我知道您是否需要更多信息。
幸运卢克

这确实是问题所在。我进入了组策略,它被关闭了。
Trido 2014年

有趣。您最终打开了哪个确切设置?有点奇怪的是,您看到了其他登录事件,但没有看到控制台登录。我的印象是它们都配置了相同的设置。
幸运卢克

Answers:


17

您处在正确的轨道上-查询中的错误之一是“登录类型”中的空格,它应该只是“ LogonType”。

我在下面粘贴了一个我刚刚验证过的作品的查询。有点简化,但您明白了。它向您显示来自用户“ john.doe”的所有4624个登录类型为2的事件。

<QueryList>
  <Query Id="0" Path="Security">
    <Select Path="Security">
      *[
        EventData[Data[@Name='LogonType']='2']
        and
        EventData[Data[@Name='TargetUserName']='john.doe']
        and
        System[(EventID='4624')]
      ] 
    </Select>
  </Query>
</QueryList>

您可以在事件查看器中找到有关XML查询的更多信息:http : //blogs.technet.com/b/askds/archive/2011/09/26/advanced-xml-filtering-in-the-windows-event- viewer.aspx

您可以使用wevtutil.exe从命令行查询事件:http ://technet.microsoft.com/zh-cn/magazine/dd310329.aspx 。


嗯,这很奇怪。当我运行它时,我得到0结果返回。即使我将查询简化为仅登录类型。我真的不明白为什么它不起作用。
Trido 2014年

我用当前查询和问题更新了问题。
Trido 2014年

这正是我需要找出谁通过RDP连接到我的服务器之一的功能。我只需要将LogonType更改为“ 10”(并删除有关用户名的位)。
Charles Burge

1

我找到了这个问题,必须做一些工作才能将内容从接受的答案和问题更新中解析出来,以获得功能性的解决方案。我以为自己会在此处发布完整,有效的查询语法以供将来参考:

<QueryList>
  <Query Id="0" Path="Security">
    <Select Path="Security">
    *[System[(EventID=4624)
    and
    TimeCreated[timediff(@SystemTime) &lt;= 2592000000]]
    and
    EventData[Data[@Name='TargetUserName'] and (Data='john.doe')]
    and
    EventData[Data[@Name='LogonType'] and (Data='10')]]
    </Select>
  </Query>
</QueryList>

以上查询应根据以下参数来缩小事件范围:

  • 安全日志中的事件。
  • 事件ID 6424
  • 在过去30天内发生。
  • 与用户john.doe关联。
  • 使用LogonType 10。

您可以通过更改(Data='10')上面的代码来更改过滤器中的LogonType 。例如,您可能想做(Data='2')(Data='10' or Data='2')

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.