Шифрование аутентификационной информации (пароли, токены) при хранении данных
В AccentOS поддерживается аутентификация пользователей, базирующаяся на локальных механизмах модуля Keystone OpenStack и централизованных механизмах LDAP, в частности MS AD, FreeIPA, OpenLDAP.
Аутентификация настраивается на локальный или внешний режим работы в Keystone. Внешние централизованные механизмы предпочтительны при работе в распределенных архитектурах и в организациях, где уже развернут LDAP для минимизации издержек на его поддержку. Локальные механизмы используются для небольших установок или когда по соображениям безопасности необходимо отделить аутентификацию от любых других инструментов.
Предупреждение
Абсолютно безопасного метода для сохранения паролей не существует ни в FreeIPA, ни в Keystone, поскольку угрозы проистекают из уязвимостей ОС Linux или Windows и в определенной мере связаны с криптографическими методами, которые являются основным риском при хранении хешей паролей.
Хранение аутентификационной информации в LDAP (на примере FreeIPA)
Безопасность пользователей, опции и ограничения паролей при использовании LDAP базируются на механизмах, реализованных в самом LDAP.
Политики паролей FreeIPA
Параметр |
Описание |
Пример |
|---|---|---|
Максимальный срок действия ( |
Максимальный срок действия пароля в днях. Значение по умолчанию — 90 дней. |
|
Минимальный срок действия ( |
Минимальный интервал между двумя операциями смены пароля (в часах). |
|
Размер журнала ( |
Количество предыдущих паролей, которые нельзя повторно использовать. |
|
Классы символов ( |
Минимальное количество различных классов символов в пароле. |
|
Минимальная длина ( |
Минимальная длина пароля. |
|
Максимальное количество ошибок ( |
Число неудачных попыток входа до блокировки учётной записи. |
|
Интервал сброса ошибок ( |
Время (в секундах), после которого счётчик неудачных попыток сбрасывается. |
|
Длительность блокировки ( |
Время (в секундах), на которое блокируется учётная запись после превышения лимита ошибок. |
|
Хранение паролей в FreeIPA
В FreeIPA не хранятся пароли пользователей, а только их хеши:
ipaNTHash — NT-хеш пароля пользователя для интеграции с LDAP
userPassword — основной атрибут, в котором хранится хеш пароля пользователя, используемый для LDAP-аутентификации
Kerberos и усиленная аутентификация
Преимуществом использования LDAP на основе FreeIPA и MS AD является протокол Kerberos, который реализует функции безопасности пользователей и функции безопасности при хранении, модификации, распространении, администрировании паролей пользователей.
Примечание
Современные реализации FreeIPA используют усиленные пароли на базе SPAKE и FAST
Kerberos поддерживает работу с несколькими доменами
Поддерживаются Kerberos tickets, которые позволяют проводить аутентификацию пользователей непосредственно на требуемых системах и ресурсах
Риски и угрозы
Предупреждение
Если администратор:
имеет root-права на сервере FreeIPA
владеет паролем от учетной записи Directory Manager
имеет возможность читать хеши паролей учетных записей в каталоге LDAP
у него существует возможность с помощью brute force получить информацию о паролях, если будет получен MasterKey и krbPrincipalKey.
Повышение прав до root возможно, если произойдет:
получение доступа к учетной записи из группы admins
повышение привилегий при помощи изменения HBAC- и Sudo-правил
эксплуатация какой-либо уязвимости
Данные ситуации должны четко отслеживаться администраторами LDAP, чтобы исключить компрометацию.
Хранение аутентификационной информации в Keystone OpenStack
При использовании Keystone OpenStack можно (и нужно) независимо друг от друга включать дополнительные функции обеспечения безопасности Keystone в соответствии с корпоративной политикой безопасности.
Хеширование паролей в Keystone
Keystone использует методы хранения хешей, а не паролей в СУБД, использует современные криптографические методы:
bcrypt — используется по умолчанию (начиная с OpenStack Stein)
pbkdf2_sha512 — поддерживается
scrypt — поддерживается
Важно
Считается, что sha512_crypt недостаточен для безопасного хеширования паролей для хранения в базе данных. Keystone по умолчанию использует bcrypt, но может обрабатывать scrypt и pbkdf2_sha512 с рядом параметров настройки, если это необходимо.
Все доступные функции применяются только к SQL-серверу драйвера Identity.
Настройка методов хеширования
В файле конфигурации Keystone (/etc/keystone/keystone.conf) можно настроить алгоритм хеширования:
[identity]
# Алгоритм хеширования паролей
# Возможные значения: bcrypt, scrypt, pbkdf2_sha512, sha512_crypt
hashing_algorithm = bcrypt
# Параметры для bcrypt
[bcrypt]
# Количество раундов (cost factor)
rounds = 12
Функции безопасности Keystone
Операция |
Включить для всех пользователей |
Изменить для конкретных пользователей |
|---|---|---|
Принудить пользователя к смене пароля при первом использовании |
|
|
Настройка срока действия пароля |
|
|
Пороговое значение блокировки учетной записи |
|
|
Запретить пользователю менять свой пароль |
Н/Д |
|
Настройка требований к надежности паролей |
|
Н/Д |
Отключение неактивных пользователей |
|
Н/Д |
Настройка уникальной истории паролей |
|
Н/Д |
Сравнение методов хранения аутентификационной информации
Характеристика |
FreeIPA (LDAP) |
Keystone |
|---|---|---|
Хранение паролей |
Хеши (userPassword, ipaNTHash) |
Хеши (bcrypt/scrypt/pbkdf2) |
Алгоритмы по умолчанию |
Зависит от конфигурации LDAP |
bcrypt |
Дополнительная защита |
Kerberos (SPAKE, FAST) |
Интеграция с внешними IDP |
Токены |
Kerberos tickets |
Fernet-токены / JWT |
Рекомендации по обеспечению безопасности
Используйте современные алгоритмы хеширования — bcrypt, scrypt или pbkdf2_sha512
Регулярно обновляйте Keystone и FreeIPA для получения исправлений уязвимостей
Контролируйте доступ к серверам с хешами паролей
Используйте Kerberos для усиленной аутентификации там, где это возможно
Мониторьте попытки несанкционированного доступа и повышения привилегий