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

Слабая доменная политика (длина 7, без сложности, без бана Welcome1) важнее «сложности из восьми знаков с заглавной». Современный ориентир: длинная фраза, запрет популярных и корпоративных слов, уникальность, MFA где возможно. Частая смена каждые 30 дней провоцирует Winter2026! по кругу — Microsoft давно сместил акцент с короткого max age на длину и banned list. В contoso.example поднимите MinPasswordLength, включите сложность или (лучше) длину 14+ и Azure AD Password Protection / аналог banned passwords для AD DS, PSO для админов ещё строже.

Не требуйте смены каждые 30 дней как «компенсацию» длины 7. Не держите пароли DA в том же классе, что у пользователей. Локальные админы — LAPS, не эта политика.

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

  • MinPasswordLength 0, 5 или 7; ComplexityEnabled $false.
  • Пользователи меняют пароль на CompanyName2026.
  • Аудит/инцидент: password spray успешен.
  • MaxPasswordAge 30 и стикеры на мониторах.
ПолитикаПроблема не в длине
Lockout 0lockout
Одинаковый локальный админPTH
DA на ежедневной учёткиразделение
NTLM spray с WANещё периметр

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

  1. Default Domain Policy с 2003.
  2. Бизнес потребовал «проще, а то забывают».
  3. PSO для одной группы ослабляет домен.
  4. Нет Password Filter / Azure AD Password Protection DC Agent.
  5. Локальная политика ПК не равна доменной — путают net accounts на WS-042.

Диагностика

Get-ADDefaultDomainPasswordPolicy -Identity contoso.example |
  Format-List MinPasswordLength, ComplexityEnabled, LockoutThreshold, MaxPasswordAge, MinPasswordAge, PasswordHistoryCount, ReversibleEncryptionEnabled
Get-ADFineGrainedPasswordPolicy -Filter * |
  Format-Table Name, Precedence, MinPasswordLength, ComplexityEnabled, MaxPasswordAge

Результирующая для пользователя:

Get-ADUser 'ivanov' -Properties msDS-ResultantPSO, CanonicalName |
  Select-Object Name, 'msDS-ResultantPSO'

Реверсивное шифрование (ReversibleEncryptionEnabled) должно быть False, кроме легаси CHAP, которое надо выводить.

Проверьте, установлен ли Azure AD Password Protection (DC Agent + proxy) или другой filter: службы на DC01, документация вашего решения. Не выдумывайте, что «Windows сам банит qwerty» — штатная complexity этого не делает.

Решение

Сценарий A. Поднять длину домена

Согласуйте с бизнесом (сообщение пользователям, срок перехода). Пример:

Set-ADDefaultDomainPasswordPolicy -Identity contoso.example -MinPasswordLength 14 -ComplexityEnabled $true -PasswordHistoryCount 24 -ReversibleEncryptionEnabled $false

MinPasswordAge поставьте >0 (например 1 день), чтобы не крутили history за минуту. MaxPasswordAge: если есть MFA и длина, организации часто увеличивают срок или отключают истечение по современной рекомендации — зафиксируйте решение, не копируйте 30 дней «как CIS 2012».

Rollback: сохранить старые значения до Set-.

Сценарий B. Banned passwords

Разверните Microsoft Entra Password Protection для AD DS (агенты на DC, список глобальный + корпоративный: имя фирмы, города, футбольной команды). Либо поддерживаемый третий filter. Проверьте тест: пароль Contoso123! должен отвергаться после развёртывания.

Это не GPO «MinPasswordLength». Отдельный продукт/агент.

Сценарий C. PSO для привилегированных

New-ADFineGrainedPasswordPolicy -Name 'PSO-Admins' -Precedence 50 -MinPasswordLength 16 -ComplexityEnabled $true -LockoutThreshold 10 -LockoutDuration 00:15:00 -LockoutObservationWindow 00:15:00 -PasswordHistoryCount 24 -ReversibleEncryptionEnabled $false
Add-ADFineGrainedPasswordPolicySubject -Identity 'PSO-Admins' -Subjects 'Domain Admins'

Проверяйте resultant. Не применяйте PSO-Admins к Domain Users.

Сценарий D. Сервисные учётки

Не гоняйте 14-знаковый ручной пароль со сменой 30 дней на 20 службах. gMSA / автоматическая ротация. ИсключенияPSO с длинным паролем и мониторингом.

Сообщение пользователям в contoso.example должно объяснять фразу, а не «добавьте ещё спецсимвол к старому паролю». Helpdesk не имеет права ставить Welcome1 «на пять минут». Для гибрида с Entra проверьте, какая система принимает смену пароля, чтобы banned list DC Agent на DC01 и облачный список не разошлись. Сервисные учётки выведите из Default Domain Policy смены каждые 30 дней: лучше gMSA. Проверьте ReversibleEncryptionEnabled повторно после чужих GPO. На WS-042 локальная политика SAM не заменяет доменную длину для CONTOSO\ivanov.

Историю 24 храните, MinPasswordAge не ноль. Иначе пользователь прокрутит history за обед и вернёт слабый пароль.

Password spray против коротких паролей не лечится lockout в одиночку: нужна длина, banned list на DC01 и закрытый NTLM/RDP. Проверьте, что GPO не вернула MinPasswordLength 7 из старого шаблона.

Не храните эталон паролей в открытом Excel на \\fs01.contoso.example\IT — это обход всей политики длины.

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

  • Попытка сменить пароль на 8 знаков отвергается.
  • Корпоративное слово в пароле отвергается, если filter жив.
  • Get-ADDefaultDomainPasswordPolicy соответствует регламенту.
  • Reversible encryption false.
  • Привилегированные учётки под PSO 16+.
  • Пользователи получили инструкцию про фразу, helpdesk — скрипт не «поставить qwerty».

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

  • Resultant PSO слабее домена — precedence.
  • Пользователи на гибриде: политика Entra vs AD, password hash sync — сверьте, какой каталог авторитетен для смены.
  • Локальные учётки не слушаются домена.
  • Приложение хранит свой парольный файл — вне AD.

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

  • Регламент: длина, banned list, кто имеет PSO.
  • Не требовать смены как ритуал без инцидента/утечки.
  • MFA на VPN/почту снижает цену украденного пароля, не отменяет длину.
  • Аудит: lockout как индикатор spray.
  • Онбординг не выдаёт Welcome1.

FAQ

14 или 16 знаков?

Для пользователей 14 как минимум разумный пол; админы 16+. Фраза из 4 слов часто длиннее и удобнее.

Complexity выключить, оставить только длину?

Допустимо, если длина большая и banned list есть. Иначе complexity — дешёвый минимум. Не выключайте complexity, оставив длину 8.

LM-хеши

На актуальных Server 2019+ LM не хранится по умолчанию. Не включайте LM. NTLM-хеш всё ещё есть — длина и уникальность важны, плюс снижение NTLM.

Password history 0

Пользователь вернёт старый пароль сразу. History 24 — нормальный ориентир.

Можно ли запретить имя пользователя в пароле?

Штатная complexity это учитывает частично. Корпоративный banned list — имена компании и сезон. Filter сильнее.

Windows 11 24H2 что-то меняет сам?

Клиент соблюдает политику домена. Не ждите, что 24H2 «сам» поднимет длину в AD. Меняйте политику на DC01.