В виду того факта, что на текущем рабочем месте в качестве домен контроллеров используется серверная операционная система 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

Групповая политика 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 агента через GPO в зависимости от архитектуры: либо x64, либо x86

Затем в эту же политику добавляю настройки применительно к LAPS. В конечном итоге политика должна выглядеть так: (смотрим вкладку Settings и разворачиваем каждую настройку)

Общий вид настроек политики LAPS

  • По настройке 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.

От ekzorchik

Всем хорошего дня, меня зовут Александр. Я под ником - ekzorchik, являюсь автором всех написанных, разобранных заметок. Большинство вещей с которыми мне приходиться разбираться, как на работе, так и дома выложены на моем блоге в виде пошаговых инструкции. По сути блог - это шпаргалка онлайн. Каждая новая работа где мне случалось работать вносила новые знания и нюансы работы и соответственно я расписываю как сделать/решить ту или иную задачу. Это очень помогает. Когда сам разбираешь задачу, стараешься ее приподнести в виде структурированной заметки чтобы было все наглядно и просто, то процесс усвоения идет в гору. Также прошу на https://win.ekzorchik.ru https://lin.ekzorchik.ru https://net.ekzorchik.ru https://voip.ekzorchik.ru https;//home.ekzorchik.ru