如果本文中英文名词和中文名词出现冲突请以英文名词为准
很多时候我们想查询一下文件服务器上存储的文件到底是哪位用户、什么时候创建、修改、删除甚至变更权限等等的操作情况,就需要用到Windows系统的审核功能了。
对于文件的如上提到的使用情况的追踪,Windows是基于Object Access(对象访问)实现的。
这里提到的Audit 审核,不是指的需要对操作先申请然后进行批准的意思,它只是产生一个操作的记录,以备后续查看。
对于这个审核的实现,下面来看一下如何实现该功能且如何查看审核的结果(以Windows 10为例,Windows Server 2016是一样的界面,其它版本Windows系统也是类似)。
请注意功能都需要在相应的电脑上进行配置,比如需要审核哪台计算机上的文件就在哪台计算机上配置,如果想对哪台服务器上的文件(包括共享文件夹)就在哪台服务器上进行配置。其实系统针对共享的文件的操作也能进行审计,感觉应用意义不大这里就不介绍了,因为在文件服务器上进行了审计就足够了。
下面以记录文件的删除操作为例。
-
开启删除审核功能
打开控制面板,依次点击“System and Security 系统和安全”、“Administrative Tools 管理工具”、“Local Security Policy 本地安全策略”。
在“Local Security Policy 本地安全策略”窗口中,如下图依次展开左侧面板的节点“Security Settings 安全设置”、“Local Policies 本地策略”、“Audit Policy 审核策略”,并双击右侧列表中的“Audit object access 审核对象访问”,在弹出的对话框中勾选“Success 成功”选项(当然如果你想保留用户访问对象失败的记录也可以把“Failure 失败”也勾选上,但因为开启这个策略,日志的增长比较快,且会影响系统性能,还是尽量少记录为妙)。
完成设置后点“OK 确定”保存设置并关闭本地安全策略窗口。
上面的操作相当于打开了审核的开关,接下来完成第二步,设置要审核的内容的目标。
这里我以D:\Temp\AuditDemo文件夹为例进行设置:
在该文件夹上右击选择“Properties 属性”,接下来如下图所示依次点击“Security 安全”选项卡,点击“Advanced 高级”按钮,这样就会弹出下图右侧的该文件夹的高级安全设置窗口,依次点击“Auditing 审核”选项卡。
点击审核选项卡下面的“Add 添加”按钮会弹出如下图的窗口,点击顶部的超链接“Select a principal 选择一个主体”,在弹出的对话框中指定一个需要“监视”的用户、组或者内建安全主体,这里我想记录所有人的删除操作,所以我选择了Everyone,如下图。
类型我选择了“Success 成功”,因为我并不想记录不成功的记录,具体设置可以根据具体需求选择“Fail 失败”或者“All 全部”,应用到“This folder, subfolders and files 该文件夹及其子目录以及文件”,可以根据需要选择,只监视文件或者当前文件夹等等,跟权限的设置逻辑是一样一样的。
下面的基本权限太多了,我只需要记录删除的内容就行了,点一下右边的超链接“Show advanced permissions 显示高级权限”,窗口变化了:
选择上面跟删除相关的“Delete subfolders and files 删除子文件夹和文件”以及“Delete 删除”,点击“OK 确定”按钮保存完收工,回到之前的窗口,可以看到列表中新增加了一条设置:
还可以根据需要增加、删除或者编辑现有的项目,最后如上图勾选“Replace all child object auditing entries with inheritable auditing entries from this object 以此项目可继承的审核条目替换所有子对象的审计条目”(这样可以确保下面所有项目都能得到这个设置的应用,当然也可以根据具体需要不勾选本选项),点击“OK 确定”应用设置,整个设置就完成了。 -
如何查看审核结果
打开Event Viewer 事件查看器,展开如下图的节点“Security 安全”:
贼多的事件啊,需要过滤一下,在左侧节点“Security 安全”上右击,选择“Filter Current Log 筛选当前日志”,在弹出的对话框中找到图中那个框输入两个事件的编号4663和4659(这两个事件是主要的删除文件相关的事件,其他的一些修改权限等等的事件是不一样的,可以根据实际情况去筛选不同的事件查看),中间用逗号隔开,当然还有一些其它相关的事件编号,但这两个差不多了:
点“OK 确定”按钮回到事件查看器,跟删除的事件就都筛选出来了,当然这个筛选可以根据具体情况加入更多的内容进一步缩小查看的数据范围。
双击一个日志条目来看一下:
显然达到了目的。 -
带来的问题
这样设置了以后,问题来了,Windows事件查看器里的“Security 安全”里的日志增长太快了!像我这里每一秒钟都要增加好几千条!而且基本上都是我们并不需要的Event ID 5156,默认的日志文件大小是有限的,会循环删除,里面根本保存不了几十分钟的日志内容。我找了下解决方案,暂时没有找到不记录这个5156事件的解决方案,只好采取了一个笨办法,把日志文件归档,然后同时把它移到另一个空间足够的硬盘去,防止默认的系统盘被日志撑爆了(新的解决方案仍然在寻找中,找到一并在这里更新)。
方法如下图:打开Event Viewer 事件查看器,展开依次展开左侧节点“Event Viewer (Local) 事件查看器(本机)”、“Windows Logs Windows日志”,在节点“Security 安全”上右击,选“Properties 属性”,在弹出的窗口中指定新的“Log path 日志路径”,注意后面的日志文件文件名必须保存下来,只是前面的文件夹改成新的存储位置的,接下来把最大日志文件尺寸达到后的操作选择成“Archive the log when full do not overwrite events 日志满后归档而不覆盖”然后点“OK 确定”保存设定就好了。
当然这里你也可以根据实际情况不作这些改动,而只改动里面的最大日志文件大小131072KB也就是128MB,根据自己的需要增大这个日志文件的大小到合适的大小,其它保持不变。
达叔傻乐(darwin.zuo@163.com)