Рубрики
Uncategorized

Обеспечение ваших экземпляров Elasticsearch

Эта статья была впервые опубликована в моем блоге, обеспечивающих ваши экземпляры Elasticsearch и Keepi … Теги с DevOps, Docker, Infosec, Elasticsearch.

Эта статья была впервые опубликована в мой блог

Обеспечение ваших экземпляров Elasticsearch и сохранение всех веселых

Часто мы выбираем удобство за безопасность. Многие современные инструменты, такие как MongoDB и Elasticsearch, выращивали популярность, отчасти из-за их простого в настроек и танкера — с природой. Просто выключите экземпляр, укажите браузер правым URL, и вы готовы начать отправку запросов.

К сожалению, одна вещь приходит для другой, а как Мы недавно видели Elasticsearch осталось на открытом воздухе может быть уязвимой целью, такой же, как Монгодб был в его расцвете. В свете Недавние атаки На многих открытых эластиковых исследованиях по всему миру я решил поделиться быстрым наконечником о том, как установить удаленные экземпляры ES, и сохраняйте их безопасными, не укомплектованными на его простой в игру — с природой.

Часть первая: ограничение доступа к вашему eLasticsearch

Давайте начнем. Самый простой способ настроить экземпляр Elasticsearch — Сверяние контейнера Выкл. Изображение докера по умолчанию:

docker pull docker.elastic.co/elasticsearch/elasticsearch:

docker run -p 9200:9200 -e "http.host=0.0.0.0" -e "transport.host=127.0.0.1" elasticsearch:

Запуск вышеуказанной линии создаст сопоставление порции от 9200 в контейнере, в порт 9200 на хост-машина. Одной из проблем здесь, это то, что делая это, это также обнажает его внешнему миру. Этого можно легко увидеть, работая iptables против вашего хозяина:

iptables -t nat -L -n

# Outputs
...
target     prot opt source               destination 
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:9200 to:XXX.XXX.XXX.XXX:9200
...

Действительно, Докер требует тяжелых снятий на настройку вашего iptables Брандмауэр, но часто это может привести к конфигурации, которая слишком допустима. Вместо этого следует сделать, предоставляет определенный IP к конфигурации отображения порта. К счастью, Docker поддерживает это, поэтому все, что нам нужно сделать, это изменить вышеуказанную команду, используя IP: Host_Port: Container_Port сопоставление:

docker run -p 127.0.0.1:9200:9200 -e "http.host=0.0.0.0" -e "transport.host=127.0.0.1" elasticsearch:

Идеально! Положить 127.0.0.1 гарантирует, что контейнер будет доступен внутри хозяина, но не доступен снаружи. Быстрое доказательство этого снова смотрит на iptables:

target     prot opt source               destination 
DNAT       tcp  --  0.0.0.0/0            127.0.0.1            tcp dpt:9200 to:XX.XXX.XXX.XXX:9200

Если вы укажите свой браузер в порт 9200, вы не сможете ничего увидеть, но выполнение `Curl 127.0.0.1:9200 изнутри хост-аппарат должен работать.

Часть вторая: Доступ к вашему экземпляру Elasticsearch по безопасному способу

То, что мы все было хорошо, но как сейчас доступа к нашему экземпляру Elasticsearch Now, не теряя гибкость быстрого тестирования материалов на ES? Легко, используя * швейцарский нож Swiss Nix — SSH Отказ SSH — это инструмент, который большинство программистов используют ежедневно, но меньше из них знают, что SSH позволяет для переадресации локальных и удаленных портов. Что это значит, что SSH может создать зашифрованный туннель между вашим компьютером и вашим сервером, так что вы сможете удаленно обращаться к службам, как если бы они работали на Loclahost (локальная пересылка). Существует также удаленная экспедиция, которая в качестве альтернативы позволяет вам надежно получить доступ к локально запущенным сервисам с вашего удаленного сервера.

Хотя мы собираемся использовать локальный переадресацию портов в нашем случае, оба аналогичны друг другу:

ssh -l/-r : : <имя пользователя> @ deward_ip>

В нашем конкретном случае это выглядит так:

SSH -L 9200: 127.0.0.1: 9200 user@xx.xxx.xxx.xxx

Это в основном говорит: карта моего местного порта 9200 к звонку 127.0.0.1:9200 на Xx.xxx.xxx.xxx сервер. Когда вы укажите браузер на http://localhost: 9200 Теперь вы должны увидеть знакомый вывод ElaSticsearch, хотя, как и прежде Xx.xxx.xxx.xxx:9200 ничего не возвращается. Вы можете позволить вышеуказанной команде запустить в фоновом режиме и работать как демон.

Заключение

Эти два шага — это все, что вам нужно, чтобы продолжать наслаждаться свободой игры с помощью Elasticsearch или MongoDB, но делать это полностью безопасно. Этот рецепт может быть применен только к любому обслуживанию. И вам действительно не нужно докер. Тот факт, что я упомянул об этом частично, это потому, что это облегчает настройку, а также спасает вас от того, чтобы потираться с iptables. сами.

ЗАМЕТКА: Пожалуйста, имейте в виду, что во время работы в туннеле SSH просто идеально подходит для целей тестирования и развития, это не может быть оптимальным решением для производства. Причиной этого является задержка, вызванная EN/расшифровкой данных и перетаситься через туннель. Это может стать узким местом со многими входящими запросами, работающими параллельно. Я еще представляющу эту настройку и поделитесь моими наблюдениями в дальнейшем посте. Я также буду поделиться еще более идеями о том, как надежно получить доступ к экземпляру Elasticsearch, но и продуктивным образом.

Оригинал: «https://dev.to/preslavrachev/securing-your-elasticsearch-instances»