[玩转系统] 如何使用审核策略检测谁删除了 Windows Server 上的文件?
作者:精品下载站 日期:2024-12-14 22:55:11 浏览:12 分类:玩电脑
如何使用审核策略检测谁删除了 Windows Server 上的文件?
您可以使用文件系统对象访问事件审核来识别创建、删除或修改特定文件的特定用户。在本文中,我们将向您展示如何为 Windows Server 2016 上的共享网络文件夹上的文件配置事件审核。配置审核后,您可以使用事件查看器中的信息来查找删除文件服务器上特定文件的用户。
当您从共享网络文件夹中删除文件时,该文件会立即删除,而不是发送到用户的回收站。可以通过以下方式获取共享文件夹上打开的文件列表。
如何在 Windows 上启用文件和文件夹访问审核策略?
默认情况下,Windows Server 上未启用文件系统对象访问审核。您可以使用组策略启用和配置审核设置。如果需要在多台服务器或多台计算机上启用审核策略,可以使用域 GPO(可使用
gpmc.msc
mmc 控制台)。如果您只想在一台服务器上配置审核,可以使用本地组策略编辑器。
打开本地组策略编辑器控制台 -
gpedit.msc
;
转到包含高级审核策略的 GPO 部分:Windows 设置 -> 安全设置 -> 高级审核策略配置 -> 对象访问;
打开审核文件系统策略并指定您只想记录对文件系统对象的成功访问事件(配置以下审核事件 -> 成功);
您还可以使用Windows 设置 -> 安全设置 -> 本地策略 -> 审核策略下的审核对象访问策略启用对本地对象访问的审核。但是,最好使用文件系统审核策略,因为它仅跟踪 NTFS 访问事件。
使用以下命令保存更改并更新本地组策略设置:
gpupdate /force
。
配置共享文件夹上的文件删除审核设置
现在,您需要在要跟踪访问的共享网络文件夹的属性中配置审核。运行文件资源管理器并打开文件夹属性。转到安全选项卡。单击高级按钮 -> 转到审核选项卡。
如果出现消息“您必须是管理员或已被授予适当的权限才能查看此对象的审核属性”,请单击继续按钮。
然后单击添加按钮指定要捕获其审核事件的用户或组。如果您想要跟踪所有用户的访问事件,请指定所有人组。
然后,您需要指定应记录用于访问对象的哪些权限。要仅在事件日志中保存文件删除事件,请单击显示高级权限按钮。在事件列表中,仅保留对文件夹和文件删除事件的审核 - 删除和删除子文件夹和文件。
提示。请记住,Windows 对象的审核策略需要额外的计算资源。小心使用它,始终尽量减少要记录的审核对象和事件的数量。
$Path = "E:\Public"
$AuditChangesRules = New-Object System.Security.AccessControl.FileSystemAuditRule('Everyone', 'Delete,DeleteSubdirectoriesAndFiles', 'none', 'none', 'Success')
$Acl = Get-Acl -Path $Path
$Acl.AddAuditRule($AuditChangesRules)
Set-Acl -Path $Path -AclObject $Acl
现在,如果用户删除共享网络文件夹中的任何文件或文件夹,安全日志中将显示文件系统 -> 审核成功文件删除事件,事件 ID 为 4663(来自 Microsoft Windows 安全审核源)。
打开事件查看器 mmc 控制台 (
eventvwr.msc
),展开Windows 日志 -> 安全部分。按 EventID 4663 启用事件日志过滤器。
在事件查看器中打开任何剩余事件。如您所见,它包含有关已删除文件的名称、删除该文件的用户的帐户以及进程名称的信息。
An attempt was made to access an object.
Subject:Security ID: CORP\jsmith
Account Name: jsmith
Account Domain: CORP
Logon ID: 0x32B12627
Object:Object Server: Security
Object Type: File
Object Name: E:\Distr\Backup.rar
Handle ID: 0x7bc4
Resource Attributes: S:AI
Process Information:
Process ID: 0x4
Process Name:
Access Request Information:
Accesses: DELETE
Access Mask: 0x10000
启用文件访问审核策略后,您可以在安全日志中找到:
谁从共享网络文件夹中删除了该文件以及何时发生;
使用什么应用程序(进程)删除了该文件;
要恢复的备份的日期是哪一天。
如何将文件删除事件写入SQL数据库(MySQL/MSSQL)?
然而,即使启用了对已删除文件的审核,在日志中查找某些内容也可能很麻烦。首先,在数千个事件中找到特定条目非常困难(在Windows中没有方便的工具来通过灵活的过滤器搜索事件)。其次,如果文件很久以前被删除,则日志中可能不存在该事件,因为它被新事件覆盖。
您可以将所有文件删除事件保存到 SQL 数据库。您可以使用 Microsoft SQL Server、Elasticsearch 或 MySQL/MariaDB 数据库来存储事件。
在此示例中,我们将向您展示如何将审核事件记录到 MySQL 上的单独数据库表中。我将使用以下表格格式:
服务器名称;
被删除文件的名称;
日期和时间;
删除该文件的用户的名称。
创建此表的 MySQL 查询如下所示:
CREATE TABLE deleted_items (id INT NOT NULL AUTO_INCREMENT, server VARCHAR(100), file_name VARCHAR(255), dt_time DATETIME, user_name VARCHAR(100), PRIMARY KEY (ID));
注意。使用 PowerShell 查询 MySQL 数据库一文前面介绍了如何从 PowerShell 访问 MySQL 数据库的示例。
如果您想使用 Microsoft SQL Server 数据库,请查看文章“如何从 PowerShell 运行 MSSQL Server 查询? ”
要从当天的安全日志中获取 EventID 4663 的事件,您可以使用以下 PowerShell 脚本:
$today = get-date -DisplayHint date -UFormat %Y-%m-%d
Get-WinEvent -FilterHashTable @{LogName="Security";starttime="$today";id=4663} | Foreach {
$event = [xml]$_.ToXml()
if($event)
{
$Time = Get-Date $_.TimeCreated -UFormat "%Y-%m-%d %H:%M:%S"
$File = $event.Event.EventData.Data[6]."#text"
$User = $event.Event.EventData.Data[1]."#text"
$Computer = $event.Event.System.computer
}
}
下一个 PowerShell 脚本会将您获取的数据写入远程服务器(IP 地址为 10.1.1.13)上的 MySQL 数据库:
Add-Type -Path ‘C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.8\Assemblies\v4.5\MySql.Data.dll'
$Connection = [MySql.Data.MySqlClient.MySqlConnection]@{ConnectionString='server=10.1.1.13;uid=posh;pwd=P@ssw0rd;database=aduser'}
$Connection.Open()
$sql = New-Object MySql.Data.MySqlClient.MySqlCommand
$sql.Connection = $Connection
$today = get-date -DisplayHint date -UFormat %Y-%m-%d
Get-WinEvent -FilterHashTable @{LogName="Security";starttime="$today";id=4663} | Foreach {
$event = [xml]$_.ToXml()
if($event)
{
$Time = Get-Date $_.TimeCreated -UFormat "%Y-%m-%d %H:%M:%S"
$File = $event.Event.EventData.Data[6]."#text"
$File = $File.Replace(‘\’,’|’)
$User = $event.Event.EventData.Data[1]."#text"
$Computer = $event.Event.System.computer
$sql.CommandText = "INSERT INTO deleted_items (server,file_name,dt_time,user_name ) VALUES ('$Computer','$File','$Time','$User')"
$sql.ExecuteNonQuery()
}
}
$Reader.Close()
$Connection.Close()
将事件保存到外部数据库后,可以清除该事件日志。
现在,要找出谁删除了文件“AnnualReport.DOC”,只需在 PowerShell 控制台中运行以下脚本即可:
$DeletedFile = "%AnnualReport.DOC%"
Set-ExecutionPolicy RemoteSigned
Add-Type -Path ‘C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.8\Assemblies\v4.5\MySql.Data.dll'
$Connection = [MySql.Data.MySqlClient.MySqlConnection]@{ConnectionString='server=10.1.1.13;uid=posh;pwd=P@ssw0rd;database=aduser'}
$Connection.Open()
$MYSQLCommand = New-Object MySql.Data.MySqlClient.MySqlCommand
$MYSQLDataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter
$MYSQLDataSet = New-Object System.Data.DataSet
$MYSQLCommand.Connection=$Connection
$MYSQLCommand.CommandText="SELECT user_name,dt_time from deleted_items where file_name LIKE '$DeletedFile'"
$MYSQLDataAdapter.SelectCommand=$MYSQLCommand
$NumberOfDataSets=$MYSQLDataAdapter.Fill($MYSQLDataSet, "data")
foreach($DataSet in $MYSQLDataSet.tables[0])
{
write-host "User:" $DataSet.user_name "at:" $DataSet.dt_time
}
$Connection.Close()
您现在可以在 PS 控制台中看到用户名和文件被删除的时间。
注意。由于发现了一个问题,符号“
\
” 没有写入数据库,我们已将其替换为“
|
”。因此如果必须显示文件的完整路径,可以在从数据库中选择时进行反向替换:
$DataSet.file_name.Replace(‘|’,’\’).
将事件日志中的信息写入数据库的脚本可以在一天结束时使用任务计划程序运行,或者附加到文件删除EventID(On Event),这会更消耗资源。这取决于系统的要求。
提示。确保将安全事件日志文件的最大大小设置为足以记录当天的所有事件。否则,您将不得不每天甚至在触发器上多次运行将数据导出到数据库的任务。通常,工作站上的最大日志大小必须至少为64 MB,Windows 文件服务器上的最大日志大小必须至少为262 MB。覆盖旧事件的选项应保持启用状态(根据需要覆盖事件)。
如果有必要,您可以创建一个简单的PHP网页,以更方便的形式获取删除文件的用户的信息。
重要提示。如果日志包含用户删除文件的条目,请不要急于将其解释为故意或恶意操作。许多程序(尤其是 MS Office 应用程序)在保存更改时会创建一个临时文件,然后删除旧版本的文件。在这种情况下,启用记录删除文件的进程名称(ProcessName fileld),您可以根据它解析文件删除事件。或者您可以过滤此类进程的事件,例如 winword.exe、excel.exe 等。
将文件删除审核事件记录到文本文件
如果您不想使用单独的数据库服务器,可以将文件删除审核事件保存到纯文本日志文件中。使用此 PowerShell 脚本将输出保存到文本文件:
$Outfile = "C:\Logs\Deleted-file-history-log.txt"
$today = get-date -DisplayHint date -UFormat %Y-%m-%d
Get-WinEvent -FilterHashTable @{LogName="Security";starttime="$today";id=4663} | Foreach {
$event = [xml]$_.ToXml()
if($event)
{
$Time = Get-Date $_.TimeCreated -UFormat "%Y-%m-%d %H:%M:%S"
$File = $event.Event.EventData.Data[6]."#text"
$User = $event.Event.EventData.Data[1]."#text"
$strLog = $Computer + " " + $File + " " + $Time + " " + $User
$strLog | out-file $Outfile -append
}
}
因此,我们提出了一种想法和系统的一般模型来审核和存储共享网络文件夹中已删除文件的信息。如果需要,可以轻松对其进行修改以满足您的要求。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag