Setting the Record Straight
Before we go any further then, let’s set the record straight. In a standard configuration AD domain there can be only one password policy. It matters not where or how many times you try to link and create GPOs to set different policies, it will not work. In a default AD domain, the password policy is configured in the Default Domain Policy which is applied at the root, the top-level of the domain. The password policy is enacted and controlled by the Domain Controllers not by the computer or user object of a client.
In the modern era of PowerShell, we can see that the default password policy for the domain is by using the Get-ADDefaultDomainPasswordPolicy PowerShell command which outputs similar to the screenshot below. In this example, the lockout duration and observation windows are 15 minutes each, accounts are locked out after five failed attempts and passwords must be at least seven characters long, meet complexity requirements, be no older than 90 days but more than 1 day old, and the previous 12 passwords are remembered.
Разрешение конфликтов нескольких PSO
Какие парольные политики будут действовать на пользователя, если в домене описана своя политика, для пользователя создан собственный PSO, а к группе, в которую входит пользователь, привязан еще один PSO?
Прежде всего, напомню, что политика из PSO применяется целиком, т.е. невозможно длину пароля описать в доменной политике, а настройки блокировки учетной записи описать в политике PSO.
Далее рассмотрим возможные конфликты.
Правило №1. При наличии PSO политика из PSO имеет больший приоритет, чем доменная политика.
Правило №2. При наличии PSO, назначенного непосредственно пользователю, полностью игнорируются политики PSO, назначенные глобальным группам, в которые пользователь может входить.
Правило №3. При наличии нескольких PSO, назначенных одной и той же группе или пользователю, действует политика из PSO с более высоким приоритетом (т.е. PSO, у которого значение атрибута msDS-PasswordSettingsPrecedence меньше)
Важно: не забывайте правило №2. Правило №4
При наличии нескольких PSO с одинаковым приоритетом и назначенных одной и той же группе или пользователю применяется политика из PSO с более низким значением GUID.
Правило №4. При наличии нескольких PSO с одинаковым приоритетом и назначенных одной и той же группе или пользователю применяется политика из PSO с более низким значением GUID.
ВАЖНО! В итоге к пользователю всегда применяется политика только одного PSO. Узнать, какой же в итоге PSO реально применяется можно через консоль Active Directory Users and Computers (не забудьте включить режим View -> Advanced Features). В свойствах пользователя нужно открыть вкладку Attribute Editor и найти атрибутmsDS-ResultantPSO
В нем указано имя PSO, который в итоге и применяется к данному пользователю. Если выяснится, что к пользователю не подходит ни один из объектов PSO, то применяется обычная политика паролей по умолчанию, которая берется из свойств объекта Домен. В следующей статье мы посмотрим как его создать на примере windows server 2008R2
В свойствах пользователя нужно открыть вкладку Attribute Editor и найти атрибутmsDS-ResultantPSO. В нем указано имя PSO, который в итоге и применяется к данному пользователю. Если выяснится, что к пользователю не подходит ни один из объектов PSO, то применяется обычная политика паролей по умолчанию, которая берется из свойств объекта Домен. В следующей статье мы посмотрим как его создать на примере windows server 2008R2
Defining Granular Password Policies
Enter Windows Server 2008 R2 which brought with it a feature, as part of Active Directory, called Fine Grained Password Policies. What this new feature allows us to do, at last, it to have control over the password policy for specific users or groups. Want uber complex admin account passwords? Sure, do it. Want to force HR or Finance staff to have a slightly more complex policy than normal users but a little less than admins? Go right ahead! Now, it’s time to be honest. The feature was first introduced in Windows Server 2008, however, it got a lot easier with Windows Server 2012. In this post I will be concentrating on the latter.
To make this work, there are two things we need to do and one thing we need to understand.
- We need to create password policy objects
- We need to link password policy objects to users or groups
- We need to understand the precendence
Understanding Precedence
Clearing the understanding out of the way first, we need to make sure that the correct policy is applied to the correct user or group. When we create a policy, one of the parameters required is precedence. The value for this must be a positive integer starting from 1. A user or a group can be assigned multiple policies: when this happens, the policy which wins is determined by the precedence. If a user has a direct policy linked to them with a value of 10 but they are also a member of a group which has a policy value of 5, the policy with the value of 5 will win.
Creating the Password Policy
The first real step is to create the policy. This is one, albeit long, line of PowerShell. The full list of parameters and possible values are in the Microsoft documentation at https://technet.microsoft.com/ru-ru/library/hh852234(v=wps.620).aspx. In this example, I have created a policy which backs off the default policy to allow users to keep their current password for up to 365 days.
The command executed in the example and the screenshot below:
New-ADFineGrainedPasswordPolicy -Name "MaxPassword365Days" -DisplayName "Max Password Age 365 Days" -ComplexityEnabled $true -Description "Increases the Maximum Password Age to 365 days." -LockoutDuration 00:15:00 -LockoutObservationWindow 00:15:00 -LockoutThreshold 5 -MaxPasswordAge 365:00:00:00 -MinPasswordAge 1:00:00:00 -MinPasswordLength 7 -PasswordHistoryCount 12 -ReversibleEncryptionEnabled $false -Precedence 100
With our policy now created, it won’t do anything because it isn’t linked to a user or a group so the next step is to link it. If you are testing this then by all means link it to a single user, however, in the real-world I would always use a group to allow you to be flexible and manage these policies more effectively.
To link the policy, we use the Add-ADFineGrainedPasswordPolicySubject PowerShell command. Once linked, we can use the Get-ADFineGrainedPasswordPolicy command to verify that the policy is linked.
Add-ADFineGrainedPasswordPolicySubject MaxPassword365Days -Subjects Max_Password_Age_365_Days_GG
In the example above, we can see that I used the Add-ADFineGrainedPasswordPolicySubject command. In the command we give the name of the Password Settings Object that we want to use. We then use the -Subjects parameter to declare who it should be applied to. In my case, this is a Global Group in Active Directory but this could just as easily be a user object.
Once the policy has been applied we can use the Get-ADFineGrainedPasswordPolicy to see what’s being applied. In the screenshot, we see that the MaxPassword365Days policy has an AppliesTo value of the Global Group that I set in the former command.
Настройка детальных политик паролей в Windows Server 2022
Рассмотрим, как создать Password Setting Policy (PSO) в Active Directory. В в Windows Server 2022 имеется новый графический интерфейс для управления детализированными политиками паролей (он появился начиная с Windows Server 2012). В этом примере мы покажем, как назначить отдельную политику паролей для группы домена «Domain Admins».
Запустите Центр администрирования Active Directory (dsac.msc) на контроллере домена с правами администратора, переключитесь в представление в виде дерева и разверните контейнер «System». Найдите «Password Settings Container», щёлкните его правой кнопкой мыши и выберите New → Password Settings (в русскоязычной версии это «Создать» → «Параметры паролей»).
В появившемся окне укажите название политики паролей (в нашем примере это «Password Policy for Domain Admin») и её настройки. Все поля стандартные: минимальная длина и сложность пароля, количество паролей, хранящихся в истории, настройки блокировки, как часто менять пароли и так далее.
Каждый из параметров PSO (класс msDS-PasswordSettings) описывается отдельным атрибутом AD:
- msDS-LockoutDuration
- msDS-LockoutObservationWindow
- msDS-LockoutThreshold
- msDS-MaximumPasswordAge
- msDS-MinimumPasswordAge
- msDS-MinimumPasswordLength
- msDS-PasswordComplexityEnabled
- msDS-PasswordHistoryLength
- msDS-PasswordReversibleEncryptionEnabled
- msDS-PasswordSettingsPrecedence
Обратите внимание на атрибут Precedence («Приоритет»). Он определяет приоритет текущей политики паролей
Если объекту назначено несколько политик FGPP, будет применяться политика с наименьшим значением в поле «Приоритет».
Примечания.
- Если у пользователя есть две политики с одинаковым значением приоритета, будет применена политика с наименьшим значением GUID.
- Если пользователю назначено несколько политик, одна из которых включена через группу безопасности AD, а другая назначена непосредственно учётной записи пользователя, будет применяться политика, назначенная учётной записи.
Затем в разделе Direct Applies To («Применяется напрямую к») добавьте группы/пользователей, чтобы применить к ним политику (в нашем случае это «Domain Admin»). Сохраните политику.
После этого эта политика паролей будет применяться ко всем членам группы Domain Admin (администраторов домена).
Запустите консоль «Active Directory — пользователи и компьютеры» (dsa.msc) (с включённой опцией View → Advanced Features (в русскоязычной версии «Вид» → «Дополнительные компоненты»)) и откройте свойства любого пользователя из группы Domain Admin. Перейдите на вкладку Attribute Editor («Редактор атрибутов») и в поле Filter («Фильтр») выберите опцию Constructed («Построенные»).
Найдите атрибут пользователя msDS-ResultantPSO. Этот атрибут показывает политику паролей, включённую для пользователя (CN=Password Policy for Domain Admin,CN=Password Settings Container,CN=System,DC=ds,DC=hackware,DC=ru).
Вы также можете получить текущую политику PSO для пользователя с помощью команды dsget:
dsget user "CN=Administrator,CN=Users,DC=ds,DC=hackware,DC=ru" -effectivepso
Политики управления паролями Fine-Grained Password Policies
В Windows Server 2008, разработчики добавили новый отдельную от GPO возможность управления настройками паролей Fine-Grained Password Policies (FGPP – гранулированные / раздельные политики обеспечения парольной защиты). Fine-Grained Password Policies позволяют администратору создать в одном домене множество специальных политик управления паролями (Password Settings Policy — PSO), определяющих требования к паролям (длина, сложность, история) и блокировки учетных записей. Политики PSO могут быть назначены на конкретных пользователей или группы, но не на контейнеры (OU) Active Directory. Причем, если к пользователю привязана политика PSO, настройки парольной политики из GPO Default Domain Policy к нему более не применяются.
К примеру, с помощью FGPP, можно наложить более высокие требования на длину и сложность пароля для учетных записей администраторов, сервисных учетных записей или пользователей, имеющих внешний доступ к ресурсам домена (через VPN или DirectAccess).
Основные требования для использования множественных политик паролей FGPP в домене:
- функциональный уровень домена Windows Server 2008 или выше
- парольные политики можно назначить на пользователей или глобальные группы безопасности (global security)
- FGPP политика применяется целиком (нельзя часть настроек описать в GPO, а часть в FGPP)
Главный недостаток новшества в Windows Server 2008– отсутствие удобных инструментов управления политиками паролей, настройку которых можно было выполнить только из низкоуровневых утилит по работе с AD, например ADSIEdit, ldp.exe, LDIFDE.exe.
Fine-Grained Policy and How It’s Configured
Older versions of AD allowed the creation of just one password policy for each domain. The introduction of fine-grained password policies (FGPP) has made it possible for admins to create multiple password policies to better meet business needs. For example, you might want to require admin accounts to use more complex passwords than regular user accounts. It’s important that you define your organizational structure thoughtfully so it maps to your desired password policies.
While you define the default domain password policy within a GPO, FGPPs are set in password settings objects (PSOs). To set them up, open the ADAC, click on your domain, navigate to the System folder and then click on the Password Settings Container.
Как настроить политики пользователей домена
Доменом в Windows Server называют отдельную область безопасности компьютерной сети.
В домене может быть один или несколько серверов выполняющих различные роли. Разрешения, применяемые администратором, распространяются на все компьютеры в домене.
Пользователь, имеющий учетную запись в домене, может войти в систему на любом компьютере, иметь учетную запись на локальном компьютере не требуется.
В домене могут работать несколько тысяч пользователей, при этом компьютеры могут принадлежать к разным локальным сетям.
Несколько доменов имеющих одну и ту же конфигурацию и глобальный каталог называют деревом доменов. Несколько деревьев могут быть объединены в лес.
В домене есть такое понятие как групповая политика. Под групповой политикой понимают настройки системы, которые применяются к группе пользователей. Изменения групповой политики затрагивают всех пользователей входящих в эту политику.
Параметры групповой политики хранятся в виде объектов групповой политики (Group Policy Object, GPO). Эти объекты хранятся в каталоге подобно другим объектам. Различают два вида объектов групповой политики – объекты групповой политики, создаваемые в контексте службы каталога, и локальные объекты групповой политики.
Не будем подробно вдаваться в теорию и перейдем к практике.
Концепции Fine-Grained Password Policies (Детализированных политик паролей)
Детализированные политики паролей позволяют администратору создавать несколько Password Setting Objects (PSO) в домене AD. В PSO вы можете установить требования к паролю (длина, сложность, история) и параметры блокировки учётной записи. Политики PSO могут быть назначены конкретным пользователям или группам, но не подразделениям Active Directory (OU). Если пользователю назначен PSO, то параметры политики паролей из GPO политики домена по умолчанию больше не применяются к пользователю.
Например, с помощью FGPP вы можете предъявить более высокие требования к длине и сложности паролей для учётных записей администраторов, учётных записей служб или пользователей, имеющих внешний доступ к ресурсам домена (с помощью VPN или DirectAccess).
Основные требования к использованию нескольких FGPP в домене следующие:
- функциональный уровень домена Windows Server 2008 или выше
- политики паролей могут быть назначены Global (глобальным) группам безопасности
- FGPP применяется полностью (вы не можете описать некоторые настройки в GPO, а некоторые из них в FGPP)
Настройка политики паролей Server:
Что бы изменить политику паролей для пользователей находящихся в домене заходим в «Диспетчер серверо»в далее в верхнем меню жмем «Средства» и переходим в раздел «Управления групповой политикой»
Для того что бы изменить политику паролей необходимо изменить политику по умолчанию домена (Default Domain Police) для этого нажмите ПКМ по данной политике и нажмите на пункт «Изменить»
В открывшимся окне открылся редактор, теперь необходимо найти где же изменять саму политику паролей, редактирование происходит в разделе «Конфигурации компьютера» далее разворачиваем папку «Конфигурация Windows» дальше открываем «Параметры безопасности и политики учетных записей»
Начнем настройку с первого раздела под названием «Политика паролей» открываем его
В открывшимся окошке над доступно для изменения 6 пунктов, каждый из них мы можем изменить, достаточно просто кликнуть на него.
Итак открываем вкладку «Вести журнал паролей» с помощью нее определятся числовое значение новых паролей которые применяются к пользователем прежде чем он сможет снова использовать предыдущий пароль, здесь я оставляю все по умолчанию
Следующая вкладка «Максимальный срок действия пароля» по умолчанию это 42 дня, с помощью этой политике определяется временной интервал в котором используется пароль прежде чем система вновь потребует от пользователя этот пароль поменять, убираем чекбокс и жмем «Применить»
Плавно переходим на раздел «Минимальная длина пароля» тут я не думаю, что требуются какие-либо объяснения по умолчанию это 7 символов, я выставляю как минимум 4 символа
Далее «Минимальный срок действия пароля» с помощью него определяется время с помощью которого пользователь не может изменить пароль по умолчанию значение ноль дней. Убираем галочку и применяем настройки
Самый интересный параметр на мой взгляд «Пароль должен отвечать требованиям сложности» это те требования когда в пароле обязательно должны присутствовать английские буквы, верхнего и нижнего регистра, цифры, не алфавитные символы и т.д Ставим «Отключен» и кликаем «Применить»
Последняя политика «Хранить пароли» используя обратимое шифрование политика не базового уровня и углубляться в пояснения я не буду, скажу лишь то что если в ее включите пароли ваших пользователей в системе будут храниться в открытом виде и если негодяй доберется к вашей сети то он легко может получить доступ к файлам!
Ну а сейчас мы рассмотрим «Политику блокировки учетной записи». В данной политике доступны 3 блока это:
«Время до сброса счетчика блокировки» выставляете время блокировки аккаунта, в качестве примера поставим значение равное 30 мин
«Пороговое значение блокировки» прежде чем аккаунт будет заблокирован, грубо говоря выставляете попытки ввода неверного пароля, после чего наступит блокировка аккаунта пользователя, выставим в качестве примера 3 раза
«Продолжительность блокировки учетной записи» означает что если вы ввели скажем 2 раза неверный пароль и вы не хотите при такой настройке можете подождать 30 мин, и у вас снова будет доступно 3 попытки ввода пароля
Теперь что бы изменить пароль у пользователя заходим в «Пользователи и компьютеры Active Directory»
Ищем учётную запись на которой мы хотим изменить пароль, в моем примере как было описано выше созданная учетная запись «Admin» жмем по ней ПКМ и выбираем пункт «Смена пароля»
В появившимся окне заполняем требуемые поля, в качестве примера я введу пароль из 4-х цифр, после ввода нажимаем «Ок»
Теперь попробуем войти на сервер с новой учетной записью и новым паролем, для этого выполните «Выход из системы»
Осуществляем вход с новой учетной записью