Как отреагировать на событие в журнале Windows

Все об администрировании Windows NT/2000/2003/2008/2012 Server (в т.ч. R2) серверов. Групповые политики, домены, безопасность и пр. То, чего не найдешь в бескрайних просторах Интернета. Решения тех проблем, которые не решаются типовыми ответами, которые можно получить в техподдержке Майкрософта - а именно: переустановить продукт или купить какой-ть другой лицензионный диск.


Модератор: UncleFather

Аватара пользователя
UncleFather
Site Admin
Сообщения: 1505
Зарегистрирован: 17 авг 2004 16:20, Вт
Контактная информация:

Как отреагировать на событие в журнале Windows

Сообщение UncleFather »

Проблема:

Часто возникает необходимость узнавать о том, что происходит какое-то событие в нашей операционной системе. Конечно, в нашем распоряжении есть журнал событий, и в нем регистрируется масса событий, таких как вход/выход пользователя в систему, старт или перезапуск системы и много, МНОГО, других событий. Часто эти события носят чисто информативный характер, но иногда они предупреждают нас о возможных проблемах, а в некоторых случаях явно указывают на ошибку.

Решение:

Хорошей практикой является, по крайней мере, раз в день просматривать журнал событий, но не все это делают, да и не всегда есть возможность. Конечно есть такие утилиты как Microsoft Operations Manager, но они требуют вложений и обучения персонала, что не всегда подходят для малого бизнеса.
Как показала практика, многим администраторам хочется узнавать о возникновении какого либо события по факту его возникновения и желательно методом оповещения, например, по средствам электронной почты. И как, опять же, показывает практика, не все знают, как это реализовать, а видь Windows содержит встроенное средство.
В данной статье речь пойдет о утилите командной строки eventtriggers.exe. Данная утилита находится в C:\WINDOWS\system32 и идет в стандартной поставке операционной системы Windows XP/2003.

eventtriggers.rar
eventtriggers
(43.09 КБ) 705 скачиваний

Примечание: В версиях ОС MS Windows Vista и выше, утилита eventtriggers.exe не требуется, так как в них триггеры можно создавать напрямую в графическом интерфейсе журнала событий, либо планировщика заданий.

01.png
02.png

Как работает Eventtriggers.exe?

Утилита создает триггер, который будет отслеживать появления события в журнале и выполнять указанное действие. Например, при появлении события с номер 528, в журнале событий безопасности, выполнять скрипт, который отправит письмо на почтовый ящик администратора.

Приступая к работе...

Что бы начать работать с утилитой eventtriggers.exe откройте консоль командной строки и наберите

Код: Выделить всё

eventtriggers

Вы увидите надпись

INFO: No event triggers found

если в вашей системе не создано триггеров или вы увидите список уже созданных триггеров.

Тоже самое можно увидеть если набрать

Код: Выделить всё

eventtriggers /query

Помимо этого существует еще два ключа так называемого «верхнего уровня». Это /Create и /Delete которые создают и удаляют тригера.

Дополнительную информацию по ключам утилиты можно получить набрав

Код: Выделить всё

eventtriggers /?

или пройдя по ссылке.

Узнать больше о событиях Windows вам поможет следующий раздел сайта Microsoft:
http://www.microsoft.com/technet/suppor ... anced.aspx

Оригинал статьи

Например, команда:

Код: Выделить всё

eventtriggers /create /TR "Lock Account" /TK "c:\Soft\Bat\LckAccount.vbs" /L Security /EID 644

создаст триггер, который будет запускать скрипт c:\Soft\Bat\LckAccount.vbs при блокировании учетной записи пользователя.


Alexander A. Manaeff©

Понравилась статья? Будем крайне признательны за репосты в соцсетях! Материально поддержать проект можно здесь

Мои странички:
ВКонтакте
Одноклассники
Youtube
Facebook
Instagram

Изображение
Изображение
Изображение
Изображение

Аватара пользователя
UncleFather
Site Admin
Сообщения: 1505
Зарегистрирован: 17 авг 2004 16:20, Вт
Контактная информация:

Уведомление администратору АД о блокировке учетной записи

Сообщение UncleFather »

Проблема:

Необходимо посылать администратору оповещение по электронной почте при блокировании учетной записи какого-либо пользователя в домене Active Directory, на базе сервера MS Windows 2003 R2 Rus.

Решение

Создаем на контроллере домена триггер:

Код: Выделить всё

eventtriggers /create /TR “Lock Account” /TK “C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe c:\Soft\Bat\LckAccount.ps1″ /L Security /EID 644

В папке c:\Soft\Bat создаем скрипт LckAccount.ps1 со следующим содержанием:

Спойлер

Код: Выделить всё

#Отправка уведомлений по наступлению события 644 – блокирование учетной записи пользователя 
#Автор оригинального скрипта: http://habrahabr.ru/post/147750/ 
#Изменения (itpadla.wordpress.com) 
#Дата создания 22.08.2012 
#Дата изменения: 20.03.2013 
#Описание: скрипт отправляет уведомление о определенном событии в Security Log в письме в человекочитаемом виде 
#Скрипт адаптирован под MS Windows 2003 Server Rus: http://manaeff.ru/forum
#Для создания триггера на сервере запускаем: 
#eventtriggers /create /TR "Lock Account" /TK "C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe c:\Soft\Bat\LckAccount.ps1" /L Security /EID 644
##################################################################################### 
$Subject = “Заблокирован аккаунт" 
$Theme = “Только что был заблокирован аккаунт” 
$Server = “smtp.domain.ua” 
$From = “noreplay@domain.ua” 
$To = “it@domain.ua” 
$encoding = [System.Text.Encoding]::UTF8

#Выбирается последнее произошедшее событие с таким ID.

$Body=Get-EventLog -Newest 1 -LogName Security -InstanceId 644 -ErrorAction SilentlyContinue

$Body = $Body | Select TimeGenerated, @{n=”Аккаунт”;e={ $_.Message -split “`n” | Select-String “Имя конечной учетной записи:”}} ,@{n=”Имя компьютера”;e={ $_.Message -split “`n” | Select-String “Имя вызывающего компьютера:”}}
$body = $Body -replace “@{” -replace “}” -replace “=”, “: ” -replace “;”,”`n” -replace “TimeGenerated”,”Время события” -replace “^”,”`n” -replace “Имя конечной учетной записи:”,”" -replace “Имя вызывающего компьютера:”,”" -replace “`t”,”"
Send-MailMessage -From $From -To $To -SmtpServer $server -Body “$Theme $Body” -Subject $Subject -Encoding $encoding

или качаем архив с этим скриптом:

LckAccount.rar
(1.99 КБ) 618 скачиваний

Скрипт взят отсюда. Здесь так же есть еще интересные скрипты.

Дополнение:

Иногда может возникнуть ситуация, когда во время выполнения скрипта возникает еще одно событие 644.
При этом старый скрипт продолжает выполняться, а новый не запускается (до тех пор, пока старый не выполнится). Более того, может быть и так, что старый скрипт все еще выполняется а событие 644 возникает еще пару-тройку раз.
Поэтому, в приведенной выше версии скрипта в письме мы получим данные о последнем (на момент выполнения запроса) событии, а если каким-то образом модифицировать скрипт, чтобы он получал атрибуты вызвавшего его события, то в письме мы получим данные о том событии, которое вызвало выполнение скрипта.
В связи с чем, привожу модификацию данного скрипта. В этой модификации дополнительно запрашивается Active Directory на предмет прочих заблокированных учетных записей:

Спойлер

Код: Выделить всё

#Отправка уведомлений по наступлению события 4740 – блокирование учетной записи пользователя 
#Автор оригинального скрипта: http://habrahabr.ru/post/147750/ 
#Изменения (itpadla.wordpress.com) 
#Дата создания 22.08.2012 
#Дата изменения: 20.03.2013 
#Описание: скрипт отправляет уведомление о определенном событии в Security Log в письме в человекочитаемом виде 
#Скрипт адаптирован под MS Windows 2003 Server Rus: http://manaeff.ru/forum
#Для создания триггера на сервере запускаем: 
#eventtriggers /create /TR "Lock Account" /TK "C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe c:\Soft\Bat\LckAccount.ps1" /L Security /EID 644
##################################################################################### 
$Subject = “Заблокирован аккаунт" 
$Theme = “Только что был заблокирован аккаунт” 
$Theme1 = "Прочие заблокированные аккаунты:"
$Server = “smtp.domain.ua” 
$From = “noreplay@domain.ua” 
$To = “it@domain.ua” 
$encoding = [System.Text.Encoding]::UTF8

#Выбирается последнее произошедшее событие с таким ID.

$Body=Get-EventLog -Newest 1 -LogName Security -InstanceId 644 -ErrorAction SilentlyContinue

$Body = $Body | Select TimeGenerated, @{n=”Аккаунт”;e={ $_.Message -split “`n” | Select-String “Имя конечной учетной записи:”}} ,@{n=”Имя компьютера”;e={ $_.Message -split “`n” | Select-String “Имя вызывающего компьютера:”}}
$Body = $Body -replace “@{” -replace “}” -replace “=”, “: ” -replace “;”,”`n” -replace “TimeGenerated”,”Время события” -replace “^”,”`n” -replace “Имя конечной учетной записи:”,”" -replace “Имя вызывающего компьютера:”,”" -replace “`t”,”"
add-pssnapin "Quest.ActiveRoles.ADManagement"
$Body1 = Get-QADUser -locked  
$Body1 = $Body1 -replace “;”,”`n” -replace “^”,”`n” 
Send-MailMessage -From $From -To $To -SmtpServer $server -Body “$Theme $Body $Theme1 $Body1” -Subject $Subject -Encoding $encoding

или качаем архив с этим скриптом:

LckAccount.rar
(2.07 КБ) 617 скачиваний

Для выполнения этого скрипта дополнительно необходимо установить на контроллере домена ActiveRoles Management Shell for Active Directory
Это дополнение для 32-х битных систем так же можно скачать здесь:


Alexander A. Manaeff©

Понравилась статья? Будем крайне признательны за репосты в соцсетях! Материально поддержать проект можно здесь

Мои странички:
ВКонтакте
Одноклассники
Youtube
Facebook
Instagram

Изображение
Изображение
Изображение
Изображение

Ответить