Открытый кластер Elasticsearch: утечка журналов и индексов на порту 9200
Elasticsearch (порт 9200) используется для полнотекстового поиска и агрегации логов безопасности (ELK стек).
Открытый порт 9200 позволяет любому запросу к /_cat/indices выкачать все журналы активности и персональные данные пользователей.
Степень критичности и чем опасна уязвимость
Регулярный источник масштабных утечек баз данных в интернете.
Как наш сканер находит эту уязвимость
Site Check проверяет доступность эндпоинта /_cat/indices на стандартном порту 9200.
Проверка защищенности хранилищ данных производится тестированием открытости стандартных портов и HTTP-шлюзов с проверкой флагов авторизации. Сканер не выполняет SQL-запросов и команд выборки, ограничиваясь диагностикой сетевого рукопожатия и заголовков ответа сервиса.
Как устранить уязвимость (Пошаговое руководство)
Для ликвидации риска выполните следующие действия в конфигурации вашего сервера или приложения:
# В elasticsearch.yml:
network.host: 127.0.0.1
xpack.security.enabled: true
- Привяжите network.host к 127.0.0.1.
- Включите X-Pack Security и установите пароли для системных пользователей.
Анатомия атаки и реальные последствия для проекта
Порты 9200/9300 Elasticsearch отдают все проиндексированные документы по простому REST-запросу. Сканеры автоматически находят незащищенные кластеры и выкачивают миллионы персональных записей и логов.
Влияние на соответствие стандартам: Грубейшее нарушение требований безопасности персональных данных по 152-ФЗ (уровень защищенности УЗ-1), регламента GDPR (ст. 32 о шифровании и контроле доступа) и стандарта безопасности платёжных систем PCI-DSS v4.0 (Req 8).
Матрица эшелонированной защиты (Defense-in-Depth)
| Уровень защиты | Техническое действие | Инструмент / Механизм |
|---|---|---|
| Конфигурация elasticsearch.yml | Включение директивы xpack.security.enabled: true и привязка к приватному интерфейсу | Elasticsearch Native Security |
| Сетевой экран (Firewall) | Блокировка внешнего трафика на порты 9200 и 9300 через UFW или Security Group | Linux iptables / UFW |
| Авторизация и ролевая модель (RBAC) | Настройка паролей для системных пользователей elastic и генерация API-ключей | elasticsearch-setup-passwords |
Верификация устранения: команды для быстрой проверки
После внесения изменений в настройки сервера или исходный код приложения проверьте отсутствие уязвимости с помощью терминальных утилит:
curl -s http://ваш-домен.com:9200/_cat/indices
# Не должно отвечать без аутентификации
Рекомендации DevSecOps для безопасного развертывания
В elasticsearch.yml включите xpack.security.enabled: true и привяжите network.host: 127.0.0.1. Закройте порт 9200 файрволом.
- ✓ Закрыть порты 5432, 6379, 27017, 9200 на внешнем сетевом интерфейсе сервера
- ✓ Включить криптографическую аутентификацию со сложными сгенерированными паролями
- ✓ Настроить создание резервных копий с шифрованием и изоляцией в холодном хранилище
- ✓ Проверить права доступа публичных бакетов и включить блокировку Public Access
Часто задаваемые вопросы по устранению
Открытые во внешнюю сеть СУБД (PostgreSQL, Redis, MongoDB, Elasticsearch) или публичные бакеты S3 служат первоочередной мишенью программ-вымогателей (Ransomware). Обязательна сетевая изоляция через файрвол (UFW/iptables), включение криптографической аутентификации SCRAM/TLS и применение принципа минимальных привилегий доступа.
Для предотвращения вектора «Открытый кластер Elasticsearch: утечка журналов и индексов на порту 9200» зафиксируйте проверочные правила в CI/CD пайплайне и настройте непрерывный мониторинг внешнего периметра через Site Check.