對於有很大權限的賬戶,比如域管理員賬戶我們希望能夠實時監控他的登錄情況。如果賬戶被他人盜取,我們在第一時間就判斷是正常使用還是他人盜取后使用的。
這里介紹一種不借助第三方工具就能簡單實現的郵件監控賬戶登錄的方法。
首先,打開安全日志,找到用戶登錄的日志。在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 ="dc@moon.com"
$toaddress ="jewel@moon.com"
$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'"
接着就可以收到郵件了。
這個計划任務需要在所有域控制器上部署,才能確保記錄所有這個受監控賬戶的登錄情況。