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. Автоматическая ротация паролей локальных учетных записей для доменных и недоменных хостов.

    Конвейеры
    0 успешных
    0 с ошибкой