FIPS 140-2
Федеральный стандарт обработки информации (FIPS) Публикация 140-2 (FIPS PUB 140-2) под названием «Требования к безопасности криптографических модулей» — это американский стандарт компьютерной безопасности, используемый для утверждения криптографических модулей. Elasticsearch предлагает режим совместимости с FIPS 140-2 и, следовательно, может работать в JVM, настроенной на FIPS 140-2.
JVM, поставляемый с Elasticsearch, не настроен для FIPS 140-2. Вы должны либо настроить поставляемую JVM для работы с сертифицированным по FIPS 140-2 поставщиком безопасности Java, либо использовать внешнюю JVM, настроенную для FIPS 140-2.
После настройки JVM для FIPS 140-2 вы можете запустить Elasticsearch в режиме FIPS, установив xpack.security.fips_mode.enabled на true в elasticsearch.yml.
Для Elasticsearch соответствие FIPS 140-2 обеспечивается
- Использованием одобренных FIPS/рекомендуемых NIST криптографических алгоритмов.
- Делегированием реализации этих криптографических алгоритмов на валидированный NIST криптографический модуль (доступный через поставщика безопасности Java, используемого в JVM).
- Разрешением конфигурирования Elasticsearch в соответствии с FIPS 140-2, как описано ниже.
Учет при обновлении
Если вы планируете обновить существующий кластер до версии, которая может работать в JVM, настроенной для FIPS 140-2, рекомендуется сначала выполнить поэтапное обновление до новой версии в вашей существующей JVM и выполнить все необходимые изменения конфигурации в подготовке к запуску в режиме FIPS. Затем вы можете выполнить поэтапную перезагрузку узлов, запуска каждого узла в JVM, настроенной для FIPS 140-2. Во время перезапуска Elasticsearch:
- Обновляет настройки безопасности до последнего, совместимого формата. JVM, совместимая с FIPS 140-2, не может загружать предыдущие версии формата. Если ваш хранилище ключей не защищено паролем, вы должны вручную установить пароль. См. Хранилище ключей Elasticsearch.
- Обновляет самогенерированные пробные лицензии до последнего совместимого с FIPS 140-2 формата.
Если ваша подписка уже поддерживает режим FIPS 140-2, вы можете выбрать поэтапное обновление, одновременно запуская каждый обновленный узел в JVM, настроенной на FIPS 140-2. В этом случае вам также потребуется вручную сгенерировать ваши elasticsearch.keystore и мигрировать все настройки безопасности в него, помимо необходимых изменений конфигурации, описанных ниже, прежде чем запускать каждый узел.
Настройка Elasticsearch для FIPS 140-2
Помимо установки xpack.security.fips_mode.enabled, необходимо соответствующим образом настроить ряд параметров безопасности, чтобы обеспечить соответствие и возможность успешного запуска Elasticsearch в JVM, настроенной для FIPS 140-2.
Хранилище ключей Elasticsearch
FIPS 140-2 (через NIST Special Publication 800-132) предписывает, что ключи шифрования должны иметь не менее эффективной длины 112 бит. Следовательно, хранилище ключей elasticsearch, которое хранит настройки безопасности узла, должно быть защищено паролем, удовлетворяющим этому требованию. Это означает, что пароль должен быть длиной 14 байтов, что эквивалентно паролю длиной 14 символов в кодировке ASCII или паролю длиной 7 символов в кодировке UTF-8. Вы можете использовать подкоманду elasticsearch-keystore passwd для изменения или установки пароля существующего хранилища ключей. Обратите внимание, что при защите хранилища ключей паролем вам необходимо каждый раз указывать пароль при запуске Elasticsearch.
TLS
SSLv2 и SSLv3 не разрешены FIPS 140-2, поэтому SSLv2Hello и SSLv3 нельзя использовать для ssl.supported_protocols.
Использование шифров TLS в основном регулируется соответствующим криптомодулем (одобренным FIPS поставщиком безопасности, который использует ваша JVM). Все шифры, которые по умолчанию сконфигурированы в Elasticsearch, совместимы с FIPS 140-2 и, следовательно, могут быть использованы в JVM FIPS 140-2. См. ssl.cipher_suites.
Хранилища ключей TLS и ключи
Хранилища ключей могут быть использованы в ряде общих параметрах TLS для удобного хранения ключей и сертификатов. Нельзя использовать ни JKS, ни PKCS#12 хранилища ключей в JVM, настроенной для FIPS 140-2. Избегайте использования этих типов хранилищ ключей. Ваш поставщик FIPS 140-2 может предоставить реализацию совместимого хранилища ключей, которое можно использовать, или вы можете использовать файлы в формате PEM. Для использования ключевых материалов в формате PEM вы можете использовать соответствующие \*.key и *.certificate параметры конфигурации, а для материалов доверия вы можете использовать *.certificate_authorities.
Соответствие FIPS 140-2 предписывает, что длина открытых ключей, используемых для TLS, должна соответствовать силе используемого в TLS симметричного алгоритма. В зависимости от значения ssl.cipher_suites, которое вы выберете для использования, ключи TLS должны иметь соответствующую длину в соответствии со следующей таблицей:
Таблица 76. Сравнительная сила ключей
Симметричный алгоритм | Длина ключа RSA | Длина ключа ECC |
| 2048 | 224-255 |
| 3072 | 256-383 |
| 15630 | 512+ |
Хэширование сохранённых паролей
Хотя Elasticsearch предлагает ряд алгоритмов для безопасного хэширования учётных данных на диске, только семейство алгоритмов на основе PBKDF2 совместимо с FIPS 140-2 для хэширования сохранённых паролей. Однако, поскольку PBKDF2 по существу является функцией вывода ключей, поставщик безопасности вашей JVM может потребовать соблюдения требования к силе ключа 112 бит. Хотя FIPS 140-2 не предписывает стандарты паролей пользователей, это требование может повлиять на хэширование паролей в Elasticsearch. Для соответствия этому требованию, позволяя использовать пароли, которые удовлетворяют вашей политике безопасности, Elasticsearch предлагает pbkdf2_stretch, который является рекомендуемым алгоритмом хэширования при работе с Elasticsearch в средах FIPS 140-2. pbkdf2_stretch выполняет один раунд SHA-512 над паролем пользователя перед передачей его реализации PBKDF2.
Вы по-прежнему можете использовать один из простых pbkdf2 вариантов вместо pbkdf2_stretch, если у вас есть внешние политики и инструменты, которые могут гарантировать, что все пароли пользователей для резервированных, нативных и файловых областей длиннее 14 байтов.
Вы должны установить параметр xpack.security.authc.password_hashing.algorithm на одно из доступных значений pbkdf_stretch_*. См. Алгоритмы хэширования кэша пользователей и паролей.
Изменения конфигурации хэширования паролей не являются ретроактивными, поэтому сохранённые хэшированные учётные данные существующих пользователей резервированных, нативных и файловых областей не обновляются на диске. Для обеспечения соответствия FIPS 140-2, необходимо воссоздать пользователей или изменить их пароли с помощью инструмента командной строки elasticsearch-user для файлового облака и с помощью API создания или обновления пользователей и изменения паролей для нативного и резервированного облаков. Другие типы областей не затронуты и не требуют никаких изменений.
Кэширование хэширования паролей
ssha256 (солёное sha256) рекомендуется для хэширования кэша. Хотя PBKDF2 совместимо с FIPS-140-2, оно — по своему дизайну — медленное и, следовательно, не подходит в качестве алгоритма хэширования кэша. Кэшированные учётные данные никогда не хранятся на диске, и солёное sha256 обеспечивает достаточный уровень безопасности для хэширования учётных данных в памяти, без наложения чрезмерной нагрузки на производительность. Вы можете использовать PBKDF2, однако вы должны предварительно тщательно оценить влияние на производительность. В зависимости от вашей установки, накладные расходы PBKDF2 могут аннулировать большую часть повышения производительности при использовании кэша.
Установите все параметры cache.hash_algo на значение ssha256 или оставьте их неопределёнными, так как ssha256 является значением по умолчанию для всех параметров cache.hash_algo. См. Алгоритмы хэширования кэша пользователей и паролей.
Кэш пользователей будет очищен при перезагрузке узла, поэтому любые существующие хэши, использующие несовместимые алгоритмы, будут удалены, и новые будут созданы с выбранным алгоритмом.
Ограничения
Из-за ограничений, накладываемых соответствием FIPS 140-2, небольшое количество функций недоступно при работе в режиме FIPS 140-2. Список следующий:
- Плагин Azure Classic Discovery
- Плагин Ingest Attachment
- Инструмент
elasticsearch-certutil. Однако,elasticsearch-certutilможет быть использован в JVM без конфигурации FIPS 140-2 (указав переменную окруженияES_JAVA_HOMEна другую установку Java), чтобы сгенерировать ключи и сертификаты, которые могут быть позже использованы в JVM, настроенной для FIPS 140-2. - Клиент SQL CLI не может работать в JVM, настроенной для FIPS 140-2, при использовании TLS для транспортной безопасности или PKI для проверки подлинности клиента.
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/fips-140-compliance.html