安全日志位置在://ad/C$/WINNT/system32/config/secevent.evt
在WIN2000上设不出来能让普通用户查询安全日志的,普通域用户可以直接查询“应用程序”与“系统日志”,但却不能查询“安全日志”,只有把普通域用户归到“管理稽核及安全日志”才能访问,但这样,普通域用户又可以删除安全日志了。
我试着把secevent.evt共享全开,仍无法访问
使用者权限指派---管理稽核及安全日志加入该用户 不成功,但重新登录,成功,不过也可以删除
想对文件设置拒绝修改权限,但发现权限设上去,再过一会又被清空了。
看到几种解决方案:安装一个MOM(Microsoft Operations Manager)专门进行安全日志的管理,需要花钱,并且要多安装软件
通过dumpel导成文本文件,然后用户再看这个文本文件
把安全日志另存为日志文件,然后再用事件查看器查看
甚至把安全日志文件直接拷贝出来,对其标识进行修改,然后让其它用户可以在事件查看器中查看
但以上三种方案都存在一个时间差,关联动作多等缺点
最后我们使用如下方案:建立一个ASP文件,即时读取安全日志。
ASP文件代码如下:
<%@ LANGUAGE="VBSCRIPT"%>
<HTML>
<HEAD>
<TITLE>Security Logs</TITLE>
</HEAD>
<BODY style="font-family:宋体; font-size:9pt;">
<%
Set wbemServices = GetObject("winmgmts:{(Security)}\\.\root\cimv2")
Set wbemObjectSet = wbemServices.ExecQuery _
("Select * From Win32_NTLogEvent Where Type='audit failure'")
i=1
For Each wbemObject In wbemObjectSet
sSJ = wbemObject.TimeGenerated
sSJ = left(sSJ, 4) & "-" & mid(sSJ, 5, 2) & "-" & mid(sSJ, 7, 2) & " " & mid(sSJ, 9, 2) & ":" & mid(sSJ, 11, 2) & ":" & mid(sSJ, 13, 2)
%>
XH: <%=wbemObject.RecordNumber%><br/>
SJ: <%=sSJ%><br/>
LX: <%=wbemObject.CategoryString%><br/>
Event: <%=wbemObject.EventCode%><br/>
Message: <%=wbemObject.Message%><br/>
<br/>
<%
i=i+1
if i>200 then exit for
Next
%>
</BODY>
</HTML>
也要注意在WMI的属性的安全性中,要允许everyone远程访问。
后来发现我把我测试的帐号分配了“管理稽核及安全日志”的权限,对于普通帐号还是一片空白。只好再试。在IIS中对该ASP文件属性中,如果把有“管理稽核及安全日志”的测试帐号做为匿名登录的对应帐号,并且将帐号分配“以批次工作登入”的权限,这样普通用户访问该文件时,就是使用测试帐号,而测试帐号可以“管理稽核及安全日志”,所以就把结果给列出来了。这下正常了。