Ситуация, с которой вы столкнулись, достаточно серьезна, и успешный взлом базы данных MongoDB указывает на наличие уязвимостей в вашей конфигурации или в самой системе.
Вот несколько шагов и возможных причин, которые могут объяснить, как произошел взлом:
1. **Идентификация уязвимостей**:
- Поскольку вы начали с базы данных без авторизации, злоумышленники могли получить доступ к ней просто через незащищенный порт. Даже после добавления авторизации, недостатки в конфигурации могли позволить им обойти ограничения.
2. **Ошибки в конфигурации**:
- Убедитесь, что вы правильно настроили аутентификацию. Проверьте, что методы аутентификации включены, и без них доступ к базе данных невозможно.
- Защититесь от доступа по IP-адресам. Используйте файлы конфигурации и настройки сети, чтобы ограничить доступ только с доверенных IP-адресов.
3. **Межконтейнерная коммуникация**:
- Если ваш сервер и база данных находятся в Docker-контейнерах и общаются через мост, убедитесь, что другие контейнеры не имеют несанкционированного доступа к вашей базе данных. Проверьте настройки сетевой безопасности Docker.
4. **Использование ulimit и прав доступа**:
- Применяйте ограничения на использование ресурсов и уровни доступа к контейнерам. Убедитесь, что пользователь, под которым работает MongoDB, не имеет доступа к системным ресурсам, которые могут использоваться для компрометации безопасности.
5. **Атаки через уязвимости приложения**:
- Злоумышленники могут использовать уязвимости вашего Node.js приложения для получения доступа к базе данных. Проверьте свое приложение на наличие уязвимостей, таких как SQL-инъекции, XSS и другие.
6. **Логи и мониторинг**:
- Проверьте лог-файлы MongoDB и сервера, чтобы выявить подозрительное поведение или атаки. Включите мониторинг для вашего приложения и базы данных, чтобы отслеживать несанкционированные действия.
7. **Уведомления и бэкапы**:
- Продолжайте делать регулярные бэкапы, но также настройте уведомления для проактивного обнаружения несанкционированных изменений в вашей базе данных.
8. **Обновление ПО**:
- Убедитесь, что используете последнюю версию MongoDB и Node.js, поскольку обновления часто включают важные исправления безопасности.
9. **Общение с хостингом**:
- Если ваша база данных хостится на облачном сервисе, возможно, стоит обратиться к провайдеру или использовать инструменты, предлагаемые провайдером для обеспечения безопасности (например, VPN, приватные сети).
Если проблема не решится, возможно, стоит обратиться за помощью к специалисту по информационной безопасности, который сможет провести аудит вашей системы и выявить уязвимости.