当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 在 Windows 上配置文件和文件夹访问审核 (GPO)

作者:精品下载站 日期:2024-12-14 01:51:34 浏览:17 分类:玩电脑

在 Windows 上配置文件和文件夹访问审核 (GPO)


Windows 中的文件系统审核策略允许监视对磁盘上特定文件和文件夹的所有访问事件。管理员可以启用审核策略来识别 NTFS 文件系统上的文件和文件夹创建、读取、修改和删除事件。文件系统审核最常用于控制对 Windows 文件服务器上多个用户可以同时访问的共享网络文件夹的访问和更改。

在 Windows 上启用文件系统对象访问审核策略

默认情况下,Windows 中不启用文件系统对象访问审核。可以通过组策略启用访问审核。要在独立服务器上配置审核策略,请使用本地组策略编辑器控制台 (

gpedit.msc

)。如果需要在AD域中的多台计算机上启用审核策略,请使用域GPO管理控制台(

gpmc.msc

)。

  1. 打开 GPO 编辑器并转到Windows 设置 -> 安全设置 -> 高级审核策略配置 -> 系统审核策略 -> 对象访问

  2. 打开审核文件系统并指定仅记录对文件系统对象的成功访问(配置以下审核事件 -> 成功

    [玩转系统] 在 Windows 上配置文件和文件夹访问审核 (GPO)

  3. 使用以下命令保存更改并更新本地组策略设置:

    gpupdate /force

或者从命令提示符启用本地文件系统审核策略。

列出可用的审核类别:

AuditPol.exe /list /subcategory:*

启用对成功的文件系统对象访问事件的审核:

AuditPol.exe /set /subcategory:"File System" /success:enable

检查当前审核设置:

AuditPol.exe /get /category:"Object Access"

[玩转系统] 在 Windows 上配置文件和文件夹访问审核 (GPO)

如何将审核策略应用于 Windows 中的文件夹或文件

即使启用策略来审核对文件和文件夹的访问,也不会向事件查看器发送任何实际事件。要监视的文件和文件夹的审核设置必须由管理员手动启用和配置。

例如,您的任务是跟踪 C:\Docs 文件夹中所有文件的读取/更改/创建事件。

  1. 打开文件夹属性并转到安全 -> 高级 -> 审核选项卡

    [玩转系统] 在 Windows 上配置文件和文件夹访问审核 (GPO)

  2. 单击添加,然后在主体字段中选择要监控其对象访问事件的用户和/或组。选择用户以审核所有用户的文件访问权限,或者如果您想要按系统进程包含文件访问事件,请选择所有人

  3. 在类型中,指定仅跟踪成功的访问事件 (

    Success

  4. 应用于下,您可以指定审核策略是否应用于文件夹、文件或子文件夹(默认值为此文件夹、子文件夹和文件

  5. 高级权限列表中,仅选择对要发送到审核日志的文件和文件夹的操作。例如,要仅监视读取和文件修改事件,请选择以下选项:

    List folder/read data

    ,

    Create files / write data

    ,

    Create folders / append data

    [玩转系统] 在 Windows 上配置文件和文件夹访问审核 (GPO)

    请参阅如何使用 Windows 审核策略查找从共享文件夹中删除文件的用户的示例。

  6. 保存审核设置。

配置文件系统访问审核策略时,仅对您需要的文件夹和文件启用审核。如果您对大量项目启用了访问审核,则事件查看器日志文件的大小会显着增加。

要启用对特定目录的审核,可以使用 PowerShell:

$Path = "C:\Docs"
$AuditChangesRules = New-Object System.Security.AccessControl.FileSystemAuditRule('BUILTIN\Users', 'Delete,DeleteSubdirectoriesAndFiles', 'none', 'none', 'Success')
$Acl = Get-Acl -Path $Path
$Acl.AddAuditRule($AuditChangesRules)
Set-Acl -Path $Path -AclObject $Acl

列出文件夹审核设置:

(Get-Acl "C:\Docs\" -Audit).Audit

[玩转系统] 在 Windows 上配置文件和文件夹访问审核 (GPO)

如果要递归扫描所有目录并查找启用了文件系统审核的子文件夹,请使用以下脚本:

$folders=Get-ChildItem "c:\docs" -Recurse |Where-Object {$_.PSIsContainer}
foreach ($folder in $folders)
{
$auditacl=(Get-Acl $folder.FullName -Audit).audit
if ($auditacl -ne "") {write-host $folder.FullName}
}

在 Windows 上查看文件系统访问事件

如果对启用审核的文件夹中的文件执行任何操作,审核策略会将日志写入事件查看器。查看事件:

  1. 打开事件查看器管理单元 (

    eventvwr.msc

  2. 转到 Windows 日志 -> 安全部分并按来源过滤事件:

    Microsoft Windows security auditing

    ,任务类别:

    File System

    [玩转系统] 在 Windows 上配置文件和文件夹访问审核 (GPO)

  3. 打开找到的任何事件。例如,EventID 为 4663 的事件(“

    An attempt was made to access an object

    “) 包含有关与该文件交互的用户的信息:

    Account Name

    :
    文件名:

    object_name

    :
    操作类型(在本例中写入文件): 访问:

    WriteData (or AddFile)

    [玩转系统] 在 Windows 上配置文件和文件夹访问审核 (GPO)

然而,事件查看器控制台的过滤和搜索功能相当差,用它来搜索特定文件上的所有操作很不方便。

最好使用 PowerShell 查找并列出特定文件系统对象的所有访问事件。以下 PowerShell 脚本在事件查看器中查找并列出指定文件的所有访问事件(Get-WinEvent cmdlet 用于查询事件查看器):

$fileName = "C:\docs\new_test_file.txt"
$results = Get-WinEvent -FilterHashtable @{logname='Security'; id=4663,4659} |`
Where-Object { $_.message -match $fileName -and $_.message -notmatch "Account Name:\s*machine$*"}`
foreach ($result in $results) {
    $Account = $result.properties[1].Value
    $objectName = $result.properties[6].Value
    $accessMask = $result.properties[8].Value
    if ( $accessMask -like "*00000000-*") { $accessMask=$result.properties[9].Value}  
    $accessMask2 = $result.properties[9].Value
        $fileOperation = ""
        switch -Wildcard ($accessMask) {
            "*%%1538*" { $fileOperation = "READ_CONTROL" }
            "*%%4416*" { $fileOperation = "ReadData (or ListDirectory)" }
            "*%%4417*" { $fileOperation = "WriteData (or AddFile)" }
            "*%%4418*" { $fileOperation = "AppendData (or AddSubdirectory or CreatePipeInstance)" }
            "*%%4419*" { $fileOperation = "ReadEA" }
            "*%%4420*" { $fileOperation = "WriteEA" }
            "*%%4423*" { $fileOperation = "ReadAttributes" }
            "*%%4424*" { $fileOperation = "WriteAttributes" }
            "*%%4426*" { $fileOperation = "Delete" }
            "*%%4428*" { $fileOperation = "ReadControl" }
            "*%%4429*" { $fileOperation = "WriteDAC" }
            "*%%4430*" { $fileOperation = "WriteOwner" }
            "*%%4432*" { $fileOperation = "Synchronize" }
            "*%%4433*" { $fileOperation = "AccessSystemSecurity" }
            "*%%4434*" { $fileOperation = "MaximumAllowed" }
            "*%%4436*" { $fileOperation = "GenericAll" }
            "*%%4437*" { $fileOperation = "GenericExecute" }
            "*%%4438*" { $fileOperation = "GenericWrite" }
            "*%%4439*" { $fileOperation = "GenericRead" }
            "*%%1537*" { $fileOperation = "DELETE" }
            default { $fileOperation = "Unknown" }
        }
        Write-Host   $result.Id  $result.TimeCreated  $Account $objectName $fileOperation  
} 
Write-Host $result.Id $result.TimeCreated $Account $objectName $fileOperation
}

[玩转系统] 在 Windows 上配置文件和文件夹访问审核 (GPO)

您可以将访问审核事件的结果列表发送到日志收集器、数据库、文本日志文件,或者在访问/修改受监视的文件时使用 Send-MailMessage 发送电子邮件通知。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯