Как установить MongoDB на Debian 8

Вступление

http://mongodb.com [MongoDB] - это бесплатная база данных документов NoSQL с открытым исходным кодом, широко используемая в современных веб-приложениях. Этот учебник поможет вам настроить MongoDB на вашем сервере для использования в среде производственных приложений. Вы будете устанавливать MongoDB и настраивать правила брандмауэра для ограничения доступа к MongoDB.

Предпосылки

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

  • Один сервер Debian 8 с пользователем без полномочий root. Вы можете настроить пользователя с этими привилегиями из нашего руководства Initial Server Setup с Debian 8.

Шаг 1 - Установка MongoDB

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

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

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6

После успешного импорта ключа вы увидите:

Выход

gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)

Затем мы должны добавить детали репозитория MongoDB, чтобы + apt + знал, откуда скачивать пакеты.

Выполните следующую команду, чтобы создать файл списка для MongoDB.

echo "deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.4 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

После добавления сведений о хранилище обновите список пакетов:

sudo apt-get update

Теперь установите сам пакет MongoDB с помощью следующей команды:

sudo apt-get install -y mongodb-org

При этом устанавливается последняя стабильная версия MongoDB, а также некоторые полезные инструменты управления сервером MongoDB.

После установки MongoDB запустите службу и убедитесь, что она запускается при перезагрузке сервера:

sudo systemctl enable mongod.service
sudo systemctl start mongod

Затем используйте + systemctl +, чтобы проверить, что служба запущена правильно:

sudo systemctl status mongod

Вы должны увидеть следующий вывод, указывающий, что служба работает:

Выход

●  - High-performance, schema-free document-oriented database
  Loaded: loaded (/lib/systemd/system/mongod.service; enabled)
  Active: active (running) since Tue 2017-02-28 19:51:51 UTC; 7s ago
    Docs: https://docs.mongodb.org/manual
Main PID: 8958 (mongod)
  CGroup: /system.slice/mongod.service
          └─8958 /usr/bin/mongod --quiet --config /etc/mongod.conf

Feb 28 19:51:51 cart-61037 systemd[1]: Started High-performance, schema-free document-oriented database.

Теперь, когда MongoDB успешно установлен, давайте защитим его с помощью программного брандмауэра.

Шаг 2 - Защита MongoDB с помощью брандмауэра

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

Прежде чем писать какие-либо правила, установите пакет + iptables-persistent +, чтобы вы могли сохранить созданные вами правила. Таким образом, правила будут применяться каждый раз при перезагрузке сервера. Выполните эту команду:

sudo apt-get install iptables-persistent

Затем удалите все существующие правила, которые могут быть на месте, на всякий случай:

sudo iptables -F

Затем добавьте правило, которое позволяет установленным соединениям продолжать разговор. Таким образом, наше существующее соединение SSH не будет прервано:

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Затем убедитесь, что доступ по SSH разрешен:

sudo iptables -A INPUT -p tcp --dport  -j ACCEPT

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

sudo iptables -A INPUT -s  -p tcp --destination-port 27017 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -d  -p tcp --source-port 27017 -m state --state ESTABLISHED -j ACCEPT

Затем добавьте эти правила, которые разрешают трафик на локальном устройстве обратной связи:

sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT

Наконец, измените политику брандмауэра, чтобы удалить весь другой трафик:

sudo iptables -P INPUT DROP

Убедитесь, что правила выглядят правильно:

sudo iptables -S

Вы должны увидеть вывод, похожий на этот:

Output-P INPUT DROP
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -s /32 -p tcp -m tcp --dport 27017 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A OUTPUT -d /32 -p tcp -m tcp --sport 27017 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -o lo -j ACCEPT

Наконец, сохраните правила:

netfilter-persistent save

Чтобы узнать больше об этих правилах брандмауэра, взгляните на https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-iptables-on-ubuntu-14-04 [ Как настроить брандмауэр с помощью Iptables в Ubuntu 14.04].

Шаг 3 - Включение доступа к внешним серверам (необязательно)

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

Отредактируйте файл конфигурации MongoDB:

sudo nano /etc/mongod.conf

Найдите этот раздел:

mongod.conf

# network interfaces
net:
 port: 27017
 bindIp:

Mongo прослушивает локальный адрес обратной связи, поэтому он будет принимать только локальные соединения. Измените значение + bindIp +, чтобы оно включало IP-адрес вашего сервера MongoDB:

mongod.conf

# network interfaces
net:
 port: 27017
 bindIp: 127.0.0.1

Сохраните файл и выйдите из редактора.

Затем перезапустите MongoDB, чтобы применить изменения:

sudo systemctl restart mongod

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

Заключение

Более подробные инструкции по установке и настройке MongoDB можно найти в these статьях сообщества DigitalOcean. Не забудьте https://www.digitalocean.com/community/tutorials/how-to-create-and-use-mongodb-backups-on-ubuntu-14-04 восстановить ваши данные] и узнать, как https: //docs.mongodb.com/manual/core/security-transport-encryption/[encrypt данные в пути].

Related