В виду того факта, что на текущем рабочем месте в качестве домен контроллеров используется серверная операционная система Windows Server 2008 R2 Standard
, то мне нужно адаптировать заметку где я в лабораторных условиях разобрал ,как практически развернуть LAPS
на Server 2012 R2 Standard
. Когда я это делал на Server 2008 R2
, то столкнулся с некоторыми нюансами которые по началу были не привычны, но все завершилось успешно.
Так сказать я хочу задокумментировать в шагах на будущее исполнение, сперва проделываем внедрение на одном крупном городе России, а после буду делать на другом и из-за этого важно иметь под рукой собственные наработки.
Что имею:
ОС: Windows Server 2008 R2 Standard (со всеми обновлениями на момент написания данной заметки)
Домен: polygon.local
FQDN-имя: srv-dc.polygon.local
Шаг №1: Авторизуюсь на домен контроллере с права учетной записи вхожей в группу «Domain Admins
» и для внедрения LAPS
понадобится, также быть в группе «Schema Admins
»
Шаг №2: Запускаю файл установки (для удобства я его переименовал в lapsx64.msi
), установка стандартна, точнее просто устанавливаем все:
AdmPwd GPO Extension
Management Tools
Fat client UI
PowerShell module
GPO Editor Template
Шаг №3: Расширяем схему, данными действиями будет организовано добавление двух атрибутов к объекту компьютера:
Start — All Programs — Accessories — Windows PowerShell
— и через правый клик мышью запускаю консоль PowerShell
с правами администратора («Run as administrator
»)
PS C:\Windows\system32> import-module AdmPwd.ps Import-Module : Could not load file or assembly 'file:///C:\Windows\system32\WindowsPowerShell\v1.0\Modules\AdmPwd.ps\AdmPwd.PS.dll' or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded. At line:1 char:14 + import-module <<<< AdmPwd.ps + CategoryInfo : NotSpecified: (:) [Import-Module], BadImageFormatException + FullyQualifiedErrorId : System.BadImageFormatException,Microsoft.PowerShell.Commands.ImportModuleCommand PS C:\Windows\system32> get-host Name : ConsoleHost Version : 2.0 InstanceId : 02bd6acb-c8fb-434d-9440-17a018254760 UI : System.Management.Automation.Internal.Host.InternalHostUserInterface CurrentCulture : en-US CurrentUICulture : en-US PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy IsRunspacePushed : False Runspace : System.Management.Automation.Runspaces.LocalRunspace PS C:\Windows\system32> $PSVersionTable Name Value ---- ----- CLRVersion 2.0.50727.8806 BuildVersion 6.1.7601.17514 PSVersion 2.0 WSManStackVersion 2.0 PSCompatibleVersions {1.0, 2.0} SerializationVersion 1.1.0.1 PSRemotingProtocolVersion 2.1
Дело в том, что в случае данной ошибке выше мне нужно просто обновить PowerShell
с текущей 2
версии на 5.1
, для этого устанавливаю пакет: Win7AndW2K8R2-KB3191566-x64.msu
. Затем перезагружаю систему.
После установка модуля (AdmPwd.ps
) в консоли PowerShell
происходит без каких либо ошибок:
PS C:\Windows\system32> get-host | findstr /I "Version" Version : 5.1.14409.1005 PS C:\Windows\system32> import-module AdmPwd.ps PS C:\Windows\system32> update-AdmPwdADSchema Operation DistinguishedName Status --------- ----------------- ------ AddSchemaAttribute cn=ms-Mcs-AdmPwdExpirationTime,CN=Schema,CN=Configuration,DC=p... Success AddSchemaAttribute cn=ms-Mcs-AdmPwd,CN=Schema,CN=Configuration,DC=polygon,DC=local Success ModifySchemaClass cn=computer,CN=Schema,CN=Configuration,DC=polygon,DC=local Success
Шаг №4: Настройка LAPS
сводится к выполнению следующих шагов в консоли PowerShell:
PS C:\Windows\system32> import-module AdmPwd.ps
На заметку: Отобразить все OU
в домене:
PS C:\Windows\system32> Get-ADObject -Filter { ObjectClass -eq 'organizationalunit' }
или
dsquery ou -limit 0
Именование OU
можно узнать через оснастку “Active Directory - пользователи и компьютеры
” – через правый клик на OU "Свойства" - "Редактор атрибутов" - атрибут "distinguishedName"
и нажимаем “Просмотр
” и копируем именование OU
контейнера.
PS C:\Windows\system32> Set-AdmPwdComputerSelfPermission -OrgUnit MSKTEST
или
PS C:\Windows\system32> Set-AdmPwdComputerSelfPermission -OrgUnit OU=MSKTEST,DC=polygon,DC=local Name DistinguishedName Status ---- ----------------- ------ MSKTEST OU=MSKTEST,DC=polygon,DC=local Delegated PS C:\Windows\system32> Set-AdmPwdReadPasswordPermission -OrgUnit MSKTEST -AllowedPrincipals 'GROUP_LAPS' Name DistinguishedName Status ---- ----------------- ------ MSKTEST OU=MSKTEST,DC=polygon,DC=local Delegated
Проверяю, что реально применились права на доступ группе GROUP_LAPS
к просмотру расширенных/добавленных атрибутов компьютеров внутри OU
с целью извлечения паролей на учетную запись локального администратора или переименованную если изменяли функционал GPO:
PS C:\Windows\system32> Find-AdmPwdExtendedRights -identity MSKTEST | format-table ExtendedRightHolders ExtendedRightHolders -------------------- {NT AUTHORITY\SYSTEM, POLYGON\Domain Admins, POLYGON\GROUP_LAPS}
из вывода видно, что доступ к расширенным атрибутам OU=MSKTEST
есть у системы, Администраторов домена (по умолчанию) и теперь у группы GROUP_LAPS
Отлично, все настройки по внедрению LAPS
проделаны, теперь собственно сама политика которую настраиваю я у себя или один из ее вариантов:
Шаг №5: Копирую файл групповых политик в общее хранилище:
PS C:\Windows\system32> xcopy /Y "C:\Windows\PolicyDefinitions\AdmPwd.admx" C:\Windows\SYSVOL\domain\Policies\PolicyDefinitions\ C:\Windows\PolicyDefinitions\AdmPwd.admx 1 File(s) copied PS C:\Windows\system32> xcopy /Y "c:\Windows\PolicyDefinitions\en-US\AdmPwd.adml" c:\Windows\SYSVOL\domain\Policies\PolicyDefinitions\en-US\ C:\Windows\PolicyDefinitions\en-US\AdmPwd.adml 1 File(s) copied PS C:\Windows\system32>
Шаг №6: Создаю политику где целью будет установка агента LAPS
в зависимости от архитектуры компьютера, а также некоторая доработка:
PS C:\Windows\system32> xcopy /Y "c:\soft\laps\*.msi" C:\Windows\SYSVOL\sysvol\polygon.local\scripts\ C:\soft\laps\lapsx64.msi C:\soft\laps\lapsx86.msi 2 File(s) copied
Политика именуется у меня, как GPO_MSK_LAPS
На заметку: Если в Security Filtering
Вы конкретно указали группу компьютеров или компьютеры вместо Authenticated Users
, то обязательно следует перейти во вкладку Delegation
и добавить Authenticated Users
и дать права на чтение, в противном случае политика работать не будет. Это очень важно. Почему политика не применяется следует смотреть расширенные логи на компьютере.
Теперь собственно настройки политики которые я использую, вы можете взять их как отправная точка под Ваши задачи:
Computer Configuration — Policies — Windows Settings — Security Settings — Local Policies — Security Options:
Accounts: Rename administrator account: отмечаю галочкой Define this policy settings и указываю, как именуется административная учетная запись на компьютере: Администратор
Accounts: Administrator account status: отмечаю галочкой Define this policy setting и ставлю статус Enabled.
Computer Configuration — Policies — Preferences — Control Panel Settings — Local Users and Groups
New — Local User
Action: Update
User name: Administrator (built-in)
Password never expires: отмечаю галочкой
Account never expires: отмечаю галочкой
New — Local Group
Action: Update
Group name: Administrators (built-in)
Delete all member users: отмечаю галочкой
Delete all member groups: отмечаю галочкой
через Add
указываю если есть групп(ы/у) делегированных доменных учетных записей которые будут обладать правами администратора на рабочих станциях и добавляю также «Domain Admins
»
Не забываем указать установку агента, через Computer — Configuration — Policies — Software Settings — Software installation
- одна
x64
-битная установка - вторая
x86
-битная установка с обязательным сниманием галочки «Make this 32-bit x86 application available to Win64 machines.
”
Ниже скриншот для наглядного понимания.
Затем в эту же политику добавляю настройки применительно к LAPS
. В конечном итоге политика должна выглядеть так: (смотрим вкладку Settings
и разворачиваем каждую настройку)
- По настройке
LAPS
см. либо документацию, либо мою заметку. Password Settings: Enabled
Password Complexity: Large letters + small letters + numbers + specials
Password Length: 8
Password Age (Days): 30
Т.к. политика применяется только к компьютерам в определенной OU
то дополнительно стоит деактивировать нацеливание на пользоваталей:
Group Policy Management — GPO_MSK_LAPS — вкладка Details
GRO Status: User configuration settings disabled
На заметку: Настройка Password Length
должно быть равно или больше через предопределено в Default Domain Policy.
По итогу применения политики получаем, что в установлен LAPS
клиент, активирована локальная учетная запись «Администратор
», и группы «Администраторы
» удалены все кроме «Администраторы домена
», “Делегированные администраторы"
. А пароль на локальную учетную запись «Администратор
» теперь генерируется через LAPS
посредством преднастроенной политики, просмотреть его можно только через оснастку LAPS UI
определенной группе и конечно же «Администраторам домена
» кроме прочего через оснастку LAPS UI
и «Active Directory Users and Computer
» включением показа расширенных атрибутов.
Проверяю, что после загрузки W7X64
в OU=MSKTEST
я могу через PowerShell
с домен контроллера извлечь пароль локального администратора:
PS C:\Windows\system32> get-adcomputer -filter * -searchbase "ou=msktest,dc=polygon,dc=local" | get-admpwdpassword -Comp utername {$_.Name} ComputerName DistinguishedName Password ExpirationTimestamp ------------ ----------------- -------- ------------------- W7X64 CN=W7X64,OU=MSKTEST,DC=polygon,DC=local 1/1/0001 12:00:00 AM
Если пароль не отображается, то на ПК нужно сделать:
gpupdate /force
и перезагрузиться, если все равно пароль не назначается, то смотрим логи на ПК:
Просмотр событий:
Имя журнала: Приложение
Источник: AdmPwd
Код события: 5
Уровень: Ошибка
Описание: Validation failed for new local admin password against local password policy. Error 0x80070a90
Решение ошибки: Встроенная учетная запись “Администратор
” должна быть включена и у нее должен быть установлен пароль соответствующий требованиям политики Default Domain Policy
Если ошибка:
Просмотр событий:
Имя журнала: Приложение
Источник: AdmPwd
Код события: 7
Уровень: Ошибка
Описание: Could not write changed password to AD. Error 0x80070032.
Решение ошибки: нет прав на изменение атрибутов добавленных путем расширения схемы.
PS C:\Windows\system32> Set-AdmPwdComputerSelfPermission -OrgUnit msktest
и после я вижу назначенный пароль:
PS C:\Windows\system32> get-adcomputer -filter * -searchbase "ou=msktest,dc=polygon,dc=local" | get-admpwdpassword -Comp utername {$_.Name} ComputerName DistinguishedName Password ExpirationTimestamp ------------ ----------------- -------- ------------------- W7X64 CN=W7X64,OU=MSKTEST,DC=polygon,DC=local vJDH.3pw 8/3/2019 11:16:57 PM
Или узнать все пароли всех компьютеров для всего домена:
PS C:\Windows\system32> get-adcomputer -filter * -searchbase "DC=polygon,DC=local" | get-admpwdpassword -Computername {$_.Name}
Таким образом удобно отслеживать, как применяется политика в течении дня покуда компьютеры после перезагрузки применяют политику.
Итого я адаптировал заметку работы с LAPS
на Windows Server 2008 R2 Standard
, опираясь на рассмотренные действия я могу внедрять данный функционал и в других организациях. На этом я прощаюсь, с уважением Олло Александр aka ekzorchik.