Настройка базовой безопасности для Elastic Stack
После добавления защиты паролем в минимальной конфигурации безопасности, вам нужно настроить Transport Layer Security (TLS). Транспортный уровень отвечает за все внутренние коммуникации между узлами в вашем кластере.
Если ваш кластер состоит из нескольких узлов, вам необходимо настроить TLS между узлами. Кластеры в режиме производства не будут запускаться, если вы не включите TLS.
Транспортный уровень использует взаимный TLS как для шифрования, так и для аутентификации узлов. Правильное применение TLS гарантирует, что вредоносный узел не сможет присоединиться к кластеру и обмениваться данными с другими узлами. Хотя реализация аутентификации по имени пользователя и паролю на уровне HTTP полезна для защиты локального кластера, безопасность коммуникаций между узлами требует TLS.
Настройка TLS между узлами является базовой настройкой безопасности для предотвращения доступа неавторизованных узлов к вашему кластеру.
Предварительные условия
Выполните шаги в Раздел по минимальной безопасности для Elastic Stack, чтобы включить функции безопасности Elasticsearch на каждом узле вашего кластера. Затем вы можете зашифровать коммуникации между узлами с помощью TLS.
Вам нужно создавать пароли для встроенных пользователей только один раз для всего кластера.
Генерация центра сертификации
Вы можете добавить столько узлов, сколько вам нужно, в кластер, но они должны иметь возможность общаться друг с другом. Взаимодействие между узлами в кластере обрабатывается транспортным модулем. Для защиты вашего кластера необходимо убедиться, что межузловые коммуникации зашифрованы и проверены, что достигается с помощью взаимного TLS.
В защищенном кластере узлы Elasticsearch используют сертификаты для идентификации при общении с другими узлами.
Кластер должен проверять подлинность этих сертификатов. Рекомендуется доверять конкретному центру сертификации (CA). При добавлении узлов в ваш кластер они должны использовать сертификат, подписанный тем же центром сертификации.
Для транспортного уровня мы рекомендуем использовать отдельный, специализированный центр сертификации, а не существующий, потенциально общий центр сертификации, чтобы обеспечить строгий контроль членства узлов. Используйте инструмент elasticsearch-certutil для генерации центра сертификации для вашего кластера.
-
На любом одном узле используйте инструмент
elasticsearch-certutilдля генерации центра сертификации для вашего кластера../bin/elasticsearch-certutil ca
- При запросе примите имя файла по умолчанию, которое является
elastic-stack-ca.p12. Этот файл содержит общедоступный сертификат для вашего центра сертификации и закрытый ключ, используемый для подписания сертификатов для каждого узла. - Введите пароль для вашего центра сертификации. Вы можете оставить пароль пустым, если вы не развертываете в производственной среде.
- При запросе примите имя файла по умолчанию, которое является
-
На любом одном узле сгенерируйте сертификат и закрытый ключ для узлов в вашем кластере. Вы должны указать файл вывода
elastic-stack-ca.p12, который вы сгенерировали на предыдущем шаге../bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
-
--ca <ca_file> -
Имя файла CA, используемого для подписания ваших сертификатов. Имя файла по умолчанию от инструмента
elasticsearch-certutil—elastic-stack-ca.p12.- Введите пароль для вашего центра сертификации или нажмите Enter, если вы не настраивали его на предыдущем шаге.
-
Создайте пароль для сертификата и примите имя файла по умолчанию.
Файл вывода — это хранилище ключей с именем
elastic-certificates.p12. Этот файл содержит сертификат узла, ключ узла и сертификат центра сертификации.
-
- На каждом узле вашего кластера скопируйте файл
elastic-certificates.p12в каталог$ES_PATH_CONF.
Зашифрование межузловых коммуникаций с помощью TLS
Транспортный сетевой уровень используется для внутренней коммуникации между узлами в кластере. При включенных функциях безопасности необходимо использовать TLS для обеспечения шифрования коммуникаций между узлами.
Теперь, когда вы сгенерировали центр сертификации и сертификаты, вы обновите свой кластер, чтобы использовать эти файлы.
Elasticsearch отслеживает все файлы, такие как сертификаты, ключи, хранилища ключей или хранилища доверенных сертификатов, которые настраиваются как значения настроек узла, связанных с TLS. Если вы обновите любой из этих файлов, например, при изменении хост-имен или истечении срока действия сертификатов, Elasticsearch перезагрузит их. Файлы проверяются на изменения с частотой, определяемой глобальной настройкой Elasticsearch resource.reload.interval.high, которая по умолчанию составляет 5 секунд.
Выполните следующие шаги для каждого узла в вашем кластере. Для присоединения к одному и тому же кластеру все узлы должны иметь одинаковое значение cluster.name.
-
Откройте файл
$ES_PATH_CONF/elasticsearch.ymlи внесите следующие изменения:-
Добавьте настройку
cluster-nameи введите имя для вашего кластера:cluster.name: my-cluster
-
Добавьте настройку
node.nameи введите имя узла. Имя узла по умолчанию — имя хоста машины при запуске Elasticsearch.node.name: node-1
-
Добавьте следующие настройки для включения межузловой коммуникации и предоставления доступа к сертификату узла.
Поскольку вы используете один и тот же файл
elastic-certificates.p12на каждом узле вашего кластера, установите режим проверки наcertificate:xpack.security.transport.ssl.enabled: true xpack.security.transport.ssl.verification_mode: certificate xpack.security.transport.ssl.client_authentication: required xpack.security.transport.ssl.keystore.path: elastic-certificates.p12 xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
Если вы хотите использовать проверку имени хоста, установите режим проверки на
full. Вы должны сгенерировать отдельный сертификат для каждого хоста, который соответствует имени домена или IP-адресу. Смотрите параметрxpack.security.transport.ssl.verification_modeв настройках TLS.
-
-
Если вы ввели пароль при создании сертификата узла, выполните следующие команды для сохранения пароля в хранилище ключей Elasticsearch:
./bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
./bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
- Выполните предыдущие шаги для каждого узла в вашем кластере.
-
На каждом узле вашего кластера перезапустите Elasticsearch. Метод запуска и остановки Elasticsearch зависит от способа вашей установки.
Например, если вы установили Elasticsearch с помощью архива (
tar.gzили.zip), вы можете ввестиCtrl+Cв командной строке, чтобы остановить Elasticsearch.Необходимо выполнить полную перезагрузку кластера. Узлы, настроенные на использование TLS для транспорта, не могут общаться с узлами, использующими незашифрованное транспортное соединение (и наоборот).
Что дальше?
Поздравляем! Вы зашифровали коммуникации между узлами в вашем кластере и можете пройти проверку TLS.
Для добавления дополнительного уровня безопасности настройте базовый уровень безопасности для Elastic Stack с защищенным HTTPS-трафиком. Помимо настройки TLS для транспортного интерфейса вашего кластера Elasticsearch, вы настраиваете TLS для HTTP-интерфейса как для Elasticsearch, так и для Kibana.
© 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/security-basic-setup.html