Короткий ответ
Слабая доменная политика (длина 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, не эта политика.
Симптомы и как отличить
MinPasswordLength0, 5 или 7;ComplexityEnabled $false.- Пользователи меняют пароль на
CompanyName2026. - Аудит/инцидент: password spray успешен.
- MaxPasswordAge 30 и стикеры на мониторах.
| Политика | Проблема не в длине |
|---|---|
| Lockout 0 | lockout |
| Одинаковый локальный админ | PTH |
| DA на ежедневной учётки | разделение |
| NTLM spray с WAN | ещё периметр |
Возможные причины
- Default Domain Policy с 2003.
- Бизнес потребовал «проще, а то забывают».
- PSO для одной группы ослабляет домен.
- Нет Password Filter / Azure AD Password Protection DC Agent.
- Локальная политика ПК не равна доменной — путают
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 $falseMinPasswordAge поставьте >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.