Уведомление о блокировке учетной записи на почту
Задача: Хочу заранее знать, когда пользователь или кто-либо блокирует доменную учетную запись дабы предпринять меры по уточнению почему-так происходит и откуда это происходит.
Т.е. если с учетом доменной политики пользователь несколько раз вводит неправильный пароль (по практике 3 раза) от учетной записи она блокируется или же подключается на корпоративные ресурсы. Если в его профиле настроен корпоративный мессенджер QIP 2012
и также запись блокируется, то можно вспомнить что после совершенной смены пароля пароль также в нем нужно заменить. Конечно если не используется SSO
авторизация клиента Jabber на OpenFire сервере (надо бы как-нибудь опубликовать такую заметку).
Что понадобится, для осуществления данной задачи:
- Домен контроллер на базе
Windows Server 2012 R2 Std
- Почтовый сервер в компании, у меня пока
Exchange 2010 (14.03.0248.002)
- Заметка: «Настройка исходящей почты в 1C через Exchange 2010»
Шаг №1:
На домен контроллере (под управлением Windows Server 2012 R2 Std
) создаю каталог script
на диске C:\
куда помещаю написанный скрипт на PowerShell
со следующем содержании который извлекает из Журнала Security
вхождение за текущий день Event ID 4740
Я создаю и отлаживаю скрипты через Windows PowerShell ISE
который запущен от имени «Run as administrator
»
Ниже мой скрипт.
C:\script\email.ps1
123456789 | $EmailFrom = “alerter@polygon.com”$EmailTo = “ekzorchik@polygon.com, alektest@polygon.com”$EmailSubject = “Account on Domain lockout notification”$EmailBody = Get-EventLog -Newest 1 -LogName Security -InstanceId 4740 | fl | Out-String$EmailSMTPServer = “mail”$EmailSMTPClient = New-Object Net.Mail.SmtpClient($EmailSMTPServer, 25)$EmailSMTPClient.EnableSSL = $false$EmailSMTPClient.Credentials = New-Object System.Net.NetworkCredential(“polygon\com”, “<PASS_OT_ALERTER>”);$EmailSMTPClient.Send($EmailFrom, $EmailTo, $EmailSubject, $EmailBody) |
После не забываем сохранить внесенные изменения в скрипт.
На заметку:
Можно создать почтовую группу и указать в скрипте ее дабы не указывать через запятую почтовые ящики.
Шаг №2:
Проверяю, как он (Скрипт: email.ps1
) отрабатывает:
123 | PS C:\Windows\system32> cd C:\scripts PS C:\scripts> .\email.ps1 |
И мне на почту приходит сообщение о сегодняшнем событии с кодом Event ID 4740:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 | От кого: alerter@polygon.com Кому: ekzorchik@polygon.com;alektest@polygon.com Тема письма: Account on Domain lockout notification Тело письма: Index : 31448043 EntryType : SuccessAudit InstanceId : 4740 Message : A user account was locked out. Subject: Security ID: S-1-5-18 Account Name: SRV-DC01$ Account Domain: POLYGON Logon ID: 0x3e7 Account That Was Locked Out: Security ID: S-1-5-21-3047235358-3121078203-50501672-1155 Account Name: alektest2 Additional Information: Caller Computer Name: WRKST009A Category : (13824) CategoryNumber : 13824 ReplacementStrings : {alektest2, WRKST009A, S-1-5-21-3047235358-3121078203-50501672-1155, S-1-5-18…} Source : Microsoft-Windows-Security-Auditing TimeGenerated : 27.02.2020 11:52:47 TimeWritten : 27.02.2020 11:52:47 UserName : |
Ну что понятно все. В принципе это достаточно.
Шаг №3:
Создаю на домен контроллер задание в планировщике
Win + X – Control panel – Administrative Tools – Task Scheduler – Task Scheduler (local) – Task Scheduler Library – Event Viewer Tasks - Create Task
Name: Security_Microsoft-Windows-Security-Auditing_4740
When running the task, use the following user account: POLYGON\ekzorchik
Run whether user is logged on or not: отмечаю
Do not store password. The task will only have access to local computer resources: отмечаю
Вкладка Trigger
Begin the task: On an event
Settings: Basic
Log: Security
Source: Microsoft Windows security auditing
Event ID: 4740
Enabled: отмечаю галочкой
Вкладка Actions
Action: Start a program
Program/script: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Add arguments (optional): c:\script\email.ps1
Вкладка Conditions
Start the task only if the computer is on AC Power: отмечаю
Stop if the computer switches to battery power: отмечаю
Вкладка Settings
Allow task to be run on demand: отмечаю
Stop the task if it runs longer than: 3 days
If the running task does not end when requested, force it to stop: отмечаю
Шаг №4:
У меня было что задача не выполняется и в History
есть сообщение на этот счет
Event ID: 101
Task Scheduler failed to start “\Event Viewer Tasks\Security_Microsoft-Windows-Security-Auditing_4740” task for user “POLYGON\ekzorchik”. Additional Data: Error Value: 2147943785
Все кстати правильно у моей учетной записи ekzorchik
на домен контроллерах нет прав хотя она и входа в группу Domain Admins
. Даю ей права:
mstsc /v:Srv-dc01.POLYGON.COM – user&pass – Login: ekzorchik Pass: <PASSWOD> - Win + X – Control Panel – Administrative Tools – Group Policy Management – Group Policy Management – Forest: POLYGON.COM – Domains – POLYGON.COM – Domain Controllers
открываю на редактирование Default Domain Controllers Policy
и
Default Domain Controllers Policy [SRV-DC01.POLYGON.COM] – Computer Configuration – Policies – Windows Settings – Security Settings – Local Policies – User Rights Assignment – Log on as a batch job
и добавляю свою доменную административную учетную запись: ekzorchik
После нужно на домен контроллере сделать:
Win + X – Command Prompt (Admin) –
C:\Windows\system32>gpupdate /force
И задание начинает отрабатывать.
На заметку:
Самым правильным будет создать в домене группу и ей предоставить доступ, а себя в нее включить и под каждую задачу своя группа и включать туда себя.
Шаг №5:
Если вы в процессе отладки строки вызова Get-eventlog
получаете ошибку “ Get-eventlog: Requested registry access is not allowed
”, то решение просто как две копейки: Нужно запустить консоль командной строки powershell
или Windows PowerShell ISE
от имени Администратора
Итого я получил средство, посредством которого я в курсе блокировок учетных записей в домене на которых подействовала групповая политика домена.
На этом я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.