Короткий ответ

Изменение членства Domain Admins без события в журнале — дыра в контроле, не «AD так устроен». Нужны два слоя: Account Management (4728 член глобальной группы, 4732 локальной безопасности, 4756 универсальной) и Directory Service Changes (5136 изменение атрибута, 5137 создание, 5141 удаление) с SACL на объекты. Политика на DC, централизация логов. Без SACL категория DS Changes почти молчит.

Не включайте DS Access Success на все объекты леса без фильтров — утонете. Начните с привилегированных групп и OU admin. Не отключайте защиту DC «для отладки аудита».

Симптомы и как отличить

  • Кто-то в Domain Admins, в Security на DC01 пусто по 4728.
  • auditpol на DC: Directory Service Changes No Auditing.
  • Есть 4728, нет кто изменил какой атрибут LDAP-инструментом — нет 5136/SACL.
  • Инцидент «права появились», расследование упирается в тишину.
СобытиеСмысл
4728/4729членство global group
4732/4733local security group (в AD — domain local)
4756/4757universal
5136LDAP-изменение объекта при SACL
4624 на DCлогон, не членство — аудит входов

Возможные причины

  1. На DC не настроен Advanced Audit для DS Changes / Account Management.
  2. Нет SACL «Write all properties» / Write member на группе.
  3. Логи DC перетираются, нет WEF.
  4. Смотрят Security на WS-042 вместо DC01.
  5. Изменение через другой DC, смотрят не тот журнал (нужна репликация логов в SIEM со всех DC).
  6. Группа в другом домене леса.

Диагностика

На каждом DC, начиная с DC01:

auditpol /get /subcategory:"Directory Service Changes","Directory Service Access","Security Group Management","User Account Management"
Get-WinEvent -FilterHashtable @{ LogName = 'Security'; Id = 4728,4732,4756,5136 } -MaxEvents 10 -ErrorAction SilentlyContinue

SACL на группу:

# пример: посмотреть ACL в GUI ADUC Advanced / Auditing
dsacls 'CN=Domain Admins,CN=Users,DC=contoso,DC=example'

В выводе dsacls ищите строки Auditing. Пусто — 5136 не будет.

GPO Default Domain Controllers Policy vs отдельная GPO аудита — gpresult на DC.

Решение

Сценарий A. Категории аудита на DC

GPO, линк на OU Domain Controllers:

  • Audit Security Group Management: Success
  • Audit User Account Management: Success (и Failure по вкусу)
  • Audit Directory Service Changes: Success
  • Directory Service Access: обычно Failure + Success только если понимаете шум 4662

Force subcategory override — как в статье про логоны.

gpupdate /force
auditpol /get /subcategory:"Directory Service Changes"

Сценарий B. SACL на привилегированные объекты

ADUC → группа Domain Admins → Security → Advanced → Auditing → Add:

  • Principal: Everyone (или более узко, если умеете)
  • Type: Success
  • Applies to: This object
  • Permissions: Write all properties / Write member (member)

Повторите для Enterprise Admins, Schema Admins, групп LAPS-read, Helpdesk, DnsAdmins, Account Operators, групп с правами на GPO.

Для массовой постановки SACL используйте dsacls с флагами аудита по документации dsacls, сначала на тестовой группе.

Сценарий C. Сбор со всех DC

Подписка WEF/агент на Security 4728, 4729, 4732, 4733, 4756, 4757, 5136, 5137, 5141, 4720 (создание пользователя). Алерт: членство в Domain Admins.

События пишутся на DC, который обработал LDAP-запрос. SIEM должен видеть все DC.

Поставьте SACL сначала на тестовую группу в contoso.example, убедитесь что 5136 доезжает в SIEM, и только потом трогайте Domain Admins. На каждом DC, не только на DC01, должен быть одинаковый auditpol для DS Changes: LDAP-запись обрабатывается тем DC, на который попал клиент. Если helpdesk работает через jump в другом сайте, события окажутся на DC сайта. Включите подписку со всех RWDC. Не ставьте аудит «Write any» на CN=Users целиком в первый день — получите шум от обычных MemberOf пользователей и отключите категорию «потому что SIEM лежит».

Как проверить, что проблема устранена

Пилот: тестовая группа grp-audit-test, не Domain Admins.

Add-ADGroupMember 'grp-audit-test' -Members 'ivanov'

На DC сразу 4728 и/или 5136. В SIEM — то же. Снимите тестового члена. Проверьте, что алерт на реальные привилегированные группы настроен отдельно и не заспамлен тестом.

auditpol на всех DC одинаковый.

Если не помогло

  • 4728 есть, 5136 нет: SACL.
  • 5136 нет ни на одном DC: смотрите не тот DC, политика не на DCs OU, категория Access вместо Changes.
  • Изменение через Azure AD Connect с облака — смотрите ещё журнал синхронизации, не только 5136.
  • Recycle Bin / восстановление объекта — другие ID (5138/5139 в семействе DS Changes). Читайте имя события.
  • PowerShell с jump без логов модуля — включите PS logging как дополнение, не замена DC-аудита.

Профилактика

  • Ежеквартальный review SACL на tier0 группах.
  • Recertification членства DA, см. Domain Admin daily.
  • Запрет постоянных вложений широких групп, см. лишние права.
  • Runbook: изменение DA только с jump и тикетом, SIEM сверяет.

FAQ

4662 vs 5136

4662 — Directory Service Access (часто шум). 5136 — Changes, полезнее для атрибутов при правильном SACL. Не заменяйте одно другим бездумно.

Нужен ли аудит на RODC?

RODC не то место, где меняют Domain Admins. Пишите аудит на RWDC. Входы на RODC — другая тема.

dsacls сломает ACL группы?

Неправильный dsacls — да. Сначала GUI на одной группе, выгрузка эталона. Backup ACL (dsacls вывод в файл) до массовых правок.

Event 4728 на member-сервере

Локальная SAM-группа, не AD. Для доменных групп смотрите DC.

Можно ли обойтись только Change Auditor вендора?

Можно как надстройка. Базовый auditpol+SACL всё равно нужен, если вендор снят. Не выключайте штатный аудит.

Кто должен получать алерт DA

SOC/главный админ, не общая рассылка IT. Иначе алерт замрут.