MongoDB - основы безопасности

Проблема в базе данных или в вас?

Хотя MongoDB 2.6.0 и выше могут быть доступны только через локальные соединения, предыдущие версии не поставлялись с функциями аутентификации по умолчанию. Следовательно, они будут принимать запросы от удаленных подключений, если пользователь не выделил время для установки ограничений.

Мы все еще наблюдаем проникновения в базы данных MongoDB, о чем свидетельствует выявление 445 миллионов записей в одном инциденте 2018 года. Хакеры ищут незащищенные базы данных с помощью поисковой системы, такой как ZoomEye. Простой запрос может привести к тысячам возможных жертв в считанные минуты.

Обнаружив свои цели, хакеры просто копируют весь набор данных на внешний сервер и удаляют его из целевой базы данных. Затем пользователь получает сообщение, в котором ему предлагается отправить определенное количество биткойнов на адрес, чтобы освободить свою базу данных.

Многие предположили, что конфигурация и параметры безопасности MongoDB являются причиной его уязвимостей. Но главная причина успеха таких хаков заключается в том, что большинство организаций привыкли использовать настройки базы данных по умолчанию, а не настраивать свои установки лично.

Другими словами, всего этого можно было бы избежать, если бы организации просто добавили несколько строк кода в свои файлы конфигурации базы данных. Очевидно, что пользователи чаще всего виноваты сами. Несмотря на то, что MongoDB решил эту проблему, создав более строгие настройки по умолчанию, вы можете предпринять шаги, чтобы никогда не проснуться от печальной новости о вашей базе данных MongoDB.

Создание надежной политики безопасности MongoDB

К настоящему времени вы, вероятно, уже достаточно обеспокоены. Когда дело доходит до безопасности, беспокойство – это хорошо! Вот пошаговое руководство по выживанию, которое вы можете использовать, чтобы снизить уязвимость до следующей катастрофы с вашей базой данных.

Аутентификация

Аутентификация – это процесс проверки личности клиента, который пытается соединиться с базой данных. MongoDB предлагает различные методы для проверки личности клиента. Меры по умолчанию на основе вызовов включают в себя:

  • SCRAM-SHA-1: Salted Challenge Authentication Mechanism использует простые текстовые имена пользователей и пароли, передаваемые по каналу, защищенному протоколом защиты транспортного уровня (TLS);
  • MongoDB-CR: Как и SCRAM, MongoDB-CR проверяет имя пользователя и пароль по базе данных аутентификации. MongoDB-CR был удален из версии 3.0, и сегодня его используют только старые версии.

Любой метод отправляет пароли в зашифрованном виде, и для каждого нового сеанса генерируется различный хеш, поэтому никто не может их прослушать.

MongoDB также может использовать внешние протоколы аутентификации:

  • LDAP – облегченный протокол доступа к каталогам позволяет пользователям входить в систему, используя свои централизованные пароли. LDAP предназначен для того, чтобы помочь любому пользователю находить и получать доступ к информации, которая ему нужна, как в публичной, так и в частной сети;
  • Kerberos – это протокол аутентификации по секретному ключу для взаимодействия сервер-клиент. Используя Kerberos, пользователи могут войти в систему только один раз, используя билет доступа.

Рекомендации по аутентификации MongoDB

Перво-наперво: всегда включайте аутентификацию в производственной установке. Начиная с версии 3.5, эта функция включена по умолчанию.

  • Включите контроль доступа и используйте один из механизмов аутентификации MongoDB, упомянутых выше. Если ваше развертывание кластеризовано, каждый экземпляр должен быть индивидуально настроен;
  • Всегда начинайте с создания пользователя-администратора. Затем добавьте дополнительных пользователей по мере необходимости;
  • Шифруйте все коммуникации между экземплярами mongod и mongos, а также внутренние и внешние коммуникации с использованием TLS/SSL;
  • Шифруйте данные на каждом хосте MongoDB. Для это можно применять файловую систему, устройство или физическое шифрование;
  • Запускайте MongoDB только в доверенной сети. Не допускайте маршрутизации вашей базы данных в общедоступный интернет, даже если она находится в доверенной сети, и не позволяйте ей работать на большем количестве интерфейсов, чем нужно. Это предотвращает возможность для хакера переместить ваши данные с сервера в другое удаленное местоположение (программные маршрутизаторы и таблицы статической маршрутизации все еще могут быть изменены хакерами);
  • Привыкайте отслеживать изменения как в базе данных, так и в самих данных. Если вы являетесь владельцем MongoDB Enterprise, то используйте его средства аудита для анализа.

Авторизация/безопасность на основе ролей

Управление доступом на основе ролей (RBAC) – одна из лучших функций MongoDB. Хотя вы можете найти четко определенные роли в MongoDB, которые могут охватывать большинство пользователей, вы можете создать свои собственные пользовательские роли.

Роль, по сути, определяет, какие разрешения есть у пользователя и к чему он может получить доступ. Когда пользователь определен ролью, он не может получить доступ к системе за ее пределами.

Вы можете включить авторизацию с помощью параметра --auth или security-authorization. --auth позволяет авторизации контролировать доступ пользователя к базе данных и ее ресурсам. Эта функция также обеспечивает проверку подлинности после ее включения – она требует, чтобы все клиенты проверяли свои идентификационные данные, прежде чем им будет предоставлен доступ.

Шифрование TLS/SSL

MongoDB предлагает сетевое шифрование и может проходить через шифрование диска, чтобы помочь вам защитить вашу базу данных и связь. TLS и SSL являются стандартными технологиями, которые используются для шифрования сетевого трафика.

Начиная с MongoDB 2.6, SSL и TLS поддерживаются сертификатами x.509, и клиенты могут использовать последние для аутентификации своих идентификационных данных, а не имена пользователя и пароли. MongoDB требует не менее 128-битной длины ключа для всех соединений при использовании TLS/SSL.

Хотя MongoDB может использовать любой действительный сертификат, лучше не использовать самозаверяющие сертификаты, поскольку не будет проверяться подлинность сервера, даже если канал связи останется зашифрованным. В таких случаях базы данных могут стать уязвимыми для атак «человек посередине».

Как настроить mongod и mongos для TLS/SSL

Чтобы эксплуатировать TLS/SSL в любой базе MongoDB, включите следующие параметры времени выполнения с mongod и mongos:

  • Для net.ssl.mode установлено значение requireSSL. Этот параметр ограничивает использование каждым сервером только зашифрованных соединений TLS/SSL. Вы также можете указать либо значение allowSSL, либо SSL, чтобы настроить использование смешанных режимов TLS/SSL для порта;
  • PEMKeyfile с файлом .pem, который содержит сертификат и ключ TLS / SSL.

Укрепление вашей базы данных MongoDB

Несмотря на то, что эти шаги помогут вашей базе данных пережить злонамеренную онлайн-активность, дополнительный уровень усиливает вашу защиту еще больше. "Усиление" по существу относится к послойному методу добавления защиты, когда каждой части базы данных присваиваются свои собственные меры безопасности.

Базы данных MongoDB имеют свои собственные функции защиты.

Усиление конфигурации с привязкой IP

Начиная с версии 3.6, MongoDB по умолчанию привязывается к localhost, а для версий 2.6 - 3.4, только двоичные файлы из официальных пакетов RPM и DEB MongoDB будут привязываться к localhost по умолчанию.

Защита сети с помощью брандмауэров и VPN:

  1. Брандмауэры: они могут помочь вам лучше контролировать сетевые коммуникации. Брандмауэры ограничивают входящий трафик, особенно из ненадежных источников. Поскольку вымогатели и другие виды атак нацелены на определенные порты, хорошо настроенные межсетевые экраны являются идеальной защитой.
  2. Виртуальные частные сети (VPN): VPN идеально подходят для соединения двух конечных точек по менее защищенной сети связи. В зависимости от функций и того, как они настроены, виртуальные частные сети допускают проверку сертификатов и протоколы шифрования. Поскольку виртуальные частные сети предоставляют безопасный туннель между клиентом и сервером, их также можно использовать вместе с автоматически генерируемыми сертификатами, не беспокоясь атак «людей посередине».
Наверх
Меню