Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Руководство [7.17] ›Защита Elastic Stack ›Настройка безопасности Elastic Stack

Настройка базовой безопасности для Elastic Stack

После добавления защиты паролем в минимальной конфигурации безопасности, вам нужно настроить Transport Layer Security (TLS). Транспортный уровень отвечает за все внутренние коммуникации между узлами в вашем кластере.

Если ваш кластер состоит из нескольких узлов, вам необходимо настроить TLS между узлами. Кластеры в режиме производства не будут запускаться, если вы не включите TLS.

Транспортный уровень использует взаимный TLS как для шифрования, так и для аутентификации узлов. Правильное применение TLS гарантирует, что вредоносный узел не сможет присоединиться к кластеру и обмениваться данными с другими узлами. Хотя реализация аутентификации по имени пользователя и паролю на уровне HTTP полезна для защиты локального кластера, безопасность коммуникаций между узлами требует TLS.

Настройка TLS между узлами является базовой настройкой безопасности для предотвращения доступа неавторизованных узлов к вашему кластеру.

Понимание транспортных контекстов

Transport Layer Security (TLS) — это стандартный отраслевой протокол для применения мер безопасности (например, шифрования) к сетевым коммуникациям. TLS — это современное название Secure Sockets Layer (SSL). В документации Elasticsearch термины TLS и SSL используются взаимозаменяемо.

Транспортный протокол — это название протокола, который Elasticsearch узлы используют для коммуникации друг с другом. Это название специфично для Elasticsearch и различает транспортный порт (по умолчанию 9300) и HTTP-порт (по умолчанию 9200). Узлы общаются друг с другом через транспортный порт, а REST-клиенты общаются с Elasticsearch через HTTP-порт.

Несмотря на то, что слово транспорт встречается в обоих контекстах, они означают разные вещи. Можно применять TLS как к транспортному порту Elasticsearch, так и к HTTP-порту. Нам известно, что эти перекрывающиеся термины могут быть запутанными, поэтому для ясности в этом случае мы применяем TLS к транспортному порту Elasticsearch. В следующем случае мы применим TLS к HTTP-порту Elasticsearch.

Предварительные условия

Выполните шаги в Раздел по минимальной безопасности для Elastic Stack, чтобы включить функции безопасности Elasticsearch на каждом узле вашего кластера. Затем вы можете зашифровать коммуникации между узлами с помощью TLS.

Вам нужно создавать пароли для встроенных пользователей только один раз для всего кластера.

Генерация центра сертификации

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

В защищенном кластере узлы Elasticsearch используют сертификаты для идентификации при общении с другими узлами.

Кластер должен проверять подлинность этих сертификатов. Рекомендуется доверять конкретному центру сертификации (CA). При добавлении узлов в ваш кластер они должны использовать сертификат, подписанный тем же центром сертификации.

Для транспортного уровня мы рекомендуем использовать отдельный, специализированный центр сертификации, а не существующий, потенциально общий центр сертификации, чтобы обеспечить строгий контроль членства узлов. Используйте инструмент elasticsearch-certutil для генерации центра сертификации для вашего кластера.

  1. На любом одном узле используйте инструмент elasticsearch-certutil для генерации центра сертификации для вашего кластера.

    ./bin/elasticsearch-certutil ca
    1. При запросе примите имя файла по умолчанию, которое является elastic-stack-ca.p12. Этот файл содержит общедоступный сертификат для вашего центра сертификации и закрытый ключ, используемый для подписания сертификатов для каждого узла.
    2. Введите пароль для вашего центра сертификации. Вы можете оставить пароль пустым, если вы не развертываете в производственной среде.
  2. На любом одном узле сгенерируйте сертификат и закрытый ключ для узлов в вашем кластере. Вы должны указать файл вывода elastic-stack-ca.p12, который вы сгенерировали на предыдущем шаге.

    ./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
    --ca <ca_file>

    Имя файла CA, используемого для подписания ваших сертификатов. Имя файла по умолчанию от инструмента elasticsearch-certutil — elastic-stack-ca.p12.

    1. Введите пароль для вашего центра сертификации или нажмите Enter, если вы не настраивали его на предыдущем шаге.
    2. Создайте пароль для сертификата и примите имя файла по умолчанию.

      Файл вывода — это хранилище ключей с именем elastic-certificates.p12. Этот файл содержит сертификат узла, ключ узла и сертификат центра сертификации.

  3. На каждом узле вашего кластера скопируйте файл elastic-certificates.p12 в каталог $ES_PATH_CONF.

Зашифрование межузловых коммуникаций с помощью TLS

Транспортный сетевой уровень используется для внутренней коммуникации между узлами в кластере. При включенных функциях безопасности необходимо использовать TLS для обеспечения шифрования коммуникаций между узлами.

Теперь, когда вы сгенерировали центр сертификации и сертификаты, вы обновите свой кластер, чтобы использовать эти файлы.

Elasticsearch отслеживает все файлы, такие как сертификаты, ключи, хранилища ключей или хранилища доверенных сертификатов, которые настраиваются как значения настроек узла, связанных с TLS. Если вы обновите любой из этих файлов, например, при изменении хост-имен или истечении срока действия сертификатов, Elasticsearch перезагрузит их. Файлы проверяются на изменения с частотой, определяемой глобальной настройкой Elasticsearch resource.reload.interval.high, которая по умолчанию составляет 5 секунд.

Выполните следующие шаги для каждого узла в вашем кластере. Для присоединения к одному и тому же кластеру все узлы должны иметь одинаковое значение cluster.name.

  1. Откройте файл $ES_PATH_CONF/elasticsearch.yml и внесите следующие изменения:

    1. Добавьте настройку cluster-name и введите имя для вашего кластера:

      cluster.name: my-cluster
    2. Добавьте настройку node.name и введите имя узла. Имя узла по умолчанию — имя хоста машины при запуске Elasticsearch.

      node.name: node-1
    3. Добавьте следующие настройки для включения межузловой коммуникации и предоставления доступа к сертификату узла.

      Поскольку вы используете один и тот же файл 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.

  2. Если вы ввели пароль при создании сертификата узла, выполните следующие команды для сохранения пароля в хранилище ключей Elasticsearch:

    ./bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
    ./bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
  3. Выполните предыдущие шаги для каждого узла в вашем кластере.
  4. На каждом узле вашего кластера перезапустите 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API