Школа Информационной Безопасности в Твери от Сodeby

Мы открыли свою оффлайн школу Информационной Безопасности в Твери от Сodeby. Учим без шаблонов и занудства 🙂 Подробнее ...


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 предоставляет все необходимые инструменты для обновления вашей системы, а также позволяет легко обновлять версии..

Перевод: Анна Давыдова
Источник: cyberciti.biz

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



Похожие темы

Как установить Kali Linux на флешку и на внешний д... Преимущества установки Linux на флешку Преимуществ у установки Kali Linux на флешку много: возможность напрямую использовать всё железо компью...
Почему Kali Linux не видит беспроводное устройство... В виртуальной машине невозможно использовать встроенный Wi-Fi, можно использовать только USB Wi-Fi карты. Поэтому рекомендуется ознакомиться со стат...
Как просто получить данные из DataTable... Как получить данные из DataTable в c# В одной из предыдущих статей был показан пример работы с базой данных Mysql и c#. После этого многие стали обра...
c# Как удалить строку в базе данных Mysql?... Удаление строки (записи) в базе данных Mysql Из этой статьи Вы узнаете, как удалить строку или запись в базе данных Mysql с помощью языка c#. Надеюсь...
Как защитить SSH сервер от атаки методом перебора ... Одной из распространённых атак на службу SSH является атака методом перебора, когда удалённый атакующий бесконечно пытается залогиниться с различными ...