Погледајмо примере процеса стварања једноставног система за обавештавање администратора о додавању новог корисника у безбедносну групу Ацтиве Дирецтори. На пример, желимо да пратимо промену групе администратора домена, а ако му се дода нови корисник, добићемо обавештење (путем писма или скочног прозора).
Постоје две опције за организовање таквог решења:
- Можете омогућити ревизију догађаја на контролерима домена и пратити појаву догађаја када је корисник додан у безбедносну групу (ЕвентИД 4728)
- Чувајте локалну текстуалну датотеку са списком корисника у одређеној групи и периодично је упоређујте са тренутним члановима групе домена
Садржај:
- Ревизија додавања корисника у групу на контролеру домена
- Поређење тренутног састава групе домена са предлошком
Ревизија додавања корисника у групу на контролеру домена
У случају да вам је омогућена политика ревизије у вашем ГПО-у Конфигурација рачунара -> Подешавања оперативног система Виндовс -> Подешавања безбедности -> Напредна конфигурација ревизије -> Управљање рачуном -> Управљање безбедносном групом ревизије, онда када се корисник дода у групу Ацтиве Дирецтори, догађај ЕвентИд се појављује у безбедносном дневнику 4728 (Члан је додат у безбедносну глобалну групу).
Помоћу ПоверСхелл-а можете пратити појаву овог догађаја у безбедносном дневнику. На пример, приказујемо све догађаје са овим кодом за 24 сата на контролеру домена. Ради практичности приказаћемо име АД групе која се променила, који је налог додан и ко је од администратора додао корисника у групу (скрипта која следи примером из чланка Добијање листе АД корисника креираних за 24 сата).
$ тиме = (датум добијања) - (ново време - час 24)
Гет-ВинЕвент -ФилтерХасхтабле @ ЛогНаме = "Сигурност"; ИД = 4728; СтартТиме = $ Време | Фореацх
$ евент = [кмл] $ _. ТоКсмл ()
иф ($ догађај)
$ Тиме = Датум добијања $ _. ТимеЦреате -УФормат "% И-% м-% д% Х:% М:% С"
$ НевУсер = $ евент.Евент.ЕвентДата.Дата [0]. "# Текст"
$ АДГроуп = $ евент.Евент.ЕвентДата.Дата [2]. "# Текст"
$ АдминУсер = $ евент.Евент.ЕвентДата.Дата [6]. "# Текст"
$ дц = $ евент.Евент.Систем.цомпутер
$ дц + "|" + $ Време + „|“ + “|” + $ АДГроуп + "|" + $ НевУсер + "|" + $ АдминУсер
Сада, на контролеру домена, морате да направите нови задатак за планер и вежете његово покретање на догађај 4728. Када се овај догађај догоди, пошаљите поруку кориснику (како везати скрипту за догађај описано је у чланку Виндовс Евент Триггерс и покретање ПоверСхелл скрипте када се догоди догађај, нећу га поновити).
Међутим, проблем је што се проверава само један ДЦ записник. Ако је корисник додат у групу на другом регулатору домена, нећете видети овај догађај. Можете, наравно, креирати претплату на догађаје са неколико ДЦ-а или сортирати све контролере са скрипту, али ако постоји велики број ДЦ-ова у домену, све то није баш згодно.
Савет. Пример петље за набрајање свих ДЦ-ова у домену помоћу Гет-АДДомаинЦонтроллер и прикупљање догађаја из њих може изгледати овако (пример из овог чланка):$ тиме = (датум добијања) - (ново време - сат 124)
$ ДЦс = Гет-АДДомаинЦонтроллер -Филтер *
фореацх ($ ДЦ у $ ДЦ)
Гет-ВинЕвент -ЦомпутерНаме $ ДЦ -ФилтерХасхтабле @ ЛогНаме = "Сигурност"; ИД = 4728; СтартТиме = $ Тиме | Фореацх
$ евент = [кмл] $ _. ТоКсмл ()
иф ($ догађај)
$ Тиме = Датум добијања $ _. ТимеЦреате -УФормат "% И-% м-% д% Х:% М:% С"
$ НевУсер = $ евент.Евент.ЕвентДата.Дата [0]. "# Текст"
$ АДГроуп = $ евент.Евент.ЕвентДата.Дата [2]. "# Текст"
$ АдминУсер = $ евент.Евент.ЕвентДата.Дата [6]. "# Текст"
$ дц = $ евент.Евент.Систем.цомпутер
$ дц + "|" + $ Време + „|“ + “|” + $ АДГроуп + "|" + $ НевУсер + "|" + $ АдминУсер
Размотримо другачији приступ.
Поређење тренутног састава групе домена са предлошком
Помоћу цмдлета Гет-АДГроупМембер прикажите листу корисника у групи Администратор домена и резултирајућу листу сачувајте у текстуалној датотеци (правимо рекурзивну листу корисника, узимајући у обзир угнијежђене групе).
(Гет-АДГроупМембер -Идентити "Домаин Админс" -рецурсиве) .Наме | Изван датотеке Ц: \ ПС \ ДомаинАдминс.ткт
Сада додајте новог корисника у групу Администратор домена и поново сачувајте листу корисника, али у другу датотеку.
(Гет-АДГроупМембер -Идентити "Домаин Админс" -рецурсиве) .Наме | Изван датотеке Ц: \ ПС \ ДомаинАдминсЦуррент.ткт
Сада упоредите две датотеке и прикажите разлике у списковима:
$ олдадм = ГЦ Ц: \ ПС \ ДомаинАдминс.ткт
$ невадм = ГЦ Ц: \ ПС \ ДомаинАдминсЦуррент.ткт
$ дифф = Упореди-Објекат -РеференцеОбјецт $ олдадм -ДифференцеОбјецт $ невадм | Селецт-Објецт -ЕкпандПроперти ИнпутОбјецт
врите-хост $ разл
Приказао се налог који је додан у групу АД..
На конзоли можете да прикажете поруку:
$ ресулт = (Упореди-Објекат -РеференцеОбјецт $ олдадм -ДифференцеОбјецт $ дифф | Вхере-Објецт $ _. СидеИндицатор -ек "=>" | Селецт-Објецт -ЕкпандПроперти ИнпутОбјецт) -јоин ","
Иф ($ резултат)
мсг * "Корисник је додан у групу администратора домена: $ ресулт"
Или пошаљите е-пошту помоћу цмдлета Сенд-МаилМессаге:
Иф ($ резултат)
Сенд-МаилМессаге -СмтпСервер мсг01 -Од АДЦхангес@винитпро.ру -То админ@винитпро.ру -Предмет "Корисник је додан у групу Администратор домена: $ ресулт" -Тоди "Порука је креирана $ дате" -Приорити Хигх
Ова скрипта се може сачувати у датотеку админс_гроуп_цхангес.пс1 и редовно покренути помоћу распореда (како креирати задатак планера помоћу ПоверСхелл-а). Креирајмо нови задатак за планер који једном дневно покреће нашу ПоверСхелл скрипту која проверава састав групе администратора домена са локално сачуваном листом.
$ Триггер = Ново-заказаниТаскТриггер -У 10:00 сати -Дневно
$ Усер = "НТ АУТХОРИТИ \ СИСТЕМ"
$ Ацтион = Ново-заказанаТаскАцтион -Екецуте "ПоверСхелл.еке" -Аргумент "Ц: \ ПС \ админс_гроуп_цхангес.пс1"
Региструј се-ЗаказаниТаск -ТаскНаме "Провери Админс Гроуп" -Триггер $ Триггер -Усер $ Усер -Ацтион $ Ацтион -РунЛевел Хиггест
Тако ће се састав групе администратора проверавати једном дневно, а у случају промена, администратор ће добити обавештење (поп-уп поруку или писмо).