Текущая инфраструктура:
srv-dc.polygon.local (Server 2012 R2 Standard (Version 6.3.9600) со всеми обновлениями на момент написания заметки)
На заметку: Кто бы что не говорил, но что-то внедрять нужно после того, как Вы опробовали это в тестовой среде. Пусть и потратили время на эталонное развертывание, но это опыт и Вам уже не составит адаптировать на боевое исполнение. К тому же развертывание LAPS (Local Administrator Password Solution) задействует необратимое расширение схемы AD (Active Directory).
Шаг №1: Авторизуюсь на домен контроллере и проверю что все обновления либо из интернета, либо через WSUS установлены на систему. Обновления важны, позволяют избежать или приобрести новый функционал. Хм.
Шаг №2: Открываю браузер и скачиваю LAPS + документацию к нему.
Скачать LAPS и документацию к ней можно с этой страницы: https://www.microsoft.com/en-us/download/details.aspx?id=46899
Дистрибутив LAPS доступен в виде двух версий установочных msi файлов: для 32 (LAPS.x86.msi) и 64 (LAPS.x64.msi) битных систем.
Win + X — Command Prompt (Admin) C:\Windows\system32>msiexec /i c:\soft\laps\LAPS.x64.msi
Устанавливать буду все компоненты:
AdmPwd GPO Extension – исполняемая часть LAPS, которая устанавливается на компьютеры клиентов и осуществляет генерацию, сохранение пароля в домене согласно настроенной политики;Компоненты управления LAPS (Management Tools):Fat client UI – утилита для просмотра пароля администратора;PowerShell module – модуль PowerShell для управления LAPS;GPO Editor templates – административные шаблоны для редактора групповой политики.
Шаг №3: Что входит в расширение схемы при текущей задаче внедрения LAPS. Это добавление двух записей в объект компьютера:
ms—MCS—AdmPwd– атрибут содержит пароль локального администратора в открытом виде;ms—MCS—AdmPwdExpirationTime — хранит дату истечения срока действия пароля на компьютере.
Чтобы расширить схему: (Текущая учетная запись из под которой Вы авторизованы на домен контроллер должна быть включена в группу «Schema Admins»)
Win + X → Command Prompt (Admin) - C:\Windows\system32>powershell PS C:\Windows\system32> import-module AdmPwd.ps → Подгрузить модуль LAPS PS C:\Windows\system32> update-AdmPwdADSchema Operation DistinguishedName --------- ----------------- AddSchemaAttribute cn=ms-Mcs-AdmPwdExpirationTime,CN=Schema,CN=Configurati... AddSchemaAttribute cn=ms-Mcs-AdmPwd,CN=Schema,CN=Configuration,DC=polygon,... ModifySchemaClass cn=computer,CN=Schema,CN=Configuration,DC=polygon,DC=local
Шаг №4: Из документации становится понятно, что внедренный LAPS хранит пароль локального администратора на рабочих местах в добавленном атрибуте (ms-MCS-AdmPwd), правда в Plain Text (чистом виде). Из исходя из этой информации нужно средствами Active Directory ограничить просмотр столь важной информации для всех кроме определенных администраторов домена.
OU = Marketing → это область где будут находиться компьютеры отдела «Маркетинга» и ее нужно защитить.
PS C:\Windows\system32> Find-AdmPwdExtendedRights -Identity Marketing | Format-Table ExtendedRightHolders
ExtendedRightHolders
--------------------
{NT AUTHORITY\SYSTEM, POLYGON\Domain Admins} → текущие права доступа на OU=Marketing, т. е. Доступ на взаимодействие со всеми объектами имеет: Система & Администраторы домена.
Чтобы оградить определенных пользователей/групп (к примеру рассмотрю для: CN=helpdesk,OU=IT,DC=polygon,DC=local) на доступ к атрибутам с правами чтения настройки производятся через утилиту «ADSI Edit».
Win + X → Control Panel — View by: Category → Small icons → Administrative Tools — ADSI Edit — ADSI Edit (через правый клик), выбираю «Connect to...»
Name: Default naming contextPath: LDAP://srv-dc.polygon.local/Default naming contextSelect a well known Naming Context: Default naming contextDefault (Domain or server that you logged in to): отмечаю
и нажимаю «ОК», разворачию доменную структуру и через правый клик мышью на OU=Marketing открываю Properties (Свойства) — вкладка Security — Advanced — в дефолтной вкладке Permissions нажимаю Add -
Principal: Select a principal
и указываю группу helpdesk
Type: AllowedApplies to: This object and all descendant objects
Permissions (указываю права доступа)
All extended rights — галочку снимаю и не ставлюList contents: отмечаю галочкойRead all properties: отмечаю галочкойRead permissons: отмечаю галочкой
и нажимаю Ok окна «Permission Entry for Marketing», потом Apply — OK.
На заметку: По выше приведенным действиям ограничиваем доступ к расширенным атрибутам необходимых OU с компьютерами.
Но это еще не все! Теперь нужно организовать права для учетных записей компьютеров с целью изменения значений атрибутов: ms-MCS-AdmPwd и ms-MCS-AdmPwdExpirationTime — самим компьютерам:
PS C:\Windows\system32> Set-AdmPwdComputerSelfPermission -OrgUnit Marketing Name DistinguishedName ---- ----------------- Marketing OU=Marketing,DC=polygon,DC=local
Шаг №5: В предыдущем шаги я показал, как ограничивать доступ к атрибутам, сейчас же задача обратная, дать доступ (пользователям/группе (CN=helpdeskread,OU=IT,DC=polygon,DC=local)) на чтение паролей компьютеров указанной OU.
PS C:\Windows\system32> Set-AdmPwdReadPasswordPermission -OrgUnit Marketing -All owedPrincipals helpdeskread Name DistinguishedName ---- ----------------- Marketing OU=Marketing,DC=polygon,DC=local
Проверяю, а какие сейчас права на OU=Marketing
PS C:\Windows\system32> Find-AdmPwdExtendedRights -Identity Marketing | Format-T
able ExtendedRightHolders
ExtendedRightHolders
--------------------
{NT AUTHORITY\SYSTEM, POLYGON\Domain Admins, POLYGON\helpdeskread} → все правильно.
На заметку: Есть возможность дать определенной группе (CN=helpdeskwrite,OU=IT,DC=polygon,DC=local) пользователей права на изменение пароля компьютера:
PS C:\Windows\system32> Set-AdmPwdResetPasswordPermission -OrgUnit Marketing -AllowedPrincipals helpdeskwrite Name DistinguishedName ---- ----------------- Marketing OU=Marketing,DC=polygon,DC=local
Шаг №6: Следующий шаг — это шаг создания объекта групповой политики и назначить его на OU внутри которой располагаются компьютеры которыми и будет осуществляться управление.
AdmPwd.adms → шаблоны GPOAdmPwd.adml → языковый файл
Win + X → Command Prompt (Admin) - 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 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 Win + X → Command Prompt (Admin) - C:\Windows\system32>powershell PS C:\Windows\system32> import-module AdmPwd.ps
Но увы почему-то система не находит нужно коммандлет для создания GPO:
PS C:\Windows\system32> Register-AdmPwdWithGPO Register-AdmPwdWithGPO : The term 'Register-AdmPwdWithGPO' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again. At line:1 char:1 + Register-AdmPwdWithGPO + ~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (Register-AdmPwdWithGPO:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException
Ладно не буду пока заострять внимание почему ошибка, а просто через оснастку Group Policy Management создам GPO:
Win + X → Control Panel — Administrative Tools — Group Policy Management — и создаю GPO (GPO_Password_Administrador_Local) на OU=Marketing, открыв ее на редактирование вижу доступные опции
Как видно настроек не много, но все они по существу:
Enable local admin password management: Enabled (включить политику управления паролями LAPS);Password Settings: Enabled – в политике задается сложности пароля, его длина и частота изменения (по аналогии с доменными политиками для паролей пользователей);Name of administrator account to manage: Not Configured (Здесь указывается имя учетной записи администратора, пароль которой будет меняться. по умолчанию меняется пароль встроенного administrator с SID-500);Do not allow password expiration time longer than required by policy: Enabled
Активирую настройки
1) Enable local admin password management: Enabled
2) Password Settings:
Complexity: Large letters, small letters, numbers, specials
Length: 13 characters
Age: 30 days
3) Name of administrator account to manage: указываю Administrator
Шаг №7: Теперь когда политика готова, проверим как она работает. Для этого берем доменный компьютер и помещаем его в OU=Marketing
Установка агента на компьютер может выполняться несколькими способами
- Установка вручную (bat, powershell и т.д.)
- Установка через GPO (Active Directory)
- Установка через SCCM
Мне интересен способ установки через GPO применяя msi пакет
Также добавляем установку пакета для x86 систем, по принципу как обычно, а после через свойства опубликованного приложения отмечаем галочкой:
Select deployment method: Assigned
вкладка Deployment — Adanced… - и убираем/проверям отсутствие галочки у
«Make this 32-bit x86 application available to Win64 machines»
Итак в OU=Marketing находится компьютер W7X641, компьютер перезагружен. Проверяю, что на его системе в оснастке «Программы и компоненты» есть установленное через GPO приложение, если это пока не так, то обновляем GPO:
C:\Users\test2>gpupdate /force
Включены некоторые политики компьютера, выполняющиеся только при загрузке
компьютера.
Перезагрузить компьютер? (Y/N) Y
После перезагрузки снова проверяю установилось ли приложение: «Loal Administrator Password Solution» — как вижу на представленном скриншоте ниже , ответ положителен.
Проверяю с домен контроллер где у меня установлены все компоненты LAPS посредством утилиты «LAPS UI» какой пароль сейчас на компьютере:
Win + щелкаю на значок лупы и набираю «laps ui» следом происходит совпадение с имеющимися по имени.
Щелкаю левой кнопкой мыши по «LAPS UI» и, и что и, указываю имя компьютера, к сожаления нельзя ввести первые буквы именования дабы утилита сама дополнила при нажатии кнопки Search, а раз так, то получается очень ограниченный функционал у утилиты. Ну да ладно. Вот так выглядит извлечение информации по определенному компьютеру:
в моем случае пароля нет. Проверяю, что говорят логи на компьютере после перезагрузки. Если бы было все так просто. В моем случае я через GPO указал что локальная учетная запись администратора — это Administrator, но как я понял нет трансформации Administrator = Администратор на ПК и в следствии этого получил на W7X641 ошибку вида:
Журналы Windows — Приложение
Источник: AdmPwdКод события: 3Уровень: ОшибкаОписание: Could not get local Administrator account. Error 0x80070534.
Исходя из этого меня в GPO именование учетной записи локального администратора на «Администратор», затем gpupdate /force, shutdown /r /t 3
Какое еще наблюдение, если на компьютере учетная запись выключена то утилита с домен контроллера не покажет никакую информацию.
C:\Windows\system32>net user Администратор | findstr /I "активна" Учетная запись активна No C:\Windows\system32>net user Администратор /active:yes
Перезагружаю компьютер и проверяю, вроде как есть возможность прочитать пароль из атрибутов AD через PowerShell:
Пароль также можно получить с помощью PowerShell:
PS C:\Windows\system32> import-module AdmPwd.ps PS C:\Windows\system32> get-admpwdpassword -computername W7X641 ComputerName DistinguishedName Password ExpirationTimestamp ------------ ----------------- -------- ------------------- W7X641 CN=W7X641,OU=Marketing,DC=polygon,DC=local JSA4[ay)4Rv7- 7/30/2019 11:51:1…
вижу, что с учетом настроек GPO сгенерировался пароль: JSA4[ay)4Rv7-
А если все же проверить через оснастку Active Directory Users and Computers — CN=W7X64 - Properties — Attribute Editor
Attribute: ms-Mcs-AdmPwdValue: JSA4[ay)4Rv7-
Ответ да, это пароль. Проверяю на ПК если авторизоваться с его помощью — и авторизация происходит.
Если в GPO выключить настройку Password Settings, а задать пароль через атрибуты (к примеру Aa1234567), то смогу ли я зайти в систему — почему-то ПК не применяет изменения. Возможно я чего-то не понимаю, а значит мне нужно прочитать файл справки, к примеру LAPS_OperationsGuide.docx — и из него узнаю, что задать свой вроде как нельзя. Цель данного приложения LAPS — это централизованное назначение пароля через политики GPO на подконтрольные компьютеры в домене, а для обозначенных учетных записей или групп даются разрешения кто может его посмотреть.
Шаг №8: Допустим в структуре информационных технологий увольняется системный администратор или администратор технической поддержке или по другому поводу/происшествию и нужно сгенерировать новые пароли на всех компьютерах определенной OU:
Win + X → Command Prompt (Admin)
C:\Windows\system32>powershell
PS C:\Windows\system32> import-module AdmPwd.ps
PS C:\Windows\system32> get-adcomputer -filter * -SearchBase "OU=Marketing,DC=polygon,DC=local" | Reset-AdmPwdPassword -ComputerName {$_.Name}
DistinguishedName Status
----------------- ------
CN=W7X641,OU=Marketing,DC=polygon,DC=local PasswordReset
CN=W7X642,OU=Marketing,DC=polygon,DC=local PasswordReset
CN=W7X643,OU=Marketing,DC=polygon,DC=local PasswordReset
Чтобы вывести сгенерированные новые пароли для OU=Marketing:
PS C:\Windows\system32> get-adcomputer -filter * -searchbase "ou=Marketing,dc=polygon,dc=local" | get-admpwdpassword -Computername {$_.Name}
ComputerName DistinguishedName Password
------------ ----------------- --------
W7X641 CN=W7X641,OU=Marketing,DC=polygon,DC=local }Q1r9i{lc...
W7X642 CN=W7X642,OU=Marketing,DC=polygon,DC=local
W7X643 CN=W7X643,OU=Marketing,DC=polygon,DC=local
Как видно у рабочих станций W7X642 & W7X643 нет пароля, в моем случае я просто на будущее создал объекты компьютеров без действующих компьютеров, как только они будут введены в домен то им присвоится пароль.
Так а если создать объект W10X64 компьютера в OU=Marketing и ввести живую станцию с таким именем в домен, а затем посмотреть какой у нее пароль на учетную запись администратора:
C:\Users\ekzorchik.POLYGON>ver
Microsoft Windows [Version 10.0.17134.112]
C:\Users\ekzorchik.POLYGON>gpupdate /force
PS C:\Windows\system32> get-adcomputer -filter * -searchbase "ou=Marketing,dc=polygon,dc=local" | get-admpwdpassword -Computername {$_.Name}
ComputerName DistinguishedName Password
------------ ----------------- --------
W7X641 CN=W7X641,OU=Marketing,DC=polygon,DC=local }Q1r9i{lc...
W7X642 CN=W7X642,OU=Marketing,DC=polygon,DC=local
W7X643 CN=W7X643,OU=Marketing,DC=polygon,DC=local
W10X64 CN=W10X64,OU=Marketing,DC=polygon,DC=local %y;9YHgL{…
Плохо лишь одно, что для новой системы в OU будет с учетом политики GPO создан свой пароль, а не единый, значит опять запускать перегенерацию? Ответа на этот вопрос я пока не нашел. А?! смысл LAPS чтобы каждая станция была защищена персональным паролем — и как в там случае работать поддержке.
Итого! Я для себя разобрал как использовать LAPS в доменной структуре на базе Windows Server 2012 R2 и мой вывод, да! Можно использовать, но как всегда предстоит многое адаптировать к существующим реалиям.
На этом у меня всё, с уважением автор блога Олло Александр aka ekzorchik.





