Настройка базовой безопасности для Elastic Stack
При первом запуске Elasticsearch пароли генерируются для пользователя elastic, а TLS настраивается автоматически. Если вы настроите безопасность вручную до запуска узлов Elasticsearch, процесс автонастройки учтет вашу конфигурацию безопасности. Вы можете настроить конфигурацию TLS в любое время, например, обновить сертификаты узлов.
Если в вашем кластере несколько узлов, вам необходимо настроить TLS между узлами. Кластеры в режиме производства не будут запускаться, если вы не включите TLS.
Транспортный уровень использует взаимный TLS для шифрования и аутентификации узлов. Правильная настройка TLS гарантирует, что злонамеренный узел не сможет присоединиться к кластеру и обмениваться данными с другими узлами. Хотя аутентификация по имени пользователя и паролю на уровне HTTP полезна для защиты локального кластера, безопасность взаимодействия между узлами требует TLS.
Настройка TLS между узлами является базовой настройкой безопасности для предотвращения доступа неавторизованных узлов к вашему кластеру.
Генерация центра сертификации
Вы можете добавить сколько угодно узлов в кластер, но они должны иметь возможность общаться друг с другом. Взаимодействие между узлами в кластере обрабатывается модулем транспорта. Чтобы защитить свой кластер, необходимо гарантировать шифрование и проверку межузлового взаимодействия, что достигается с помощью взаимного TLS.
В защищенном кластере Elasticsearch-узлы используют сертификаты для идентификации себя при взаимодействии с другими узлами.
Кластер должен проверять подлинность этих сертификатов. Рекомендуемый подход — доверие определенному центру сертификации (ЦС). При добавлении узлов в кластер они должны использовать сертификат, подписанный тем же ЦС.
Для транспортного уровня рекомендуется использовать отдельный, выделенный ЦС вместо существующего, возможно общего ЦС, чтобы обеспечить более строгий контроль над членством узлов. Используйте инструмент elasticsearch-certutil для генерации ЦС для вашего кластера.
-
Перед запуском Elasticsearch используйте инструмент
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> -
Имя файла ЦС, используемого для подписи ваших сертификатов. Имя файла по умолчанию из инструмента
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/8.17/security-basic-setup.html