Спонсор публикаций BlackDiver

Обучение тестированию на проникновение  - Обучению тестированию на проникновение от BlackDiver. Базовый курс

MongoDB подвергается различным атакам. Это являются распространенным явлением. Я использую его для хранения данных на моем публичном облачном сервере под управлением Ubuntu Linux. Как защитить и обезопасить сервер MongoDB nosql на операционной системе Linux или Unix?

MongoDB — бесплатный сервер баз данных документов NoSQL с открытым исходным кодом. Он используется веб-приложением для хранения данных на общедоступном сервере. Защита MongoDB имеет решающее значение. Крекеры и хакеры получают доступ к небезопасному MongoDB для кражи данных и удаления данных из непроверенных или плохо настроенных баз данных. В этом руководстве вы узнаете, как защитить MongoDB или сервер, работающий с облачным сервером.

Конфигурации MongoDB

  1. Расположение файла по умолчанию /etc/mongodb.conf
  2. Порт по умолчанию TCP 27017
  3. MongoDB версия сервера: 3.4.1

Ограничение воздействия сети

Отредактируйте /etc/mongodb.conf или /usr/local/etc/mongodb.conf  файл, для этого введите:

Если ваше веб-приложение и MongoDB (mongod сервер) установлены на одной и той же машине, выставьте IP адрес MongoDB на 127.0.0.1. Это отрезает связь напрямую из интернета:

Тем не менее, возможно, что у вас есть два или более серверов вроде:

Как защитить MongoDB на Linux или Unix серверах

Рис.01: Пример современного веб-приложения и MonoDB, работающих внутри вашей VLAN.

Вам нужно привязать mongod к 192.168.1.7, чтобы к нему можно было получить доступ только через VLAN:

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

Изменяем порт по умолчанию

Вы также можете изменить порт по умолчанию, если захотите. В данном примере мы меняем его на 2727:

Сохраните изменения и выйдете их файла. Вам нужно перезапустить MongoDB, для этого введите:

Или если вы используете FreeBSD Unix:

Проверьте открытые порты с помощью команды netstat:

Примеры вывода данных:

Настройка контроля доступа

Вам необходимо добавить администратора пользователя в MongoDB без контроля доступа, а затем включить контроль доступа. По умолчанию любой может подключиться к MongoDB, и это не очень хорошая идея. Например:

Подключение mongo shell к экземпляру с любым типом аутентификации

Подключение mongo shell к экземпляру с любым типом аутентификации

Подключение к экземпляру DB

Создание пользователя-администратора

Внимание: Создайте пользователя с надежным паролем. Для демонстрационной цели я использую «mySuperSecretePasswordHere», но вы должны использовать сильный пароль.

Вам нужно использовать базу данных администратора. Введите следующую команду в > запрос для создания своего суперпользователя:

Далее создайте пользовательский vivek в admin базе данных с ролью userAdminAnyDatabase:

Примеры вывода данных:

Отключите mongo shell с помощью ввода следующей команды:

Перезапустите экземпляр MongoDB

Отредактируйте файл /etc/mongodb.conf or /usr/local/etc/mongodb.conf, для этого введите:

Включите безопасность:

Сохраните изменения и закройте файл. Перезапустите экземпляр MongoDB:

Или же если вы используете FreeBSD Unix:

Чтобы выполнить аутентификацию во время соединения с помощью пользовательского vivek и пароля для базы данных администратора:



Добавьте дополнительного пользователя в DB. Для начала создайте новую базу данных под названием «nixcraft»:

Создайте пользователя с именем ‘nixdbuser’ и паролем ‘myKoolPassowrd’ для nixcraft db:

Примеры вывода данных:

Теперь вы можете подключиться к nixcraft db следующим образом:

Это гарантирует, что только уполномоченный администратор с именем «vivek» может выполнять команды, или nixdbuser может выполнять операцию чтения / записи на nixcraft db. Вы можете проверить это следующим образом, вставив записи:

Примеры вывода данных:

Включает контроль доступа и обеспечивает аутентификацию

Рис.02: Включает контроль доступа и обеспечивает аутентификацию

Используйте брандмауэр

Используйте брандмауэры, чтобы ограничить доступ других объектов к вашему серверу mongodb. В этом примере разрешите вашим серверам приложений доступ к базе данных с помощью ufw на Ubuntu или Debian Linux

Разрешите SSL

Используйте SSL между вашим клиентом MongoDB и сервером при подключении к вашему серверу Mongodb через Интернет. В противном случае ваша сессия может подвергнуться атаке «человек в середине». Моя настройка такова:

Введите следующую команду – сертификат сервера

Пример вывода данных:

MongoDB SSL сертификат настройки сервера

Рис.03: MongoDB SSL сертификат настройки сервера

Создайте .pem  файл с ключом и сертификатом:

Введите следующую команду – сертификат клиента

Пример вывода данных:

MongoDB SSL устанавливает сертификат клиента

Рис.04: MongoDB SSL устанавливает сертификат клиента

Создайте клиентский файл .pem с ключом и сертификатом:

Настройте mongod и mongos для TLS/SSL сервера

Отредактируйте файл /etc/mongodb.conf or /usr/local/etc/mongodb.conf, для этого введите:

Обновите config файл следующим образом:

Сохраните и закройте файл.Перезапустите экземпляр MongoDB :

Или, если вы используете FreeBSD Unix:

Конфигурация TLS / SSL для MongoDB клиентов

Синтаксис интерфейса mongo shell следующий:

Примеры вывода данных:

Соединение с клиентом MongoDB SSL с использованием SSL-сертификата

Рис.05: Соединение с клиентом MongoDB SSL с использованием SSL-сертификата

Ниже приведен клиент Python для подсоединения к разрешенному SSL MongoDB:

Или

Установите патч и запустите обновленную версию вашей операционной системы и MongoDB

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

<< Контент скрыт от гостей. Зарегистрируйтесь, чтобы снять ограничение ! >>

Это интересно:


Внимание конкурс! на форуме codeby

Наш конкурс  - это возможность получить денежные призы, премиум доступ на форуме и скидку в нашем маркетплейсе

Похожие темы

Как настроить fail2ban для защиты сервера Apache H... Сервер Apache HTTP в производственной среде может оказаться под различного рода атаками. Атакующие могут пытаться получить несанкционированный доступ ...
Защита с помощью пароля в Linux: файл /etc/shadow... Защита с помощью пароля на Linux Использование файла /etc/shadow Пароль в Linux системах, используемый для учётных записей, обычно доступен ...
Установка справочно-правовой системы КонсультантПл... Данная статья устарела, рекомендуется к прочтению новая статья "Установка КонсультантПлюс на Linux: оболочка и подробная инструкция". ...
c# Как изменить данные в базе данных MySQL?... Изменение данных в базе данных MySQL В этой статье мы рассмотрим на нескольких простых примерах, как изменить данные в базе данных MySQL с помощью яз...
Двойная загрузка Kali на компьютерах Mac... Установочные требования для Kali Linux Начиная с выпуска Kali Linux 1.0.8, Kali Linux поддерживает EFI прямо из коробки. Это положительно сказалось н...