Любой администратор Active Directory рано или поздно сталкивается с необходимостью аудита изменения в Active Directory, и этот вопрос может встать тем острее, чем больше и сложнее структура Active Directory и чем больше список лиц, кому делегированы права управления в том или ином сайте или контейнере AD. В сферу интересов администратора (или специалиста по ИБ) могут попасть такие вопросы как:
- кто создал/ удалил пользователя или группу AD
- кто включил / заблокировал пользователя
- с какого адреса был изменен / сброшен пароль пользователя домена
- кто создал / отредактировал групповую политику и т.д.
В ОС семейства Windows существуют встроенные средства аудита изменений в различных объектах, которые, как и многие другие параметры Windows, имеют возможности управления с помощью групповых политики.
Разберем на конкретном примере методику включения аудит изменений параметров пользователей и членства в группах Active Directory (согласно данной методики можно включить отслеживание и других категорий событий).
Расширенные политики аудита Windows
Создадим новый объект GPO (групповую политику) с именем «Audit Changes in AD». Перейдите в раздел редактирования и разверните ветку Computer Configuration > Policies > Windows Settings > Security Settings > Advanced Audit Configuration. В данной ветке групповых политик находятся расширенные политики аудита, который можно активировать в ОС семейства Windows для отслеживания различных событий. В Windows 7 и Windows Server 2008 R2 количество событий, для которых можно осуществлять аудит увеличено до 53. Эти 53 политики аудита (т.н. гранулярные политики аудита) находятся в ветке Security Settings\Advanced Audit Policy Configuration сгруппированы в 10 категориях:
- Account Logon – аудит проверки учетных данных, службы проверки подлинности Kerberos, операций с билетами Kerberos и других события входа
- Account Management – отслеживание изменений в учетных записей пользователей и компьютеров, а также информации о группах AD и членстве в них
- Detailed Tracking – аудит активности индивидуальных приложений (RPC, DPAPI)
- DS Access – расширенный аудит изменений в объектах службы Active Directory Domain Services (AD DS)
- Logon/Logoff – аудит интерактивных и сетевых попыток входа на компьютеры и сервера домена, а также блокировок учетных записей
- Object Access – аудит доступа к различным объектам (ядру, файловой системе и общим папкам, реестру, службам сертификации и т.д.)
- Policy Change – аудит изменений в групповых политиках
- Privilege Use — аудит прав доступа к различным категориям данных
- System – изменения в настройках компьютеров, потенциально критичных с точки зрения безопасности
- Global Object AccessAuditing – позволяют администратору создать собственное списки ACL, отслеживающие изменения в реестре и файловой системой на всех интересующих объектах
Естественно, чтобы не перегружать систему лишней работой, а журналы ненужной информацией, рекомендуется использовать лишь минимально необходимый набор аудирумых параметров.
Настройка аудита изменений учетных записей и групп Active Directory
В данном случае, нас интересует категория Account Management, позволяющая включить аудит изменений в группах Audit Security Group Management) и аудит учетных записей пользователей (политика Audit User Account Management). Активируем данные политики аудита, задав отслеживание только успешных изменений (Success).
Осталось прилинковать данную политику к контейнеру, содержащему учетные записи контроллеров домена (по умолчанию это OU Domain Controllers) и применить эту политику (выждав 90 минут или выполнив команду gpupdate /force).
После применения данной политики информация обо всех изменения в учетных записях пользователей и членстве в группах будет фиксировать на контроллерах домена в журнале Security. На скриншоте ниже отображено событие, фиксирующие момент удаления пользователя из групп Active Directory (в событии можно увидеть кто, когда и кого удалил из группы).
По умолчанию журнал отображает все события безопасности, попавшие в лог. Чтобы упростить поиск нужного события, журнал можно отфильтровать по конкретному Event ID. В том случае, если нас интересуюсь только события, например, качающиеся сброса пароля пользователя в домене, необходимо включить фильтр по id 4724.
Ниже приведен список некоторых ID событий, которые могут понадобиться для поиска и фильтрации событий в журнале Security практике:
ID событий, в контексте изменений в группах AD:
4727 : A security-enabled global group was created.
4728 : A member was added to a security-enabled global group.
4729 : A member was removed from a security-enabled global group.
4730 : A security-enabled global group was deleted.
4731 : A security-enabled local group was created.
4732 : A member was added to a security-enabled local group.
4733 : A member was removed from a security-enabled local group.
4734 : A security-enabled local group was deleted.
4735 : A security-enabled local group was changed.
4737 : A security-enabled global group was changed.
4754 : A security-enabled universal group was created.
4755 : A security-enabled universal group was changed.
4756 : A member was added to a security-enabled universal group.
4757 : A member was removed from a security-enabled universal group.
4758 : A security-enabled universal group was deleted.
4764 : A group’s type was changed.
ID событий, в контексте изменений в учетных записей пользователей в AD:
4720 : A user account was created.
4723 : An attempt was made to change an account’s password.
4724 : An attempt was made to reset an account’s password.
4725 : A user account was disabled.
4726 : A user account was deleted.
4738 : A user account was changed.
4740 : A user account was locked out.
4765 : SID History was added to an account.
4766 : An attempt to add SID History to an account failed.
4767 : A user account was unlocked.
4780 : The ACL was set on accounts which are members of administrators groups.
4781 : The name of an account was changed:
4794 : An attempt was made to set the Directory Services Restore Mode.
5376 : Credential Manager credentials were backed up.
5377 : Credential Manager credentials were restored from a backup.
Основные недостатки встроенной системы аудита Windows
Однако у штатных средств просмотра и анализа логов в Windows есть определенные недостатки.
Естественно, консоль Event Viewer предоставляет лишь базовые возможности просмотра и поиска информации о тех или иных событиях в системе и не предполагает возможностей сложной обработки, группировки и агрегации информации. По сути эта задача целиком зависит от способностей и уровня подготовки системного администратора или инженера ИБ, который с помощью различных скриптов (например, powershell илл vbs) или офисных средств может разработать собственную систему импорта и поиска по журналам.
Также не стоит забывать, что с помощью встроенных средств Windows сложно объединить журналы с различных контроллеров домена (можно, конечно, воспользоваться возможностью перенаправления логов в Windows, но этот инструмент также недостаточно гибкий), поэтому поиск нужного события придется осуществлять на всех контроллерах домена (в рамках больших сетей это очень накладно).
Кроме того, при организации системы аудита изменений в AD с помощью штатных средств Windows нужно учесть, что в журнал системы пишется огромное количество событий (зачастую ненужных) и это приводит к его быстрому заполнению и перезатиранию. Чтобы иметь возможность работы с архивом событий, необходимо увеличить максимальный размер журнала и запретить перезапись, а также разработать стратегию импорта и очистки журналов.
Именно по этим причинам, для аудита изменений в AD в крупных и распределенных системах предпочтительно использовать программные комплексы сторонних разработчиков. В последнее время на слуху, например, такие продукты, как NetWrix Active Directory Change Reporter или ChangeAuditor for Active Directory.
Если не ошибаюсь, чтобы заработал подробный аудит нужно активировать аудит нужных объектов в разделе Local Policies/Audit Policy.
Это разные политики аудита. В статье речь о расширенных политиках аудита.
Прошу прощения, не так как надо было у меня настроено, поэтому ошибся.
А как настроить аудит изменения таких св-в пользователя как ФИО, адрес, телефон ?
«А как настроить аудит изменения таких св-в пользователя как ФИО, адрес, телефон ?» Решили кто-нибудь данную проблему? Дело в том, что аудит то работает, не работает как раз так и отображение изменений, кроме собственно говоря тех данных, что есть в событии. А их как раз и мало :-(. Вот если бы как-нибудь добавить туда (в событие) пару нужных полей.
Не подскажете, что конкретно пишется в журнал безопасность?
Как вариант — можно конечно снапшоты нужных веток AD делать, или вообще регулярно скриптом сливать всю нужную информацию в csv-файл и другим скриптом отслеживать изменения в объектах.
Добрый. При изменении атрибутов учетной записи (в зависмости от включенных параметров аудита безопасности на учетную запись) возникает событие 4738. Но оно отражает только изменение следующих атрибутов:
<EventData>
<Data Name=»Dummy«>-</Data>
<Data Name=»TargetUserName«>UshakovAE</Data>
<Data Name=»TargetDomainName«>ES</Data>
<Data Name=»TargetSid«>S-1-5-21-3598248035-1047720151-3493028850-24376</Data>
<Data Name=»SubjectUserSid«>S-1-5-21-3598248035-1047720151-3493028850-1167</Data>
<Data Name=»SubjectUserName«>BakaevBA</Data>
<Data Name=»SubjectDomainName«>ES</Data>
<Data Name=»SubjectLogonId«>0x5852c04e</Data>
<Data Name=»PrivilegeList«>-</Data>
<Data Name=»SamAccountName«>-</Data>
<Data Name=»DisplayName«>-</Data>
<Data Name=»UserPrincipalName«>-</Data>
<Data Name=»HomeDirectory«>-</Data>
<Data Name=»HomePath«>-</Data>
<Data Name=»ScriptPath«>-</Data>
<Data Name=»ProfilePath«>-</Data>
<Data Name=»UserWorkstations«>-</Data>
<Data Name=»PasswordLastSet«>-</Data>
<Data Name=»AccountExpires«>-</Data>
<Data Name=»PrimaryGroupId«>-</Data>
<Data Name=»AllowedToDelegateTo«>-</Data>
<Data Name=»OldUacValue«>0x211</Data>
<Data Name=»NewUacValue«>0x210</Data>
<Data Name=»UserAccountControl«>%%2048</Data>
<Data Name=»UserParameters«>-</Data>
<Data Name=»SidHistory«>-</Data>
<Data Name=»LogonHours«>-</Data>
</EventData>
</Event>
То есть, при изменении атрибута, например, Department событие возникнет, но в теле имзенения не увидим, так как атрибуты отображаются только те, что указал я выше. Возможно, что то делаю не так.
Отслеживать тяжеловато, в какой момент возникнет событие непонятно, а просто так сливать всю инфу, ИМХО, не вариант. Возмонжо есть вариант как то править схему event’а, но пока не нашел как, кроме как создавать самостоятельно схему для своего приложения
Следующие поля отображаются в журнале события при изменении атрибутов учетной записи, при этом атрибут может быть любой, например, поменяв атрибут Department, событие возникнет, но изменение в журнале мы не увидем:
SAM Account Name, Display Name, User Principal Name, Home Directory, Home Drive, Script Path, Profile Path, User Workstations, Password Last Set, Account Expires, Primary Group ID: —
AllowedToDelegateTo, Old UAC Value, New UAC Value, User Account Control, Account Enabled, User Parameters, SID History, Logon Hours.
Вот такие вот поля выводит Event 4738 при изменении атрибута(ов) учетной записи. Например, поменяешь значение атрибута Department, событие возникнет, но что изменилось мы не увидем (если конечно же это не поля из списка ниже)
— <EventData>
<Data Name=»Dummy«>-</Data>
<Data Name=»TargetUserName«>UshakovAE</Data>
<Data Name=»TargetDomainName«>ES</Data>
<Data Name=»TargetSid«>S-1-5-21-3598248035-1047720151-3493028850-24376</Data>
<Data Name=»SubjectUserSid«>S-1-5-21-3598248035-1047720151-3493028850-1167</Data>
<Data Name=»SubjectUserName«>BakaevBA</Data>
<Data Name=»SubjectDomainName«>ES</Data>
<Data Name=»SubjectLogonId«>0x5852c04e</Data>
<Data Name=»PrivilegeList«>-</Data>
<Data Name=»SamAccountName«>-</Data>
<Data Name=»DisplayName«>-</Data>
<Data Name=»UserPrincipalName«>-</Data>
<Data Name=»HomeDirectory«>-</Data>
<Data Name=»HomePath«>-</Data>
<Data Name=»ScriptPath«>-</Data>
<Data Name=»ProfilePath«>-</Data>
<Data Name=»UserWorkstations«>-</Data>
<Data Name=»PasswordLastSet«>-</Data>
<Data Name=»AccountExpires«>-</Data>
<Data Name=»PrimaryGroupId«>-</Data>
<Data Name=»AllowedToDelegateTo«>-</Data>
<Data Name=»OldUacValue«>0x211</Data>
<Data Name=»NewUacValue«>0x210</Data>
<Data Name=»UserAccountControl«>%%2048</Data>
<Data Name=»UserParameters«>-</Data>
<Data Name=»SidHistory«>-</Data>
<Data Name=»LogonHours«>-</Data>
</EventData>
</Event>
Тоже не получилось разобраться как добавить дополнительные поля в события.. 🙁
Видимо стоит попробовать сторонний софт, встроенных средств Windows недостаточно…
Elje, вы совершенно правы. В Windows событие возникает в журнале, но посмотреть что именно получается если это указана из списка ниже (Измененные атрибуты:). Ниже пример. Строку субъект и Целевая учетная запись убрал, если изменения не коснулись из атрибут из списка ниже, то будет стоять знак «-«. Если коснулись ,то будет стоять значение. Если нес-ко значений то нес-ко значений отобразятся+ если то что не входит в список, если таковы были. У объекта допустим user (пользователь) больше 100 значений в редакторе атрибутов для изменений, наверное Microsoft посчитала только необходимые данные выводить. Получается что если были изменения и эти изменения не из списка, то нам сис. админом только придется кадать какой параметр изменился =).
Изменена учетная запись пользователя.
Измененные атрибуты:
Имя учетной записи SAM: —
Отображаемое имя: —
Основное имя пользователя: —
Домашний каталог: —
Домашний диск: —
Путь к сценарию: —
Путь к профилю: —
Рабочие станции пользователя: —
Последний пароль задан: —
Срок действия учетной записи истекает: —
Идентификатор основной группы: —
Разрешено делегировать: —
Старое значение UAC: —
Новое значение UAC: —
Управление учетной записью пользователя: —
Параметры пользователя: —
Журнал SID: —
Часы входа: —
Дополнительные сведения:
Добрый день! Такая вещь, как поле «Пользователь» в журнале безопасности ad w2k3 отображается, а в w2k8 и w2k12 выдает как Н/Д
удобно было фильтровать изменения по учетной записи пользователя или аудит входа в систему не подскажете как починить?
Тоже напрягает этот факт…
Приходится выкручиваться, можно в качестве фильтра журнала событий задать собственное XML выражение, например так:
<QueryList>
<Query Id=»0″ Path=»Security»>
<Select Path=»Security»>*[EventData[Data and (Data=»UserName«)]]</Select>
</Query>
</QueryList>
Добрый день!
кто-нибудь знает как сделать так что-бы этот параметр не сбрасывался? (Win Server 2019)
Располагается в Локальная политика/Политика аудита/Аудит входа в систему
Тыкаю там Отказ, перезахожу в политику, и моя галочка уже снята
Тут вроде как есть описание мол она чем то переопределяется, но я не могу понять чем.