|
Send me a mail if a user is locked
Sende mir eine Mail wenn ein Benutzer wegen zu vieler falscher Anmeldungen gesperrt wurde:
Dazu wird auf jedem (!) DC in den geplanten Tasks ein Event Viewer Tasks minimal erstellt der nach dem Event 4740 im Protokoll Security sucht.
Als Quelle wird Microsoft Windows security auditing. angegeben.
Die unten angegebene Datei maillastevent.vbs wird auf jeden DC in ein Verzeichnis kopiert und die Werte in ihr
absender, mailserver, empfaenger konfiguriert.
Als Aktion wird das Programm C.\windows\system32\cscript.exe gestartet.
Als Argument wird die u.g. Datei c:\temp\maillastevent.vbs angegeben.
Anschließend wird mit einem Testaccount eine Benutzersperrung provoziert um die Funktion zu testen.
- maillastevent.vbs
'maile mir den angegebenen Event wenn ein Benutzer gesperrt wird / rb / 2015
'--------------------------------------------------Settings-------------------------------------------------
'Gibt die Maximale Anzahl der zurückgelieferten Einträge an
'Werte für System Log
maxwert = 1
'gibt an wieviele Tage zurück gegangen werden soll
zeitsp = 1
'Email Settings
absender = "userwatch@domain.de"
mailserver = "meinexchange"
empfaenger = "admin@domain.de"
EventID = 4740
'Set oArg = wscript.arguments
'strServer = oArg(0)
strServer = "."
'--------------------------------------------Settings End---------------------------------------------------
mail = ""
Account = ""
Computer = ""
Mess = ""
ifertig = "False"
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strServer & "\root\cimv2")
Set objInstances = objWMI.ExecQuery ("Select * from Win32_NTLogEvent WHERE Logfile = 'Security' and EventCode = " & EventID)
dat = now() - zeitsp
i = 0
For Each objInstance in objInstances
dat1 = objInstance.TimeGenerated
dat1 = dConvertWMItoVBSDate(dat1)
if i < maxwert and dat1 > dat Then
With objInstance
Mess = replace(.Message, ".", ".<br>")
Mess = replace(Mess, "Account Name:", "<br>Account Name:")
Mess = replace(Mess, "Account Domain:", "<br>Account Domain:")
Mess = replace(Mess, "Logon ID:", "<br>Logon ID:")
Mess = replace(Mess, "Account That Was Locked Out:", "<br>Account That Was Locked Out:")
Mess = replace(Mess, "Security ID:", "<br>Security ID:")
Mess = replace(Mess, "Additional Information:", "<br>Additional Information:")
Mess = replace(Mess, "Caller Computer Name:", "<br>Caller Computer Name:")
mail = mail & "Server: " & .ComputerName & "<br>"
mail = mail & "EventID: " & .EventCode & "<br>"
mail = mail & "Message:" & Mess & "<br>"
mail = mail & "Source: " & .SourceName & "<br>"
mail = mail & "Datum: " & dConvertWMItoVBSDate(.TimeGenerated) & "<br>"
Mess2 = Split(mail,"<br>")
Account = RTrim(Right(Mess2(10),Len(Mess2(10)) -15))
Computer = Right(Mess2(12),Len(Mess2(12)) -22)
i = i + 1
End With
On Error Goto 0
Elseif i > maxwert Then
ifertig="True"
exit for
Elseif dat1 < dat Then
ifertig="True"
exit for
end if
Next
Set objEmail = CreateObject("CDO.Message")
objEmail.From = absender
objEmail.To = empfaenger
objEmail.Subject = "User " & Account & " is locked from " & Computer & " on DC " & strServer
objEmail.HTMLbody = "<HTML><Body>" & mail & "<br>" & "</body></html>"
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = mailserver
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objEmail.Configuration.Fields.Update
objEmail.Send
wscript.quit
''''''''''''''''''''''
Private Function dConvertWMItoVBSDate(sDate)
Dim sMonth, sDay, sYear, sHour, sMinutes, sSeconds
sMonth = Mid(sDate,5,2)
sDay = Mid(sDate,7,2)
sYear = Mid(sDate,1,4)
sHour = Mid(sDate,9,2)
sMinutes = Mid(sDate,11,2)
sSeconds = Mid(sDate,13,2)
dConvertWMItoVBSDate = DateSerial (sYear, sMonth, sDay) + TimeSerial (sHour, sMinutes, sSeconds)
End Function
|
|