manage-local-admin-password
Управление паролями локальных администраторов
Альтернатива Microsoft LAPS для Windows и Linux с использованием Hashicorp Vault/OpenBao/StarVault.
Позволяет автоматически ротировать пароли:
- для любых локальных учетных записей.
- вне зависимости от того входят ли сервера в домен или нет.
- вне зависимости от операционной системы.
Подробное описание см. https://strongpass.ru/blog/manage-local-admin-password
Здесь указаны только технические детали, касающие настройки клиентской части, работающей на хостах.
Linux
Требования
GLIBC >= 2.28
Установка
- Скачать архив
Релизы` и распаковать его.password-auto-rotate.lnx.tar.gz из раздела - Скопировать файл
вpassword-auto-rotate
./usr/local/bin - Выполнить
.chmod +x /usr/local/bin/password-auto-rotate - Скопировать файл
вassets/password-auto-rotate.env
./etc/defaut - Заполнить переменные в файле
соответствующими значениями./etc/default/password-auto-rotate.env - Скопировать файлы
иassets/password-auto-rotate.timer
вassets/password-auto-rotate.service
./etc/systemd/system - Выполнить команды, указанные ниже. Вместо
, необходимо указать логин пользователя, для которого будет производиться автоматическая смена пароля.<user login>
cp /etc/systemd/system/password-auto-rotate.service /etc/systemd/system/password-auto-rotate@<user login>.service
cp /etc/systemd/system/password-auto-rotate.timer /etc/systemd/system/password-auto-rotate@<user login>.timer
systemctl enable --now /etc/systemd/system/password-auto-rotate@<user login>.timer
Например, для пользователя
команды будут выглядеть следующим образом:
cp /etc/systemd/system/password-auto-rotate.service /etc/systemd/system/password-auto-rotate@root.service
cp /etc/systemd/system/password-auto-rotate.timer /etc/systemd/system/password-auto-rotate@root.timer
systemctl enable --now /etc/systemd/system/password-auto-rotate@root.timer
При необходимости повторите эти команды для каждого пользователя, пароль которого планируется автоматически менять.
Посмотреть список таймеров и их статус можно командой
Для равномерного распределения запросов к Vault от многих серверов используется параметр
в файле
. Каждое выполнение задания задерживается на случайное количество секунд, но не более значения указанного в этом параметре.
Журналирование
По умолчанию сообщения о результатах выполнения и ошибки пишутся в журнал
. Посмотреть их можно командой подставив вместо параметра
соответствующее имя:
journalctl -xeu password-auto-rotate@<имя пользователя>.service
При необходимости вывод сообщений можно перенаправить в файлы, указав в
:
StandardOutput=append:/var/log/password-auto-rotate.log
StandardError=append:/var/log/password-auto-rotate.err.log
Windows
Установка
-
Скачать архив
Релизы` и распаковать его.password-auto-rotate.win.zip из раздела -
Скопируйте файл в
в каталогpassword-auto-rotate.ps1C:\Program Files\password-auto-rotate\ -
Запустите скрипт из командной строки
и убедитесь, что с указанными параметрами командной строки обновление пароля происходит успешно. При появлении ошибок см. раздел "Журналирование".powershell -
Создайте задачу в Task Scheduler. В powershell выполните команды ниже. Вместо
,<ROLE_ID>
,<SECRET_ID>
>,<PASSWORD_POLICY_NAME
,<SECRETS>
,<BASE_PATH>
, подставьте свои значения.<USER>
$principal=New-ScheduledTaskPrincipal -UserID "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount
$action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument '-File "C:\Program Files\password-auto-rotate\password-auto-rotate.ps1" -VaultAddr "http://vault.acme.corp" -RoleID "<ROLE_ID>" -SecretID "<SECRET_ID>" -PasswordPolicyName "<PASSWORD_POLICY_NAME>" -SecretsStoreName "<SECRETS>" -SecretsBasePath "<BASE_PATH>" -Username "USER"'
$trigger = New-ScheduledTaskTrigger -RandomDelay (New-TimeSpan -Minute 1) -Daily -At 1am
$settings = New-ScheduledTaskSettingsSet
$task = New-ScheduledTask -Action $action -Principal $principal -Trigger $trigger -Settings $settings
Register-ScheduledTask -TaskName "Password auto rotate" -InputObject $task
Журналирование
Результаты выполнение скрипта пишутся:
- кратко - в журнал
Windows Event Log. Сообщения можно найти произведя поиск по источнику сообщенийApplication
.PasswordAutoRotate - подробно - в файл C:\windows\debug\password-auto-rotate.log
Параметры запуска из командной строки.
.\password-auto-rotate.ps1 -VaultAddr "http://vault.acme.corp" -RoleID "c59c3a2f-1991-5a8f-d08f-d8f8415ff6aa" -SecretID "53e7b725-b93e-ffdd-5865-0ef3b48ccca7" -PasswordPolicyName "local-account-pwd-policy" -SecretsStoreName "local-accounts-creds" -SecretsBasePath "windows" -Username user12
Принципы формирования url для работы с Vault из параметров
Информация о формировании путей приведена для Hashicorp Vault версии 1.13. Если у вас другая версия Vault, необходимо убедиться, что пути REST API актуальны.
Для правильного формирования путей, по которым будет идти обращение к Vault требуются параметры:
Имя | Обязательный параметр? | Комментарии |
---|---|---|
VAULT_ADDR (VaultAddr) | да | Адрес сервера vault вида https://vault.acme.corp/ |
PASSWORD_POLICY_NAME (PasswordPolicyName) | да | Название парольной политики. Требуется для получения пароля. |
SECRETS_STORE_NAME (SecretsStoreName) | да | Имя хранилища секретов. |
SECRETS_BASE_PATH (SecretBasePath) | нет | Полный путь до секрета в хранилище секретов. Указывается в формате
|
HOSTNAME (Hostname) | нет |
Параметры указываются в:
- Linux. В переменных окружения в файле
./etc/default/password-auto-rotate.env - Windows. В командой строке в параметрах запуска скрипта.
Конечный url для получения пароля формируется так:
В зависимости от того указан ли параметр
путь для сохранения секрета в хранилище формируется следующим образом:
указан:SECRETS_BASE_PATH<VAULT_ADDR>/v1/<SECRETS_STORE_NAME>/data/<SECRETS_BASE_PATH>/<HOSTNAME>/<USERNAME>
НЕ указан:SECRETS_BASE_PATH<VAULT_ADDR>/v1/<SECRETS_STORE_NAME>/data/<HOSTNAME>/<USERNAME>
Значение
можно указать вручную. По умолчанию используется имя хоста, котором запущено приложение или скрипт.
Описание
Управление паролями локальных администраторов. Бесплатная aльтернатива Microsoft LAPS для Windows и Linux. Автоматическая ротация паролей локальных учетных записей для доменных и недоменных хостов.
Языки
Go
- Shell
- PowerShell