· 15 мин чтения

Выдал helpdesk права на компьютеры в AD, а повторный ввод в домен падает с 0xaac — разбираем, кого добавлять в allow-list

<p>Классическая ситуация в парке из 30–50 машин: выдали helpdesk-инженеру делегированные права на подразделение с компьютерами через мастер Delegation of Control, он спокойно сбрасывает пароли учёток и переименовывает объекты — а потом переустанавливает Windows на рабочей станции и пытается ввести её обратно в домен под тем же именем. Результат — отказ с кодом <strong>0xaac</strong> и фразой про то, что учётная запись с таким именем уже существует, а её повторное использование заблокировано политикой безопасности. Ниже — как эта проверка устроена на самом деле, почему обычных прав на объект недостаточно, и как я закрываю это в наших проектах на Windows Server 2025.</p>

Симптом: делегирование выдано, а ввод в домен всё равно падает

Сценарий, с которым мы регулярно сталкиваемся в парках клиентов до 50 РМ: администратор через мастер Delegation of Control выдаёт группе helpdesk типовой набор прав на OU с компьютерами — сброс пароля учётной записи компьютера, чтение и запись стандартных атрибутов, иногда Full Control на конкретный объект. Формально этого достаточно, чтобы переименовать машину, сбросить её секретный канал или удалить объект руками. Но стоит переустановить Windows на той же станции и ввести её в домен под прежним именем компьютера — helpdesk получает отказ с кодом ошибки 0xaac (десятичное 2732) и текстом в духе «An account with the same name exists in Active Directory. Reusing the account was blocked by a security policy».

Важная деталь: до контроллеров домена на Windows Server 2025 (и до клиентов с накопительными обновлениями от октября 2022 года и позже) та же операция проходила без вопросов — тот же helpdesk, те же права, то же имя компьютера. Значит, дело не в правах на объект и не в деградации делегирования, а в отдельном механизме проверки, который появился позже и работает независимо от ACL на объекте.

Типичный набор прав, который реально выдают helpdesk через мастер Delegation of Control, — это сброс пароля учётной записи и запись отдельных атрибутов объекта. Отдельно от этого иногда выдают готовый шаблон задачи «Join a computer to the domain» — но он покрывает другой сценарий: создание НОВОГО объекта компьютера в рамках квоты, а не повторное использование уже существующего под тем же именем. Смешение этих двух разных задач в голове администратора, который делегировал права, и приводит к ситуации «вроде выдал всё, а не работает».

Что изменилось: hardening повторного использования учётной записи компьютера (KB5020276)

С кумулятивных обновлений октября 2022 года Microsoft внедрила ужесточение процедуры domain join, описанное в KB5020276 «Netjoin: Domain join hardening changes». Смысл изменения: при попытке ввести компьютер в домен под именем уже существующего в AD объекта компьютера контроллер домена дополнительно проверяет, кто именно инициирует join, а не только какие права у инициатора есть на сам объект. Если инициатор — не член Domain Admins и не владелец (owner) конкретного объекта компьютера, join блокируется с ошибкой NERR_AccountReuseBlockedByPolicy (2732 / 0xaac).

Первое время у администраторов была лазейка — реестровый параметр NetJoinLegacyAccountReuse, который включал старое, менее строгое поведение на конкретной клиентской машине. Начиная с обновлений, вышедших 13 августа 2024 года, поддержка этого параметра убрана: hardening-поведение действует безусловно, независимо от значения ключа. Для Windows Server 2025, который вышел позже этой даты, легаси-обхода через реестр в принципе нет — штатный путь только один, и он описан в следующем разделе.

Практический вывод для парков, которые только сейчас переходят на Windows Server 2025 в роли контроллеров домена: если до этого у вас годами работал реестровый воркэраунд на образах или в MDT/SCCM task sequence — на новых DC он перестанет действовать, и часть переустановок начнёт падать с 0xaac именно в момент миграции.

Логика hardening понятна с точки зрения безопасности: до KB5020276 любой пользователь, которому делегировали хоть какие-то права на OU с компьютерами (например, право сбрасывать пароль учётной записи компьютера — оно нередко выдаётся вместе со сбросом пароля пользователей одним и тем же шаблоном), фактически мог перехватить чужой, в том числе давно неиспользуемый, объект компьютера и ввести под его именем произвольную машину в домен — со всеми правами и групповыми политиками, которые были назначены на исходный объект. Проверка владельца закрывает именно этот вектор: теперь повторно использовать объект может либо тот, кто изначально его создал (или кому владение передали целенаправленно), либо тот, кого администратор явно перечислил как доверенного через allow-list.

Права на объект и владелец объекта — разные сущности в AD

Ключевая путаница, из-за которой это долго ищут: делегирование через ACL (кто что может делать с объектом — читать, писать атрибуты, сбрасывать пароль, удалять) и владение объектом (владелец, owner, хранится в поле Owner дескриптора безопасности объекта, nTSecurityDescriptor) — это два независимых механизма Windows. Delegation of Control выдаёт именно ACL. Проверка из KB5020276 смотрит на владельца.

Когда объект компьютера создаётся автоматически при первом вводе в домен обычным прошедшим проверку подлинности пользователем (в рамках квоты ms-DS-MachineAccountQuota), владельцем становится именно этот пользователь (или его группа Domain Admins/Enterprise Admins, если джойнил привилегированный аккаунт). Атрибут ms-DS-CreatorSID при этом фиксирует SID исходного создателя объекта — он информативен и полезен для аудита, но именно поле Owner используется в проверке domain join hardening на стороне DC. Если через полгода станцию переустанавливает другой инженер helpdesk — даже с Full Control через делегирование — он не становится автоматически владельцем существующего объекта, и join блокируется.

Отдельно стоит развеять типовое заблуждение: сброс пароля учётной записи компьютера через ADUC («Reset Account») или командой Reset-ComputerMachinePassword НЕ меняет владельца объекта и НЕ снимает блокировку 0xaac — это разные операции на разных уровнях. Так же не помогает и Test-ComputerSecureChannel -Repair: она чинит защищённый канал уже введённой в домен машины, а не первичный join.

На практике для аудита удобно смотреть на связку из трёх источников сразу: вкладку Security → Owner в ADUC (или вывод dsacls), атрибут ms-DS-CreatorSID для истории и журнал событий безопасности контроллера домена (событие с созданием объекта компьютера, если аудит включён). Часто оказывается, что владелец объекта — это давно отключённая учётная запись подрядчика, который выполнял первичное разворачивание парка, или сервисная учётка системы автоматизированного провижининга, срок действия пароля которой давно истёк. В обоих случаях делегирование новых прав helpdesk эту запись не заменит — нужен явный перенос владения или allow-list.

МеханизмЧто регулируетКто выдаётПомогает ли против 0xaac
ACL объекта (Delegation of Control)Кто может читать/писать атрибуты, сбрасывать пароль, удалять объектВладелец OU / администратор через мастер делегированияНет
Владелец объекта (Owner / ms-DS-CreatorSID)Кто «хозяин» конкретной учётной записи компьютераУстанавливается при создании объекта, меняется через Take OwnershipДа — если инициатор join и есть владелец
Allow-list на политике DC (KB5020276)Список пользователей/групп, которым разрешено переиспользовать ЛЮБОЙ чужой объектНастраивается один раз в GPO на контроллерах доменаДа — рекомендованный вариант для helpdesk
ms-DS-MachineAccountQuotaСколько НОВЫХ объектов компьютеров может создать рядовой пользовательАтрибут домена, по умолчанию 10Не относится к повторному вводу существующего объекта

0xaac и похожая на неё 0x216d — не путать при диагностике

В тикетах helpdesk эти две ошибки регулярно путают, потому что обе всплывают на этапе «не вводится в домен» и обе тянутся из области квот/политик AD. На деле причины и лечение разные.

Параметр0xaac (2732)0x216d (8557)
Имя ошибкиNERR_AccountReuseBlockedByPolicyERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED
Когда возникаетОбъект компьютера с таким именем УЖЕ существует в AD, инициатор join не владелец и не в allow-listОбъекта ещё нет, но у пользователя исчерпан лимит новых учётных записей компьютеров (ms-DS-MachineAccountQuota)
Типичный текст«An account with the same name exists... Reusing the account was blocked by a security policy»«You have exceeded the maximum number of computer accounts you are allowed to create in this domain»
Причина по сутиHardening из KB5020276, проверка владельца объектаКвота на количество СОЗДАННЫХ объектов на одного пользователя, по умолчанию 10 штук
ЛечитсяСмена владельца объекта или allow-list на политике DCУвеличением/снятием ms-DS-MachineAccountQuota или делегированием прав Create Computer Objects на OU

Если у вас в парке предзаготовка (pre-staging) компьютерных объектов не практикуется и станции джойнятся «с нуля» сервисной учёткой без прав администратора домена, рано или поздно вы упрётесь именно в 0x216d — это отдельная тема, не путайте её решение (правка квоты) с решением для 0xaac (владелец/allow-list), они не взаимозаменяемы.

Диагностика: netsetup.log и проверка текущего владельца объекта

Первый источник правды на клиенте — лог C:\Windows\debug\NetSetup.LOG. В нём при срабатывании hardening-проверки будет строка с упоминанием SAM_DOMAIN_JOIN_POLICY_LEVEL_V2 и итоговый выход функции join с кодом NetpJoinDomainOnDs: ... failed: 0xaac (2732), NERR_AccountReuseBlockedByPolicy. Это надёжный признак, что вы имеете дело именно с проверкой владельца, а не с квотой, не с сетевой проблемой до DC и не с DNS.

Если dsacls показывает владельцем конкретного технического специалиста, который заводил станцию два года назад и уже не работает в компании, а текущий helpdesk — другой сотрудник или сервисная учётка, это стопроцентное подтверждение диагноза: нужен либо перенос владения, либо allow-list.

Решение №1: точечная смена владельца проблемного объекта

Подходит, когда переустановки редкие и нужно быстро протолкнуть конкретную станцию, не трогая политику на весь домен. Владельцем можно назначить как helpdesk-группу, так и конкретного администратора — тогда именно он сможет ввести машину в домен без ошибки.

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

Решение №2 (рекомендованное): allow-list на политике контроллеров домена

Правильный путь для helpdesk, который регулярно переустанавливает и повторно вводит в домен станции — не гонять владение вручную, а один раз разрешить группе helpdesk переиспользовать чужие объекты компьютеров, независимо от того, кто их изначально создал. Это делается политикой безопасности на контроллерах домена: Computer Configuration → Policies → Windows Settings → Security Settings → Local Policies → Security Options → «Domain controller: Allow computer account re-use during domain join» (в русской локализации — «Контроллер домена: разрешить повторное использование учётной записи компьютера при вводе в домен»).

Политика применяется на GPO, привязанный к контейнеру Domain Controllers, и принимает список доверенных владельцев — пользователей и/или групп. Если инициатор join входит в этот список (сам или через членство в группе), проверка из KB5020276 пропускает операцию, даже если он не владелец конкретного объекта и даже не член Domain Admins.

Пошагово, как мы это разворачиваем на Windows Server 2025:

  1. Создаём отдельную группу безопасности под задачу — не используем общую группу helpdesk целиком, чтобы не расширять периметр доверия сверх необходимого: New-ADGroup -Name "GG-AD-ComputerReuse-Allow" -GroupScope Global -GroupCategory Security -Path "OU=Groups,DC=corp,DC=example,DC=ru"
  2. Добавляем в неё только те учётные записи, которым реально нужно переиспользовать объекты (личные именные аккаунты или выделенную сервисную учётку задачи, не общий логин): Add-ADGroupMember -Identity "GG-AD-ComputerReuse-Allow" -Members "helpdesk.ivanov","svc-imaging"
  3. В GPMC создаём (или используем) GPO, привязанный к OU Domain Controllers, открываем нужную политику и добавляем группу GG-AD-ComputerReuse-Allow в список доверенных владельцев.
  4. Обновляем политику на всех DC без ожидания цикла репликации: gpupdate /force /target:computer на каждом контроллере, либо Invoke-GPUpdate -Computer <DC-хост> -Force с рабочей станции администратора.
  5. Проверяем применение: gpresult /r /scope:computer на контроллере, ищем настройку в секции Local Policies, либо смотрим результирующий набор политик через RSOP.
  6. Тестируем на одной станции: переустанавливаем Windows, вводим в домен под учётной записью из новой группы под старым именем компьютера, убеждаемся, что 0xaac больше не всплывает, и что netsetup.log больше не содержит строку про AccountReuseBlockedByPolicy.

Обратите внимание: эта политика — настройка контроллеров домена, а не клиентов. Менять что-либо на стороне переустанавливаемой рабочей станции не требуется, и устаревший реестровый NetJoinLegacyAccountReuse здесь не нужен и, как указано выше, с 13 августа 2024 года на патченных системах всё равно не действует.

Перед раскаткой на весь парк мы обычно проводим пилот на одном DC и одной тестовой станции: включаем allow-list, вводим тестовую машину под старым именем от лица тестового helpdesk-аккаунта, проверяем netsetup.log на успешный join без строки про AccountReuseBlockedByPolicy, и только потом тиражируем GPO на остальные контроллеры домена через обычную репликацию SYSVOL (или форсированный gpupdate, если нужен результат в течение рабочего дня, а не после ближайшего цикла фонового обновления политик).

Справочная таблица параметров и порогов для внедрения

Параметр / компонентЗначение / расположениеКомментарий
Код ошибки повторного ввода0xaac / 2732 / NERR_AccountReuseBlockedByPolicyПроверка владельца объекта, действует с обновлений октября 2022 (KB5020276)
Код ошибки квоты0x216d / 8557 / ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDEDДругая причина — исчерпан лимит НОВЫХ объектов, лечится через ms-DS-MachineAccountQuota
Реестровый ключ обхода (историческое)HKLM\SYSTEM\CurrentControlSet\Control\Lsa\NetJoinLegacyAccountReuse (DWORD)Поддержка убрана в обновлениях от 13.08.2024 — не используется как решение на актуальных системах
Политика allow-listComputer Configuration → Security Settings → Local Policies → Security Options → «Domain controller: Allow computer account re-use during domain join»Настраивается на GPO, привязанном к Domain Controllers OU
ms-DS-MachineAccountQuotaАтрибут домена, значение по умолчанию — 10По практике безопасной эксплуатации рекомендуем снижать до 0 и выдавать право Create Computer Objects точечно через делегирование на нужные OU
Лог диагностики на клиентеC:\Windows\debug\NetSetup.LOGИщите строки с SAM_DOMAIN_JOIN_POLICY_LEVEL_V2 и итоговый код выхода функции join
Атрибут аудита создателяms-DS-CreatorSIDЗаполняется только если объект создал непривилегированный пользователь; не заменяет проверку поля Owner

Грабли внедрения и чек-лист, который мы используем на своих проектах

Несколько моментов, которые на практике съедают время при первом развёртывании этой политики в парке до 50 РМ:

После внедрения у нас типовая переустановка станции helpdesk-инженером занимает те же 10–15 минут, что и раньше, но без незапланированной эскалации на администратора домена ради ручной смены владельца объекта — узкий allow-list закрывает сценарий целиком и не расширяет права helpdesk ни на что, кроме собственно повторного ввода уже принадлежащих компании станций.

Частые вопросы

Если выдать helpdesk Full Control на объект компьютера, поможет ли это против 0xaac?
Нет. Full Control — это права по ACL объекта (чтение/запись атрибутов, сброс пароля, удаление), а проверка из KB5020276 смотрит на поле Owner дескриптора безопасности объекта. Это независимые механизмы, и даже владелец домена без явного попадания в allow-list или без статуса владельца конкретного объекта получит 0xaac.
Можно ли просто включить реестровый ключ NetJoinLegacyAccountReuse и не разбираться с политикой?
На системах с обновлениями от 13 августа 2024 года и позже, а также на Windows Server 2025, этот ключ не действует — Microsoft убрала его поддержку. Рабочий путь — политика «Domain controller: Allow computer account re-use during domain join» на контроллерах домена.
Как быстро узнать, кто владелец конкретного объекта компьютера в AD?
Командой dsacls "CN=имя,OU=...,DC=..." с контроллера домена или станции с RSAT, либо через PowerShell: Get-Acl "AD:\CN=имя,OU=...,DC=..." | Select Owner. Атрибут ms-DS-CreatorSID тоже даёт подсказку, но заполняется не всегда — он фиксирует создателя, только если объект создавал непривилегированный пользователь.
Чем 0xaac отличается от ошибки про превышение квоты компьютерных учётных записей?
0xaac (NERR_AccountReuseBlockedByPolicy) возникает при повторном использовании УЖЕ существующего в AD объекта компьютера и решается сменой владельца или allow-list. 0x216d (ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED) возникает при создании НОВОГО объекта, когда у пользователя исчерпан лимит ms-DS-MachineAccountQuota (по умолчанию 10), и решается правкой этой квоты или делегированием права Create Computer Objects.
Не опасно ли добавлять группу helpdesk в allow-list на уровне всего домена?
Опасность есть, если добавить широкую группу — участники смогут переиспользовать любой чужой объект компьютера в обход штатной проверки. Мы рекомендуем заводить отдельную узкую группу под конкретную задачу, включать в неё только нужные учётные записи и держать критичные объекты (серверы, машины руководства) вне этого механизма, используя для них точечную смену владельца.
📄
Скачайте подробный разбор в PDF Кейсы, статистика, типовые ошибки и чек-лист самопроверки — 12 страниц
Скачать PDF

Подпишитесь на разборы ITfresh

Раз в неделю — практичные материалы по ИТ для бизнеса: без спама, только польза.

Письмо придёт в течение минутыНе нашли его во «Входящих» — загляните в папку «Спам» или «Промоакции» и нажмите «Не спам». Так все следующие выпуски будут приходить прямо в основную почту.