监控账户登录
对于有很大权限的账户,比如域管理员账户我们希望能够实时监控他的登录情况。如果账户被他人盗取,我们在第一时间就判断是正常使用还是他人盗取后使用的。
这里介绍一种不借助第三方工具就能简单实现的邮件监控账户登录的方法。
首先,打开安全日志,找到用户登录的日志。在Windows 2012 R2中记录的日志是4626。其中记录了用户名,登录的客户端。
接下去就要新建计划任务了。
在触发器这里选择发生事件时,并选择自定义然后新建事件筛选器。然后再XML选项卡中勾选,手动编辑查询。然后贴入以下代码:
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">
*[EventData[Data[@Name='SubjectUserName']and (Data='jewel')]] and
*[System[(EventID='4624')]]</Select>
</Query>
</QueryList>
这个表示,筛选事件ID为4624并且用户名为jewel的事件。
然后,在操作这里执行两个程序。
第一个将日志导出为TXT文件。
第二个将TXT文件中的内容以邮件的形式发送给特定的收件人。
导出日志的BAT内容如下:
wevtutil.exe qeSecurity "/q:*[System [(EventID=4624)]]" /f:text /rd:true /c:1 >c:\evt\adminlogon.txt
发送邮件的Powershell文件内容如下:
###########DefineVariables########
$fromaddress ="[email protected]"
$toaddress ="[email protected]"
$Subject ="Admin logon"
$body =(Get-Content C:\evt\adminlogon.txt) -join '<BR>'
$smtpserver ="mail.moon.com"
####################################
$message =new-object System.Net.Mail.MailMessage
$message.From =$fromaddress
$message.To.Add($toaddress)
$message.IsBodyHtml= $True
$message.Subject= $Subject
$message.body =$body
$smtp =new-object Net.Mail.SmtpClient($smtpserver)
$smtp.Send($message)
配置计划任务执行powershell脚本
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
-command"& 'C:\evt\sendmail.ps1'"
接着就可以收到邮件了。
这个计划任务需要在所有域控制器上部署,才能确保记录所有这个受监控账户的登录情况。