Естественно если вы прокидываете ваш кластер 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.ymlxpack.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


Комментарии