Alexander A Manaeff -

 
 

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

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

Модератор: UncleFather

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

Сообщение UncleFather » 26 апр 2012 15:29, Чт

Проблема:

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


Решение:

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



Как работает 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 при блокировании учетной записи пользователя.
Аватара пользователя
UncleFather
Site Admin
 
Сообщения: 1256
Зарегистрирован: 17 авг 2004 17:20, Вт

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

Сообщение UncleFather » 14 окт 2013 14:47, Пн

Проблема:

Необходимо посылать администратору оповещение по электронной почте при блокировании учетной записи какого-либо пользователя в домене 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 КБ) Скачиваний: 241


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


Дополнение:


Иногда может возникнуть ситуация, когда во время выполнения скрипта возникает еще одно событие 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 КБ) Скачиваний: 229


Для выполнения этого скрипта дополнительно необходимо установить на контроллере домена ActiveRoles Management Shell for Active Directory
Это дополнение для 32-х битных систем так же можно скачать здесь:
Quest_ActiveRolesManagementShellforActiveDirectoryx86_151.rar
(18.75 МБ) Скачиваний: 292
Аватара пользователя
UncleFather
Site Admin
 
Сообщения: 1256
Зарегистрирован: 17 авг 2004 17:20, Вт


Вернуться в Администрирование Windows Server

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Alexander A Manaeff -
@Mail.ru .