Шифрование аутентификационной информации (пароли, токены) при хранении данных

В AccentOS поддерживается аутентификация пользователей, базирующаяся на локальных механизмах модуля Keystone OpenStack и централизованных механизмах LDAP, в частности MS AD, FreeIPA, OpenLDAP.

Аутентификация настраивается на локальный или внешний режим работы в Keystone. Внешние централизованные механизмы предпочтительны при работе в распределенных архитектурах и в организациях, где уже развернут LDAP для минимизации издержек на его поддержку. Локальные механизмы используются для небольших установок или когда по соображениям безопасности необходимо отделить аутентификацию от любых других инструментов.

Предупреждение

Абсолютно безопасного метода для сохранения паролей не существует ни в FreeIPA, ни в Keystone, поскольку угрозы проистекают из уязвимостей ОС Linux или Windows и в определенной мере связаны с криптографическими методами, которые являются основным риском при хранении хешей паролей.

Хранение аутентификационной информации в LDAP (на примере FreeIPA)

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

### Политики паролей FreeIPA

### Хранение паролей в 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

Сравнение методов хранения аутентификационной информации

Рекомендации по обеспечению безопасности

  1. Используйте современные алгоритмы хеширования — bcrypt, scrypt или pbkdf2_sha512
  2. Регулярно обновляйте Keystone и FreeIPA для получения исправлений уязвимостей
  3. Контролируйте доступ к серверам с хешами паролей
  4. Используйте Kerberos для усиленной аутентификации там, где это возможно
  5. Мониторьте попытки несанкционированного доступа и повышения привилегий