Вернуть старое меню
Бесплатно, 24/7 8 (800) 775-97-42
Country flag RU
Country flag EN
Country flag DE
₽ RUB
$ USD
€ EUR
Выбрать VPS
Маркетплейс
О нас
Сообщество
Поддержка
Баланс:
Бонусы:
Войти
Выйти
Зарегистрироваться
ГОТОВЫЕ ТАРИФЫ
Ref icon
VPS Старт От 139 рублей/мес
Ref icon
VPS Мощные Мощные серверы по выгодной цене
Ref icon
VPS Windows Удобные конфигурации для работы с ОС Windows
Ref icon
VPS Быстрые NVMe Максимальная скорость с промышленными NVMe дисками
Ref icon
VPS Plesk Настройте сервер под себя в несколько кликов
Ref icon
VPS с 1C для бухгалтеров Оптимизированные под 1C серверы
Ref icon
VPS для трейдинга Установите торговые терминалы за 1 клик
Ref icon
VPS для геймеров Мощное железо для мощных рейдов
Ref icon
VPS для бизнеса Настроить любой параметр сервера
Ref icon
Посмотреть все тарифы
Card icon Своя конфигурация
Удобный конфигуратор позволит вам настроить любой параметр сервера, а мы предложим за него лучшую цену.
Собрать
Card icon Бесплатный тест на 3 дня
Только для новых пользователей. Возьмите на тест любой сервер до 3000 рублей, проверьте приложения и программы, установив их на VPS.
Попробовать
АККАУНТ Мои серверы Домены Заказать Настройки Партнеру
КЛИЕНТАМ
О компании Входим в топ-15 IAAS в России
Дата-центры 17 ЦОД уровня Tier III в 7 странах
Аттестация по ФСТЭК Поможем с гос. лицензированием
Бонусная программа Накопительная система лояльности
Card icon Пинг до дата-центров
Измерьте ping от вас до всех наших дата-центров. Мы подберем тот, который подходит для вас идеально.
Измерить
Card icon Бесплатный тест на 3 дня
Только для новых пользователей. Возьмите на тест любой сервер до 3000 рублей, проверьте приложения и программы, установив их на VPS.
Попробовать
АККАУНТ Мои серверы Домены Заказать Настройки Партнеру
КЛИЕНТАМ
Справочник Пошаговые инструкции, как настроить VPS
FAQ Частые вопросы о настройке VPS и сервисе
Новости и события Новости сервиса, информация о событиях и спецпроектах компании
Card icon Соцсети
Наш блог на Хабре, выступления, новости компании.
Присоединиться
Card icon Бесплатный тест на 3 дня
Только для новых пользователей. Возьмите на тест любой сервер до 3000 рублей, проверьте приложения и программы, установив их на VPS.
Попробовать
АККАУНТ Мои серверы Домены Заказать Настройки Партнеру
Бесплатно, 24/7 8 (800) 775-97-42
Mobile menu button
Выбрать VPS
Mobile card icon
Своя конфигурация Удобный конфигуратор позволит вам настроить любой параметр сервера, а мы предложим за него лучшую цену.
Собрать
Ref icon
VPS Старт От 139 рублей/мес
Ref icon
VPS Мощные Мощные серверы по выгодной цене
Ref icon
VPS Windows Удобные конфигурации для работы с ОС Windows
Ref icon
VPS Быстрые NVMe Максимальная скорость с промышленными NVMe дисками
Ref icon
VPS Plesk Настройте сервер под себя в несколько кликов
Ref icon
VPS с 1C для бухгалтеров Оптимизированные под 1C серверы
Ref icon
VPS для трейдинга Установите торговые терминалы за 1 клик
Ref icon
VPS для геймеров Мощное железо для мощных рейдов
Ref icon
VPS для бизнеса Настроить любой параметр сервера
Ref icon
Посмотреть все тарифы
Ref icon
Бесплатный тест на 3 дня
Маркетплейс
О нас
Mobile card icon
Пинг до дата-центров Измерьте ping от вас до всех наших дата-центров. Мы подберем тот, который подходит для вас идеально.
Измерить
О компании Входим в топ-15 IAAS в России
Дата-центры 17 ЦОД уровня Tier III в 7 странах
Аттестация по ФСТЭК Накопительная система лояльности
Бонусная программа Накопительная система лояльности
Сообщество
Mobile card icon
Соцсети Наш блог на Хабре, выступления, новости компании.
Присоединиться
Справочник Пошаговые инструкции, как настроить VPS
FAQ Частые вопросы о настройке VPS и сервисе
Новости и события Новости сервиса, информация о событиях и спецпроектах компании
Поддержка
Country flag RU
Country flag EN
Country flag DE
₽ RUB
$ USD
€ EUR
Войти
Зарегистрироваться
Личный кабинет
Мои серверы
Домены
Баланс: Бонусы:
Заказать
Настройки
Партнеру
Выйти
Мои серверы
Домены
Заказать
Настройки
Партнеру
  • ВЫБРАТЬ VPS
  • ДАТА-ЦЕНТРЫ
  • СПРАВОЧНИК
  • ПОДДЕРЖКА
  • ВОЙТИ
RuVDS/Справочник/Настройка VPS Сервера/Настройка безопасности MongoDB в Ubuntu 20.04

Настройка безопасности MongoDB в Ubuntu 20.04

3387 просмотров 8 2021-05-26 2021-05-29

MongoDB – документо-ориентированная база данных с открытым исходным кодом, которая классифицируется как база NoSQL. В её основе лежит не традиционная реляционная таблицеобразная структура базы данных. Вместо этого, MongoDB использует JSON-подобные документы с динамическими схемами. В MongoDB аутентификация пользователей не включена изначально. Подразумевается, что любая учётная запись, которая имеет доступ к серверу, может добавить или удалить данные без каких-либо ограничений. Преследуя своей целью защитить эту уязвимость, в данном руководстве мы посмотрим, как производится настройка безопасности MongoDB в Ubuntu 20.04. В частности, мы создадим административную учётную запись, после чего включим пользовательскую аутентификацию. Также, мы увидим, что только наша административная учётная запись имеет доступ к нашей базе данных.

Подключение к оболочке MongoDB

Для настройки будем использовать сервер, работающий под управлением Ubuntu 20.04. На сервере должен быть настроен брандмауэр при помощи UFW. Подключаться к серверу необходимо будет пользователем, имеющим привилегии sudo. Также, на сервере должен быть установлен пакет MongoDB версии 4.4.

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

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

Чтобы добавить административного пользователя, необходимо подключиться к оболочке Mongo. Так как пользовательская аутентификация отключена, вы можете сделать это используя команду mongo без каких-либо параметров:

$ mongo

Из-за того, что аутентификация всё ещё отключена, вывод выполнения команды будет содержать сообщения с предупреждением о том, что в Mongo не запущена система контроля доступа к базе данных, и доступ к чтению и записи данных и настроек базы не ограничен:

Подключение к оболочке MongoDB - настройка безопасности MongoDB в Ubuntu 20.04

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

Чтобы увидеть это, в оболочке Mongo запустите следующую команду:

$ show dbs

Эта команда возвращает список всех баз данных Mongo на сервере:

Список баз данных MongoDB - настройка безопасности MongoDB в Ubuntu 20.04

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

Добавление административного пользователя

Теперь, когда мы подключились к оболочке Mongo, давайте добавим в систему административного пользователя, в качестве первого шага на пути закрытия данной уязвимости. Для этого необходимо будет подключиться к базе данных admin. В этой базе хранится информация об учётных записях Mongo, а именно, имена пользователей, их пароли и роли в системе:

> use admin
Подключение к базе данных admin

Установленный MongoDB содержит методы оболочки, основанные на JavaScript. Их вы можете использовать для управления базами данных. Один из них, метод db.createUser(), предназначен для создания новых пользователей в базе данных, в которой этот метод запущен.

Чтобы запустить метод, наберите в оболочке Mongo:

> db.createUser(

Этот метод требует указания имени учётной записи, её пароля, а также, полномочий, которые вы хотите для неё определить. Как мы уже упоминали ранее, Mongo хранит свои данные в виде JSON-документов. По сути, при создании нового пользователя, вы создаёте документ, где соответствующие пользовательские данные хранятся в виде отдельных полей.

Как и в JSON-объектах, в Mongo содержимое документов оформляется фигурными скобками. Поэтому, чтобы начать добавление учётной записи, откройте фигурную скобку:

... {

Заметка: Mongo не будет считать метод завершённым, пока вы не закроете парные скобки. Поэтому, пока вы не наберёте завершающую метод скобку ), оболочка в качестве приглашения будет использовать символы ..., а по окончании набора снова сменит приглашение на >.

Далее, наберите поле user: с указанием имени учётной записи, которое вы решили использовать в качестве имени административного пользователя. В нашем примере мы будем использовать имя YourMongoAdmin:

... user: "YourMongoAdmin",

Теперь наберите поле pwd с использованием метода passwordPrompt() в качестве значения. Метод passwordPrompt() обеспечит вас возможностью ввода пароля для создаваемого пользователя по окончании набора метода db.createUser(). Использование метода passwordPrompt() – более безопасно, чем ввод пароля в открытом виде, как вы делали это, вводя имя пользователя.

Заметка: Метод passwordPrompt() совместим с версиями MongoDB, начиная с версии 4.2. Поэтому, если вы используете более старую версию, вам придётся набирать пароль в открытом виде, аналогично тому, как вы набирали имя создаваемого пользователя:

... pwd: "p@$$word",

Убедитесь, что ввод поля завершается запятой:

... pwd: passwordPrompt(),

Далее, необходимо ввести роль, которую вы хотите назначить создаваемому пользователю. Так как вы создаёте административную учётную запись, вам нужно назначить ей роль userAdminAnyDatabase в базе данных admin. Это позволит административному пользователю создавать и редактировать пользователей и их полномочия.

Дополнительно, в нашем примере, мы назначим создаваемому административному пользователю роль readWriteAnyDatabase. Это предоставит вашему администратору возможность просматривать и редактировать данные в любых базах данных кластера. Исключения составят базы данных config и local, которые в основном предназначены для внутреннего использования:

... roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]

Далее, необходимо закрыть фигурную скобку, чтобы обозначить конец документа:

... }

И теперь, закройте простую скобку, что будет означать окончание метода db.createUser():

... )

Весь метод db.createUser() в нашем примере будет выглядеть следующим образом:

> db.createUser(
... {
... user: "YourMongoAdmin",
... pwd: passwordPrompt(),
... roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
... }
... )

Теперь, нажмите Enter. Если синтаксис набранных строк корректен, метод запустится на исполнение и предложит вам ввести пароль для создаваемой учётной записи:

Ввод пароля

Введите придуманный вами пароль и нажмите Enter. Вывод об успешном добавлении пользователя должен выглядеть примерно так:

Добавление пользователя

Теперь можно выйти оболочки Mongo, для чего наберите команду exit.

Отключение от оболочки MongoDB

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

Включение аутентификации

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

Откройте для редактирования конфигурационный файл mongod.conf, например, при помощи текстового редактора nano:

$ cd /etc
$ sudo nano mongod.conf

В этом файле найдите строку #security и раскомментируйте её (удалите в начале строки символ #).

Следующей строкой добавьте текст:

authorization: enabled

Причём, необходимо убедиться, что в строке security нет никаких пробелов в её начале. Строка же authorization: enabled, напротив, имеет два пробела отступа в начале строки. Отредактированный текст должен выглядеть следующим образом:

Конфигурационный файл MongoDB

После завершения редактирования сохраните изменения и закройте файл, для чего нажмите Ctrl X, затем Y и Enter.

Далее, необходимо перезапустить демон MongoDB для того, чтобы применились внесённые в конфигурацию изменения:

$ sudo systemctl restart mongod

Теперь запустите просмотр статуса службы:

$ sudo systemctl status mongod

Если перезапуск демона прошёл успешно, в выводе команды вы увидите, что служба mongod активна и находится в запущенном состоянии:

Статус демона MongoDB - настройка безопасности MongoDB в Ubuntu 20.04

Теперь мы можем проверить, работает ли добавленный параметр аутентификации должным образом.

Проверка параметров аутентификации

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

$ mongo
Подключение к оболочке MongoDB

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

Чтобы убедиться, что теперь доступ к базам ограничен, наберите:

$ show dbs

В отличие от того, как было раньше, когда эта команда возвращала список всех баз данных, теперь доступ к базам для вас закрыт, так как вы не авторизовались в Mongo как пользователь с каким-либо привилегиями.

И поскольку, какая-либо информация для вас теперь не доступна, мы можем заключить, что параметры аутентификации работают, как и ожидалось. Вы также не сможете создать пользователя или выполнить другие привилегированные задачи без авторизации в Mongo.

Теперь, отключитесь от оболочки, набрав exit, либо нажав Ctrl C.

Следующим шагом, необходимо убедиться, что ваш административный пользователь способен идентифицироваться должным образом с помощью запуска команды mongo для подключения от имени вашего пользователя. Команда должна содержать флаг -u, после которого указывается имя пользователя, под которым будет происходить подключение к оболочке. Не забудьте, что вместо YourMongoAdmin вам необходимо указать имя своего административного пользователя. Также, команда должна содержать флаг -p, который запросит у вас пароль вашего пользователя. Плюс ко всему, флаг -p указывает admin в качестве базы данных проверки подлинности вашей учётной записи.

$ mongo -u YourMongoAdmin -p --authenticationDatabase admin

Теперь наберите пароль вашего пользователя и подключитесь к оболочке:

Подключение к оболочке MongoDB - настройка безопасности MongoDB в Ubuntu 20.04

Ещё раз наберите команду show dbs. Обратите внимание, что, поскольку ваша авторизация прошла успешно, вы снова можете видеть список всех баз данных Mongo:

Список баз данных MongoDB

Это подтверждает, что пользовательская аутентификация MongoDB запущена успешно.

Статья полезна?

8 Да  Нет
Похожие статьи
  • Как добавить русский язык в Windows Server 2019/2022
  • Двухфакторная аутентификация с использованием одноразовых паролей
  • Как настроить PTR-записи для домена
  • Как в Linux закрыть доступ для пользователей без пароля
  • Защита SSH-подключения
  • Общая безопасность виртуального сервера
Оставить комментарий Отменить ответ

Популярные статьи
  • Как подключиться по RDP из-под MacOS
  • Как установить PostgreSQL и pgAdmin4 в Ubuntu 20.04
  • Управление портами в Linux (Ubuntu/Debian/CentOS)
  • Настройка VPN с использованием WireGuard
  • Как извлекать и разархивировать файлы .tar.gz в Linux-системах
Разделы Справочника
  • Настройка VPS Сервера
  • Начало работы
  • Особенности виртуального сервера
  • Партнерам
  • Развертывание ПО на VPS сервере
  • Сетевые настройки сервера
GAME OVERNIGHT
CLOUDRUSSIA
STRATONET
SPACE DC
ARCTIC DC
VPS/VDS серверы:
Тестовый период
Дешевый VPS
VPS Старт
VPS Мощные
VPS Windows
VPS Быстрые NVMe
VPS с 1C
Форекс VPS
Игровые серверы
VPS для бизнеса
Пинг до дата-центров
Услуги:
Маркетплейс
Панель ispmanager
Антивирусная защита
Аренда лицензий
Облачное хранилище
VPS серверы с Plesk Obsidian
Колокация
Looking Glass
DNS
Клиентам:
О компании
Дата-Центры
Новости
Аттестация по ФСТЭК
Бонусная программа
Публичная Оферта
Соглашение об уровне услуг
Политика обработки персональных данных
Сувениры от RuVDS
Партнерам:
Для прессы
Партнерская программа
Отзывы
API
Помощь:
Справочник
FAQ
Созданных
серверов
231504
Huawey
Supermicro
Cisco
Intel
Microsoft
ISP
Kaspersky
RDCA Logo

«Креатив года» Премия ЦОДы.рф 2021, 2025

RDCA Logo

«Хостер года» Премия ЦОДы.рф 2023

RDCA Logo

«Человек года» Премия ЦОДы.рф 2024

RuVDS
support@RUVDS.com
8 (800) 775-97-42
+7 (495) 135-10-99
МЫ В СОЦИАЛЬНЫХ СЕТЯХ
Copyright © 2025 RuVDS. Все права защищены.
ООО "МТ ФИНАНС" | ОГРН 1157746680332
Оставить отзыв

Условия получения бонуса за оставленный отзыв:

  1. Напишите про нас на любом из специализированных сайтах для отзывов.
  2. Пришлите нам текст отзыва и ссылку на ваш отзыв.
  3. После проверки, мы опубликуем ваш отзыв у нас на сайте и также начислим бонус на ваш баланс.
Strong Testimonials form submission spinner.

Обязательное поле

Укажите электронную почту вашего аккаунта RUVDS
Укажите ссылку на ваш отзыв
rating fields
Поставьте оценку серверам RUVDS
Оставить отзыв
Strong Testimonials form submission spinner.

Обязательное поле

Укажите электронную почту вашего аккаунта RUVDS
Укажите ссылку на ваш отзыв
rating fields
Поставьте оценку серверам RUVDS