Естественно если вы прокидываете ваш кластер Elasticsearch
во вне, то нужно очень сильно подумать о том, как его обезопасить от взлома.
Кластер без лицензии
Рассмотрим базовые методы защиты кластера без лицензии Elasticsearch
.
Первым в голову приходит настроить на firewall
доступ только с доверенных адресов. Также сам Elasticsearch
рекомендует не прокидывать во не порт 9200.
Вторым методом конечно является прокидывание во вне не самого кластера Elasticsearch
, а прокси сервера перед ним (nginx
) и реализация аутентификации на этом прокси сервере.
Кластер с лицензией
Если вы обладаете золотой и платиновой лицензией вам доступны некоторые коммерческие функции безопасности. Включая ведение журнала аудита, фильтрацию IP
, интеграцию с LDAP
и Active Directory
и другие механизмы аутентификации. Лицензии Platinum
включают функции безопасности, такие как безопасность на уровне полей и документов, управление доступом на основе атрибутов, поддержка шифрования в состоянии покоя и режим соответствия Федеральному стандарту обработки информации (FIPS) 140-2
.
Включаем функцию безопасности
Хотя безопасность Elasticsearch
доступна, она не включена по умолчанию. Вам необходимо включить функцию безопасности на каждом узле в кластере с помощью файла elasticsearch.yml
.
С версии 7 вам нужно будет настроить безопасность транспортного уровня (TLS / SSL
) для обмена данными между узлами (в бесплатной версии тоже). В частности, это защищает информацию об имени пользователя и пароле от перехвата, что может привести к взлому кластера.
Если вы планируете запускать Elasticsearch
в среде Федерального стандарта обработки информации (FIPS) 140-2, вам необходимо установить для xpack.security.fips_mode
значение true
в файле elasticsearch.yml
.
После включения функции безопасности вам нужно будет перезапустить все узлы кластера и после этого выполнять команду, которая задаст пароли для всех встроенных пользователей Elasticsearch
.
bin/elasticsearch-setup-password interactive
Настраиваем TLS
- Для начала нужно сгенерировать сертификаты
bin/elasticsearch-certutil cert -out config/certificate.p12
- Копируем этот сертификат на все узлы кластера
- Включаем
TLS
взаимодействие на всех узлах кластераsudo vim elasticsearch.yml
xpack.security.transport.ssl.enabled: true xpack.security.transport.ssl.verification_mode: certificate xpack.security.transport.ssl.keystore.path: certificate.p12 xpack.security.transport.ssl.truststorepath: certificate.p12
- Перезапускаем все узлы кластера
Kibana
После включения xpack
анонимный доступ к кластеру Elasticsearch
заканчивается и соответственно если используется Kibana
, то нужно указать пользователя для авторизации.
Вариант 1
Прописывается пароль и логин в файле kibana.yml
. Из-за этого является не самым безопасным вариантом.
sudo vim kibana.yml
elasticsearch.username: kibana
elasticsearch.password: adsadsadsad
Вариант 2
Используем Kibana keystore
.
bin/kibana-keystore create
bin/kibana-keystore add elasticsearch.username= kibana
bin/kibana-keystore add elasticsearch.password= adsadsadsad
После этого перезапускаем Kibana
и можем авторизоваться под пользователем elastic
пароль которому задавался при выполнении команды bin/elasticsearch-setup-password interactive
Комментарии