Сделаем платформу лучше — пройди опрос GitVerse

manage-local-admin-password

Форк
0

README.md

Управление паролями локальных администраторов

Альтернатива Microsoft LAPS для Windows и Linux с использованием Hashicorp Vault/OpenBao/StarVault.

Позволяет автоматически ротировать пароли:

  • для любых локальных учетных записей.
  • вне зависимости от того входят ли сервера в домен или нет.
  • вне зависимости от операционной системы.

Подробное описание см. https://strongpass.ru/blog/manage-local-admin-password

Здесь указаны только технические детали, касающие настройки клиентской части, работающей на хостах.

Linux

Требования

GLIBC >= 2.28

Установка

  1. Скачать архив
    password-auto-rotate.lnx.tar.gz из раздела
    Релизы` и распаковать его.
  2. Скопировать файл
    password-auto-rotate
    в
    /usr/local/bin
    .
  3. Выполнить
    chmod +x /usr/local/bin/password-auto-rotate
    .
  4. Скопировать файл
    assets/password-auto-rotate.env
    в
    /etc/defaut
    .
  5. Заполнить переменные в файле
    /etc/default/password-auto-rotate.env
    соответствующими значениями.
  6. Скопировать файлы
    assets/password-auto-rotate.timer
    и
    assets/password-auto-rotate.service
    в
    /etc/systemd/system
    .
  7. Выполнить команды, указанные ниже. Вместо
    <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

Например, для пользователя

root
команды будут выглядеть следующим образом:

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

При необходимости повторите эти команды для каждого пользователя, пароль которого планируется автоматически менять.

Посмотреть список таймеров и их статус можно командой

systemctl list-timers --all

Для равномерного распределения запросов к Vault от многих серверов используется параметр

RandomizedDelaySec
в файле
password-auto-rotate.timer
. Каждое выполнение задания задерживается на случайное количество секунд, но не более значения указанного в этом параметре.

Журналирование

По умолчанию сообщения о результатах выполнения и ошибки пишутся в журнал

systemd
. Посмотреть их можно командой подставив вместо параметра
<имя пользователя>
соответствующее имя:

journalctl -xeu password-auto-rotate@<имя пользователя>.service

При необходимости вывод сообщений можно перенаправить в файлы, указав в

password-auto-rotate.service
:

StandardOutput=append:/var/log/password-auto-rotate.log StandardError=append:/var/log/password-auto-rotate.err.log

Windows

Установка

  1. Скачать архив

    password-auto-rotate.win.zip из раздела
    Релизы` и распаковать его.

  2. Скопируйте файл в

    password-auto-rotate.ps1
    в каталог
    C:\Program Files\password-auto-rotate\

  3. Запустите скрипт из командной строки

    powershell
    и убедитесь, что с указанными параметрами командной строки обновление пароля происходит успешно. При появлении ошибок см. раздел "Журналирование".

  4. Создайте задачу в 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

Журналирование

Результаты выполнение скрипта пишутся:

  • кратко - в журнал
    Application
    Windows Event Log. Сообщения можно найти произведя поиск по источнику сообщений
    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)нетПолный путь до секрета в хранилище секретов. Указывается в формате
path1/path2/path3
HOSTNAME (Hostname)нет

Параметры указываются в:

  • Linux. В переменных окружения в файле
    /etc/default/password-auto-rotate.env
    .
  • Windows. В командой строке в параметрах запуска скрипта.

Конечный url для получения пароля формируется так:

<VAULT_ADDR>/v1/sys/policies/password/<PASSWORD_POLICY_NAME>/generate

В зависимости от того указан ли параметр

SECRETS_BASE_PATH
путь для сохранения секрета в хранилище формируется следующим образом:

  • 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>

Значение

HOSTNAME
можно указать вручную. По умолчанию используется имя хоста, котором запущено приложение или скрипт.

Описание

Управление паролями локальных администраторов. Бесплатная aльтернатива Microsoft LAPS для Windows и Linux. Автоматическая ротация паролей локальных учетных записей для доменных и недоменных хостов.

https://strongpass.ru/blog/manage-local-admin-password

Языки

Go

  • Shell
  • PowerShell
Сообщить о нарушении

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.