Текущая инфраструктура:
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 context
Path: LDAP://srv-dc.polygon.local/Default naming context
Select a well known Naming Context: Default naming context
Default (Domain or server that you logged in to): отмечаю
и нажимаю «ОК
», разворачию доменную структуру и через правый клик мышью на OU=Marketing
открываю Properties (Свойства)
— вкладка Security — Advanced
— в дефолтной вкладке Permissions
нажимаю Add -
Principal: Select a principal
и указываю группу helpdesk
Type: Allowed
Applies 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 → шаблоны GPO
AdmPwd.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-AdmPwd
Value: 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.