监视 Windows Server 中的文件更改

监视 Windows Server 中的文件更改

在发生多起非常重要的文件被删除/损坏的事件后,我决定启用审计来记录对文件所做的所有更改以及究竟是谁访问了这些文件以及他做了哪些操作。

我正在使用 Windows Server 2012 R2,我做了一些研究来找到如何监视对文件所做的更改,并进行了以下操作:

  1. 通过共享文件夹属性的安全选项卡启用审核。
  2. 将“安全”日志限制设置为 10GB,并在满时启用存档。
  3. 一年后,我得到了 10 个日志文件,大小为 100GB。
  4. 当发生另一次删除时,我必须打开每个文件并过滤 ID 为 4663、4624、5140 和 4660 的文件。这些文件无法加载,占用了大量的 RAM
  5. 我在小文件上进行了测试,过滤、搜索和导航并不实用
  6. 我使用 Log Parser 2.2 将其转换为 CSV,但没有事件详细信息的列,并且“描述”列显示“无法找到源“Microsoft-Windows-Security-Auditing”中事件 ID 4624 的描述。本地计算机可能没有必要的注册表信息或消息 DLL 文件来显示来自远程计算机的消息”

我的问题是:

  • 有没有办法只存档特定事件 ID?
  • 我可以存档/转换为 CSV 吗?保留所有事件详细信息/或任何其他更实用的格式/查看器,最好是开源的?
  • 4663、4624、5140 和 4660 这些 ID 真的准确代表已删除的
    文件吗?
  • 是否有指南/手册来解释与此特定目的有关的记录事件?

答案1

事件 ID 4659:请求一个对象的句柄并意图删除。

示例过滤器:

<QueryList>
  <Query Id="0" Path="Security">
    <Select Path="Security">*[System[(EventID=4659)]] and *[EventData[Data[@Name='ObjectName']='C:\SomeDirectory\DeletedFileName.ext']]</Select>
  </Query>
</QueryList>


<QueryList>
  <Query Id="0" Path="file://C:\SomeDirectory\Security.evtx">
    <Select Path="file://C:\SomeDirectory\Security.evtx">*[System[(EventID=4659)]]  and *[EventData[Data[@Name='ObjectName']='C:\SomeDirectory\DeletedFileName.ext']]</Select>
  </Query>
</QueryList>

4663、4624、5140 和 4660 这些 ID 真的准确代表已删除的文件吗?

不。

4624:帐户已成功登录
5140:已访问网络共享对象
4660:不包含已删除对象的名称
4663:适用于本地删除

PowerShell 示例:

Get-WinEvent -ComputerName CONTOSOFP1 -LogName Security -FilterXPath "*[System[(EventID=4659)]] and *[EventData[Data[@Name='ObjectName']='C:\SomeDirectory\DeletedFileName.ext']]" | Format-List -Property *  

Get-WinEvent -Path C:\SomeDirectory\Security.evtx -FilterXPath "*[System[(EventID=4659)]] and *[EventData[Data[@Name='ObjectName']='C:\SomeDirectory\DeletedFileName.ext']]" | Format-List -Property *   

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.diagnostics/get-winevent?view=powershell-6

相关内容