Короткий ответ
Изменение членства 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/4733 | local security group (в AD — domain local) |
| 4756/4757 | universal |
| 5136 | LDAP-изменение объекта при SACL |
| 4624 на DC | логон, не членство — аудит входов |
Возможные причины
- На DC не настроен Advanced Audit для DS Changes / Account Management.
- Нет SACL «Write all properties» / Write member на группе.
- Логи DC перетираются, нет WEF.
- Смотрят Security на
WS-042вместоDC01. - Изменение через другой DC, смотрят не тот журнал (нужна репликация логов в SIEM со всех DC).
- Группа в другом домене леса.
Диагностика
На каждом 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 SilentlyContinueSACL на группу:
# пример: посмотреть 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. Иначе алерт замрут.