Групповые Политики/Установка пароля root: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
мНет описания правки
 
(не показано 37 промежуточных версий 1 участника)
Строка 1: Строка 1:
{{Stub}}
{{Stub}}
На данной странице описана не существующая функциональность, а лишь описание идеи о ее реализации.  
На данной странице описана не существующая функциональность, а лишь описание идеи о ее реализации.  
Эта групповая политика позволяет централизованно задать пароль для локальных пользователей root на всех хостах
Эта групповая политика позволит централизованно задавать пароль для локальных пользователей root (возможно и для других локальных пользователей) на всех хостах.
== способ передачи пароля ==
== Сценарии изменения пароля ==
создание GPO с параметром Apply once and do not reapply
Предлагается к рассмотрению 2 сценария изменения паролей для локальных пользователей root
#'''<big>Применять каждый раз</big>'''<br> Создается GPO, в котором указывается пароль в виде, указанном ниже. К данному GPO привязываются рабочие станции, на которых необходимо изменить пароль. Затем gpupdate на каждой рабочей станции применяет политики с новым паролем. Если администратор или пользователь, знающий текущий пароль root, локально поменяет на свой, то пароль будет сброшен при повторным применением политики
#'''<big>Применить однажды</big>'''<br> У Microsoft в RSAT есть возможность создания GPO с параметром "Apply once and do not reapply". Если повторить такой функционал в gpupdate и admc, то появится возможность задавать политику с новым пармолем, которая будет применяться единожды. При этом у пользователей есть возможность изменить пароль для rotot. Однако при модификации GPO, политика применится и перетрет пароль, заданный пользователем.


== формат пароля ==
== Способ передачи пароля ==
Можно передавать пароль в виде plain text, однако такой способ небезопасен по очевидным причинам. Поэтому предлагается передавать не сам пароль, а его хеш и подставлять его в файлс с паролями в соответствии со схемой хранения паролей.
{{Merge|tcb}}
Можно передавать пароль в виде plain text, однако такой способ небезопасен по очевидным причинам. Поэтому предлагается передавать не сам пароль, а его хеш и подставлять его в файл с паролями в соответствии со схемой хранения паролей.


Существует три схемы хранения паролей:
Существует три схемы хранения паролей:
* [[TCB]]
* [[TCB]]
* [[Traditional]]
* [[Traditional]]
* [[Restricted]]
* [[Restricted]]                                                                  
В Alt по умолчанию используется схема [[TCB]], по этому далее рассмотрим ее.
В Alt по умолчанию используется схема [[TCB]], по этому далее рассмотрим ее.
В отличие от остальных схем, в TCB для каждого пользователя создается отдельный файл, хранящий пароль в зашифрованном виде. такие файлы имеют путь
<source lang="text">
/etc/tcb/%username%/shadow
</source>
и содержат в себе одну строку вида:
<source lang="text">
username:password:lastchanged:minimum:maximum:warn:inactive:expire:reserve
</source>
со следующими полями (некоторые поля могут быть пустыми):
# '''<big>Username</big>''' <br> Имя пользователя, используемое для входа в систему.
# '''<big>Password</big>''' <br> Хеш пароля в формате ''$id$salt$hashed''.
## '''id''' <br> идентификатор алгоритма хеширования (см. таблицу ниже)
## '''salt''' <br>соль
## '''hashed''' <br>хеш-сумма пароля
# '''<big>Lastchanged</big>''' <br> Дата последнего изменения пароля. (Количество дней с 01.01.1970).
# '''<big>Minimum</big>''' <br> Минимальный срок действия пароля. Количество дней, которое должно пройти, прежде чем пароль пользователя может быть снова изменен.
# '''<big>Maximum</big>''' <br> Максимальный срок действия пароля. Количество дней после смены пароля пользователя.
# '''<big>Warn</big>''' <br> Количество дней до истечения срока действия пароля, в течение которого пользователь получает предупреждение о необходимости изменения пароля.
# '''<big>Inactive</big>''' <br> Количество дней после истечения срока действия пароля пользователя до отключения учетной записи пользователя.
# '''<big>Expire</big>''' <br> Дата, после которой учетная запись будет отключена (Количество дней с 01.01.1970).
# '''<big>Reserve</big>''' <br> Не используется.
{| class="wikitable"
|+Алгоритмы хеширования
|-
! идентификатор !! способ хеширования !! комментарий
|-
| $1 || MD5 ||
|-
| $2a || Blowfish ||
|-
| $2y || Eksblowfish ||
|-
| $5 || SHA-256 ||
|-
| $6 || SHA-512 ||
|-
| $y || [[yescript]] || используется по умолчанию
|-
| $gy || [[OSS-GOST-Crypto/gost-yescrypt|gost-yescrypt]] ||
|}
К примеру, строка для пользователя ''root'' с паролем ''password'' будет такая:
<source lang="text">
root:$y$j9T$jqfB3ZPUUnifIk09RvnjZ/$Pwz0u55QpZo/JQ.eEuEi2Rip1bS5/.mSvzvdYP2mVj.:18926::::::
</source>
Именно такую строку предлагается передавать с помощью групповых политик.


username:password:lastchanged:minimum:maximum:warn:inactive:expire:reserve
Помимо поля ''pasword'' нас интересуют и другие поля. Например, добавление в поле 'Expire' прошедшей даты позволит отключать учетную запись root.
# Username <br> Имя пользователя, используемое для входа в систему.
 
# Password <br> Хеш пароля в формате ''$id$salt$hashed''. <br> * 1 <br> * 2 <br> * 3
== TODO  ==
# Lastchanged <br> Дата последнего изменения пароля. (Количество дней с 01.01.1970).
''(данный список, возможно, не полный)''
# Minimum <br> Минимальный срок действия пароля. Количество дней, которое должно пройти, прежде чем пароль пользователя может быть снова изменен.
* Реализовать в ADMC и gpupdate функцию "Apply once and do not reapply"
# Maximum <br> Максимальный срок действия пароля. Количество дней после смены пароля пользователя.
* Создать шаблон групповой политики для изменения пароля
# Warn <br> Количество дней до истечения срока действия пароля, в течение которого пользователь получает предупреждение о необходимости изменения пароля.
* реализовать в gpupdate механизм применения данной политики.
# Inactive <br> Количество дней после истечения срока действия пароля пользователя до отключения учетной записи пользователя.
# Expire <br> Дата, после которой учетная запись будет отключена
# Reserve <br> Не используется.


= LAPS  =
'''LAPS''' (Local admin password solution) - решение от Microsoft, позволяющее централизованно управлять паролями локальных администраторов.
LAPS включает в себя три компонента:
* '''Агент''' - Group Policy Client Side Extension (CSE). Является расширением групповой политики. Устанавливается на управляемые рабочие станции с помощью MSI. Отвечает за генерацию пароля и передачу его на контроллер домена.
* '''Модуль PowerShell''' - используется для конфигурации LAPS.
* '''Active Directory'''
LAPS позволяет автоматически по расписанию (или по запросу) генерировать новые пароли на рабочих станциях, а затем передавать их (с использованием шифрования Kerberos, шифр AES по умолчанию).


= References  =
* LAPS: https://habr.com/ru/post/440624/
** Download https://www.microsoft.com/en-us/download/details.aspx?id=46899
* https://adsecurity.org/?p=2288
* https://docs.admpwd.com/AdmPwd.PS/AdmPwd.PS.html
* https://docs.microsoft.com/en-us/previous-versions/mt227395(v=msdn.10)?redirectedfrom=MSDN


$gy$params$salt$hash
* Lithnet Password Protection: https://blog.lithnet.io/2019/01/lppad-1.html

Текущая версия от 14:38, 20 апреля 2022

Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

На данной странице описана не существующая функциональность, а лишь описание идеи о ее реализации. Эта групповая политика позволит централизованно задавать пароль для локальных пользователей root (возможно и для других локальных пользователей) на всех хостах.

Сценарии изменения пароля

Предлагается к рассмотрению 2 сценария изменения паролей для локальных пользователей root

  1. Применять каждый раз
    Создается GPO, в котором указывается пароль в виде, указанном ниже. К данному GPO привязываются рабочие станции, на которых необходимо изменить пароль. Затем gpupdate на каждой рабочей станции применяет политики с новым паролем. Если администратор или пользователь, знающий текущий пароль root, локально поменяет на свой, то пароль будет сброшен при повторным применением политики
  2. Применить однажды
    У Microsoft в RSAT есть возможность создания GPO с параметром "Apply once and do not reapply". Если повторить такой функционал в gpupdate и admc, то появится возможность задавать политику с новым пармолем, которая будет применяться единожды. При этом у пользователей есть возможность изменить пароль для rotot. Однако при модификации GPO, политика применится и перетрет пароль, заданный пользователем.

Способ передачи пароля

Merge-arrow.svg
Необходимо перенести содержимое этой статьи в статью tcb
Вы можете помочь проекту, объединив их.


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

Существует три схемы хранения паролей:

В Alt по умолчанию используется схема TCB, по этому далее рассмотрим ее. В отличие от остальных схем, в TCB для каждого пользователя создается отдельный файл, хранящий пароль в зашифрованном виде. такие файлы имеют путь

/etc/tcb/%username%/shadow

и содержат в себе одну строку вида:

username:password:lastchanged:minimum:maximum:warn:inactive:expire:reserve

со следующими полями (некоторые поля могут быть пустыми):

  1. Username
    Имя пользователя, используемое для входа в систему.
  2. Password
    Хеш пароля в формате $id$salt$hashed.
    1. id
      идентификатор алгоритма хеширования (см. таблицу ниже)
    2. salt
      соль
    3. hashed
      хеш-сумма пароля
  3. Lastchanged
    Дата последнего изменения пароля. (Количество дней с 01.01.1970).
  4. Minimum
    Минимальный срок действия пароля. Количество дней, которое должно пройти, прежде чем пароль пользователя может быть снова изменен.
  5. Maximum
    Максимальный срок действия пароля. Количество дней после смены пароля пользователя.
  6. Warn
    Количество дней до истечения срока действия пароля, в течение которого пользователь получает предупреждение о необходимости изменения пароля.
  7. Inactive
    Количество дней после истечения срока действия пароля пользователя до отключения учетной записи пользователя.
  8. Expire
    Дата, после которой учетная запись будет отключена (Количество дней с 01.01.1970).
  9. Reserve
    Не используется.
Алгоритмы хеширования
идентификатор способ хеширования комментарий
$1 MD5
$2a Blowfish
$2y Eksblowfish
$5 SHA-256
$6 SHA-512
$y yescript используется по умолчанию
$gy gost-yescrypt

К примеру, строка для пользователя root с паролем password будет такая:

root:$y$j9T$jqfB3ZPUUnifIk09RvnjZ/$Pwz0u55QpZo/JQ.eEuEi2Rip1bS5/.mSvzvdYP2mVj.:18926::::::

Именно такую строку предлагается передавать с помощью групповых политик.

Помимо поля pasword нас интересуют и другие поля. Например, добавление в поле 'Expire' прошедшей даты позволит отключать учетную запись root.

TODO

(данный список, возможно, не полный)

  • Реализовать в ADMC и gpupdate функцию "Apply once and do not reapply"
  • Создать шаблон групповой политики для изменения пароля
  • реализовать в gpupdate механизм применения данной политики.

LAPS

LAPS (Local admin password solution) - решение от Microsoft, позволяющее централизованно управлять паролями локальных администраторов. LAPS включает в себя три компонента:

  • Агент - Group Policy Client Side Extension (CSE). Является расширением групповой политики. Устанавливается на управляемые рабочие станции с помощью MSI. Отвечает за генерацию пароля и передачу его на контроллер домена.
  • Модуль PowerShell - используется для конфигурации LAPS.
  • Active Directory

LAPS позволяет автоматически по расписанию (или по запросу) генерировать новые пароли на рабочих станциях, а затем передавать их (с использованием шифрования Kerberos, шифр AES по умолчанию).

References