Как стать автором
Обновить

HelpDesk под колпаком. Аудит создания учетных записей пользователей в AD

Время на прочтение4 мин
Количество просмотров19K
Всех приветствую.

Еще только в начале своего познания профессии системного администратора мой начальник поведал мне о такой профессии (вернее ее направлении) как дизайнер AD. Эти люди наводят порядок в домене и приводят в порядок учетные записи. Кто с этим сталкивался и возился может понять то раздражение, которое вызывают корявые имена учетных записей, созданных каким-нибудь сотрудником, который чихал на твой порядок.
Взяв в руки PowerShell мы дали им бой!

Не надо мусорить!


Суть состоит в том, что для HelpDesk было создано специально подразделение в AD (назовем его NewUsers), в котором они могли создавать новые учетные записи (делегирование прав пользователям здесь обсуждать не будем).
Их задача — по необходимости создавать новые учетные записи в этом подразделении.
Моя задача — отслеживать правильность заполнения нужных полей (особенно login) и перемещать по отделам.

Оказалось, что люди не хотели совершенно задумываться о том, что и как и попросту бродили ко мне с просьбами создай вот такую запись. Несколько недель я отмахивался словами: вы сами все можете!
И наконец я достучался до них, но это оказалось только началом истории.

В итоге я получил кучу учетных записей, непонятно чьих, и самое главное — непонятно кем созданных. На вопрос: «кто это создал?», все работники дружно отнекивались. Естественно, что я не горел желанием разбираться в этих учетках, и без того дел хватало.
Как ответственный за домен, отвечать перед начальником за Tania и Gosha приходилось мне.

На глаза попалось замечательное слово — аудит.

Способы решения


Выходов из этой ситуации было несколько. С одной стороны можно было всем долго и упорно метать бисер объяснять какие поля и как заполнять. С другой, отслеживать создание учетных записей и, выявляя нарушителей системы, тыкать их носом в корявые имена.

Первый способ результатов не дал, так что я с болью в сердце перешел ко второму.

Для начала мне надо было установить политику аудита для определенных подразделений (в нашем случае папка NewUsers) и добавить к аудиту группу, за которой будем просматривать (можно не раздумывать о группах и добавить просто всех пользователей).
Вот здесь можно почитать про аудит доменных служб Active Directory, а вот здесь Вас ждет пошаговая инструкция, как настроить аудит.
В итоге в журнале безопасности контроллера домена будут появляться события создания новых объектов пользователей.
Нас же интересует событие с кодом 5137 (Создание объекта в каталоге).

Переходим к сбору информации с контроллеров. Конечно, если у вас 1 КД, вам достаточно просто настроить фильтр журнала, и забыть про остальную часть статьи, но тогда Вам придется превратиться в дядю Ваню, сторожа кукурузного поля, который всегда на посту. Другими словами — есть свободное время? Загляни в журнал безопасности.
Если же хочется остаться самим собой и у вас более 1 КД, стоит читать дальше.

А что же PowerShell?


В PowerShell просматривать журнал на помогает cmndlet Get-eventlog. С помощью него мы и будем выбирать нужные нам сообщения. Дабы обойти проблемы с подписанием скриптов, мы поступили так: засунули нужный нам код в файл профиля и определили его как функцию.

Для тех, кто не знаком с профилями, можно почитать это или, кому не хочется покидать Хабр, это.
Так же, для загрузки профиля понадобится выполнить команду:

Set-ExecutionPolicy RemoteSigned

Вернемся к нашим баранам. Собственно, код нашей функции:

function Audit
{
Get-eventlog security -InstanceID "5137" -Newest 1 |
Where-Object {$_.Message -match "OU=NewUsers,DC=contoso,DC=com"} |
Select-object TimeWritten,Message,MachineName | Format-list | out-file \\MyComp\d$\Audit.txt -append
}

Для себя я выбираю только время записи события, сообщение и имя КД, на котором все это происходило. Если кому то этой информации недостаточно, можно расширить список. Пишем:
Get-eventlog security -InstanceID "5137" | get-member
и получаем полный список всех свойств.
Вывод осуществляется в текстовый файл, который находится на моем рабочем компьютере.
Так же меня интересуют учетные записи только в определенном подразделении, так что мы выбираем сообщения, в которых присутствует путь к нашей папке (OU=NewUsers,DC=contoso,DC=com).
Если интересно, почему я выбираю только 1 последнюю запись, читаем далее.

Нам надо вызывать эту функцию каждый раз, когда в журнале будут появляться нужные нам события. Для этого воспользуемся стандартным планировщиком заданий. Как создавать задание я рассказывать не буду, остановлюсь на важных моментах:
Действие: Запуск программы
Программа или сценарий: powershell
Добавить аргументы: -windowstyle Hidden audit
Триггер:
Назначить задачу: При событии
Журнал: Безопасность
Код события: 5137

Так же не забываем поставить галочки:
«Выполнять вне зависимости от регистрации пользователя» — дабы задача могла выполняться не требуя нашего присутствия.
«Выполнять с наивысшими правами» — дабы у нас был доступ к журналу Безопасность.

После создания задания, можно экспортировать его в xml файл и таким образом распространить его на остальные КД.

Стукачей не любят


В итоге мы получили персонального «стукача» на каждом КД, который будет реагировать на нужные нам события в журнале безопасности.
Теперь можно ловить за руку тех, кто не соблюдает принципы Фен-Шуй и мешает свободному потоку энергии у нас в домене.
Теги:
Хабы:
+18
Комментарии18

Публикации

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн