Групповые Политики/Установка пароля root: различия между версиями
Нет описания правки |
мНет описания правки |
||
(не показано 20 промежуточных версий 1 участника) | |||
Строка 2: | Строка 2: | ||
На данной странице описана не существующая функциональность, а лишь описание идеи о ее реализации. | На данной странице описана не существующая функциональность, а лишь описание идеи о ее реализации. | ||
Эта групповая политика позволит централизованно задавать пароль для локальных пользователей root (возможно и для других локальных пользователей) на всех хостах. | Эта групповая политика позволит централизованно задавать пароль для локальных пользователей root (возможно и для других локальных пользователей) на всех хостах. | ||
== | == Сценарии изменения пароля == | ||
# | Предлагается к рассмотрению 2 сценария изменения паролей для локальных пользователей root | ||
#У Microsoft в RSAT есть возможность создания GPO с параметром "Apply once and do not reapply". Если повторить такой функционал в gpupdate и admc, то появится возможность задавать политику с | #'''<big>Применять каждый раз</big>'''<br> Создается GPO, в котором указывается пароль в виде, указанном ниже. К данному GPO привязываются рабочие станции, на которых необходимо изменить пароль. Затем gpupdate на каждой рабочей станции применяет политики с новым паролем. Если администратор или пользователь, знающий текущий пароль root, локально поменяет на свой, то пароль будет сброшен при повторным применением политики | ||
#'''<big>Применить однажды</big>'''<br> У Microsoft в RSAT есть возможность создания GPO с параметром "Apply once and do not reapply". Если повторить такой функционал в gpupdate и admc, то появится возможность задавать политику с новым пармолем, которая будет применяться единожды. При этом у пользователей есть возможность изменить пароль для rotot. Однако при модификации GPO, политика применится и перетрет пароль, заданный пользователем. | |||
== | == Способ передачи пароля == | ||
{{Merge|tcb}} | {{Merge|tcb}} | ||
Можно передавать пароль в виде plain text, однако такой способ небезопасен по очевидным причинам. Поэтому предлагается передавать не сам пароль, а его хеш и подставлять его в файл с паролями в соответствии со схемой хранения паролей. | Можно передавать пароль в виде plain text, однако такой способ небезопасен по очевидным причинам. Поэтому предлагается передавать не сам пароль, а его хеш и подставлять его в файл с паролями в соответствии со схемой хранения паролей. | ||
Строка 15: | Строка 16: | ||
* [[Restricted]] | * [[Restricted]] | ||
В Alt по умолчанию используется схема [[TCB]], по этому далее рассмотрим ее. | В Alt по умолчанию используется схема [[TCB]], по этому далее рассмотрим ее. | ||
В отличие от | В отличие от остальных схем, в TCB для каждого пользователя создается отдельный файл, хранящий пароль в зашифрованном виде. такие файлы имеют путь | ||
<source> | <source lang="text"> | ||
/etc/tcb/%username%/shadow | |||
</source> | |||
и содержат в себе одну строку вида: | |||
<source lang="text"> | |||
username:password:lastchanged:minimum:maximum:warn:inactive:expire:reserve | username:password:lastchanged:minimum:maximum:warn:inactive:expire:reserve | ||
</source> | </source> | ||
со следующими полями (некоторые поля могут быть пустыми): | |||
# '''<big>Username | # '''<big>Username</big>''' <br> Имя пользователя, используемое для входа в систему. | ||
# '''<big>Password</big>''' <br> Хеш пароля в формате ''$id$salt$hashed''. | # '''<big>Password</big>''' <br> Хеш пароля в формате ''$id$salt$hashed''. | ||
## '''id | ## '''id''' <br> идентификатор алгоритма хеширования (см. таблицу ниже) | ||
## '''salt | ## '''salt''' <br>соль | ||
## '''hashed''' <br>хеш-сумма пароля | ## '''hashed''' <br>хеш-сумма пароля | ||
# '''<big>Lastchanged</big>''' <br> Дата последнего изменения пароля. (Количество дней с 01.01.1970). | # '''<big>Lastchanged</big>''' <br> Дата последнего изменения пароля. (Количество дней с 01.01.1970). | ||
Строка 30: | Строка 35: | ||
# '''<big>Warn</big>''' <br> Количество дней до истечения срока действия пароля, в течение которого пользователь получает предупреждение о необходимости изменения пароля. | # '''<big>Warn</big>''' <br> Количество дней до истечения срока действия пароля, в течение которого пользователь получает предупреждение о необходимости изменения пароля. | ||
# '''<big>Inactive</big>''' <br> Количество дней после истечения срока действия пароля пользователя до отключения учетной записи пользователя. | # '''<big>Inactive</big>''' <br> Количество дней после истечения срока действия пароля пользователя до отключения учетной записи пользователя. | ||
# '''<big>Expire</big>''' <br> Дата, после которой учетная запись будет отключена | # '''<big>Expire</big>''' <br> Дата, после которой учетная запись будет отключена (Количество дней с 01.01.1970). | ||
# '''<big>Reserve</big>''' <br> Не используется. | # '''<big>Reserve</big>''' <br> Не используется. | ||
{| class="wikitable" | {| class="wikitable" | ||
|+Алгоритмы хеширования | |+Алгоритмы хеширования | ||
Строка 48: | Строка 52: | ||
| $6 || SHA-512 || | | $6 || SHA-512 || | ||
|- | |- | ||
| $y || yescript || используется по умолчанию | | $y || [[yescript]] || используется по умолчанию | ||
|- | |- | ||
| $gy || [[OSS-GOST-Crypto/gost-yescrypt|gost-yescrypt]] || | | $gy || [[OSS-GOST-Crypto/gost-yescrypt|gost-yescrypt]] || | ||
|} | |} | ||
К примеру, строка для пользователя ''root'' с паролем ''password'' будет такая: | |||
<source lang="text"> | |||
root:$y$j9T$jqfB3ZPUUnifIk09RvnjZ/$Pwz0u55QpZo/JQ.eEuEi2Rip1bS5/.mSvzvdYP2mVj.:18926:::::: | |||
</source> | |||
Именно такую строку предлагается передавать с помощью групповых политик. | |||
Помимо поля ''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 = | |||
* 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 | |||
* Lithnet Password Protection: https://blog.lithnet.io/2019/01/lppad-1.html |
Текущая версия от 14:38, 20 апреля 2022
На данной странице описана не существующая функциональность, а лишь описание идеи о ее реализации. Эта групповая политика позволит централизованно задавать пароль для локальных пользователей root (возможно и для других локальных пользователей) на всех хостах.
Сценарии изменения пароля
Предлагается к рассмотрению 2 сценария изменения паролей для локальных пользователей root
- Применять каждый раз
Создается GPO, в котором указывается пароль в виде, указанном ниже. К данному GPO привязываются рабочие станции, на которых необходимо изменить пароль. Затем gpupdate на каждой рабочей станции применяет политики с новым паролем. Если администратор или пользователь, знающий текущий пароль root, локально поменяет на свой, то пароль будет сброшен при повторным применением политики - Применить однажды
У Microsoft в RSAT есть возможность создания GPO с параметром "Apply once and do not reapply". Если повторить такой функционал в gpupdate и admc, то появится возможность задавать политику с новым пармолем, которая будет применяться единожды. При этом у пользователей есть возможность изменить пароль для rotot. Однако при модификации GPO, политика применится и перетрет пароль, заданный пользователем.
Способ передачи пароля
Можно передавать пароль в виде plain text, однако такой способ небезопасен по очевидным причинам. Поэтому предлагается передавать не сам пароль, а его хеш и подставлять его в файл с паролями в соответствии со схемой хранения паролей.
Существует три схемы хранения паролей:
В Alt по умолчанию используется схема TCB, по этому далее рассмотрим ее. В отличие от остальных схем, в TCB для каждого пользователя создается отдельный файл, хранящий пароль в зашифрованном виде. такие файлы имеют путь
/etc/tcb/%username%/shadow
и содержат в себе одну строку вида:
username:password:lastchanged:minimum:maximum:warn:inactive:expire:reserve
со следующими полями (некоторые поля могут быть пустыми):
- Username
Имя пользователя, используемое для входа в систему. - Password
Хеш пароля в формате $id$salt$hashed.- id
идентификатор алгоритма хеширования (см. таблицу ниже) - salt
соль - hashed
хеш-сумма пароля
- id
- Lastchanged
Дата последнего изменения пароля. (Количество дней с 01.01.1970). - Minimum
Минимальный срок действия пароля. Количество дней, которое должно пройти, прежде чем пароль пользователя может быть снова изменен. - Maximum
Максимальный срок действия пароля. Количество дней после смены пароля пользователя. - Warn
Количество дней до истечения срока действия пароля, в течение которого пользователь получает предупреждение о необходимости изменения пароля. - Inactive
Количество дней после истечения срока действия пароля пользователя до отключения учетной записи пользователя. - Expire
Дата, после которой учетная запись будет отключена (Количество дней с 01.01.1970). - 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
- LAPS: https://habr.com/ru/post/440624/
- 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
- Lithnet Password Protection: https://blog.lithnet.io/2019/01/lppad-1.html