Открытый порт MongoDB: почему базу сливают за 5 минут
Стандартный сетевой порт СУБД MongoDB — 27017. По умолчанию в старых версиях авторизация могла быть отключена.
Если порт открыт во внешний интернет, автоматические скрипты вымогателей подключаются к СУБД, удаляют базы и оставляют требование выкупа в биткоинах.
Степень критичности и чем опасна уязвимость
Мгновенная потеря всех данных проекта и компрометация конфиденциальной информации клиентов.
Как наш сканер находит эту уязвимость
Сканер пассивно проверяет доступность стандартного порта 27017 из публичной сети.
Проверка защищенности хранилищ данных производится тестированием открытости стандартных портов и HTTP-шлюзов с проверкой флагов авторизации. Сканер не выполняет SQL-запросов и команд выборки, ограничиваясь диагностикой сетевого рукопожатия и заголовков ответа сервиса.
Как устранить уязвимость (Пошаговое руководство)
Для ликвидации риска выполните следующие действия в конфигурации вашего сервера или приложения:
# В файле /etc/mongod.conf привяжите сервис к локальному адресу:
net:
bindIp: 127.0.0.1
port: 27017
security:
authorization: enabled
- Привяжите MongoDB строго к 127.0.0.1.
- Включите обязательную авторизацию (security.authorization: enabled).
- Закройте порт 27017 файрволом UFW.
Анатомия атаки и реальные последствия для проекта
Публично доступный порт 27017 MongoDB без аутентификации сканируется ботами-вымогателями. Бот подключается, копирует базу данных, удаляет оригинал и оставляет коллекцию WARNING с требованием выкупа в Bitcoin.
Влияние на соответствие стандартам: Нарушение требований защиты баз данных PCI-DSS v4.0 Req 3, требований GDPR к защите персональных идентификаторов и стандарта ISO/IEC 27001 (A.8.24).
Матрица эшелонированной защиты (Defense-in-Depth)
| Уровень защиты | Техническое действие | Инструмент / Механизм |
|---|---|---|
| Сетевой экран (UFW / Security Group) | Блокировка порта 27017 на внешнем интерфейсе сервера (ufw deny 27017/tcp) | Linux UFW / iptables |
| Конфигурация mongod.conf | Привязка net.bindIp строго к 127.0.0.1 и включение security.authorization: enabled | MongoDB Config Daemon |
| Мониторинг периметра | Регулярная проверка сетевых сокетов на наличие слушающих внешних портов СУБД | Site Check Port Scanner |
Верификация устранения: команды для быстрой проверки
После внесения изменений в настройки сервера или исходный код приложения проверьте отсутствие уязвимости с помощью терминальных утилит:
nc -zv ваш-домен.com 27017 2>&1 | grep "open"
# Порт должен быть закрыт (фильтроваться файрволом)
Рекомендации DevSecOps для безопасного развертывания
В файле /etc/mongod.conf установите net.bindIp: 127.0.0.1 и включите security.authorization: enabled. Заблокируйте порт 27017 в UFW / iptables.
- ✓ Закрыть порты 5432, 6379, 27017, 9200 на внешнем сетевом интерфейсе сервера
- ✓ Включить криптографическую аутентификацию со сложными сгенерированными паролями
- ✓ Настроить создание резервных копий с шифрованием и изоляцией в холодном хранилище
- ✓ Проверить права доступа публичных бакетов и включить блокировку Public Access
Часто задаваемые вопросы по устранению
Открытые во внешнюю сеть СУБД (PostgreSQL, Redis, MongoDB, Elasticsearch) или публичные бакеты S3 служат первоочередной мишенью программ-вымогателей (Ransomware). Обязательна сетевая изоляция через файрвол (UFW/iptables), включение криптографической аутентификации SCRAM/TLS и применение принципа минимальных привилегий доступа.
Для предотвращения вектора «Открытый порт MongoDB: почему базу сливают за 5 минут» зафиксируйте проверочные правила в CI/CD пайплайне и настройте непрерывный мониторинг внешнего периметра через Site Check.