Установка MongoDB в Debian 8

MongoDB – это свободная и открытая система управления базами данных NoSQL, которая сегодня пользуется высокой популярностью у веб-разработчиков. Данное руководство поможет установить MongoDB на сервер Debian 8 для окружения производства и настроить брандмауэр для поддержки БД.

Требования

  • Сервер Debian 8.
  • Пользователь с доступом к sudo.

Все инструкции можно найти здесь.

1: Установка MongoDB

Система MongoDB включена в репозиторий пакетов Debian, но официальный репозиторий MongoDB предоставляет более актуальную версию программы. Ubuntu проверяет подлинность пакетов программного обеспечения при помощи 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 знал, откуда загружать файлы.

Чтобы создать list-файл для 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.

Запустите сервис и включите его автозагрузку:

sudo systemctl enable mongod.service
sudo systemctl start mongod

Проверьте состояние сервиса:

sudo systemctl status mongod
mongod.service - 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.

2: Настройка брандмауэра

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

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

sudo apt-get install iptables-persistent

Примечание: Во время установки пакет 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 22 -j ACCEPT

Если вы хотите подключаться к БД с удалённого сервера, добавьте эти правила:

sudo iptables -A INPUT -s your_other_server_ip -p tcp --destination-port 27017 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -d your_other_server_ip -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

Важно! Изменяя политику брандмауэра на DROP, вы сбрасываете весь трафик, который не отвечает правилам брандмауэра. Чтобы в дальнейшем разблокировать какой-нибудь трафик, добавьте в набор новые правила.

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

sudo iptables -P INPUT ACCEPT

Восстановив правила, вы можете снова заблокировать ненужный трафик:

sudo iptables -P INPUT DROP

Просмотрите правила брандмауэра:

sudo iptables -S
-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 your_other_server_ip/32 -p tcp -m tcp --dport 27017 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A OUTPUT -d your_other_server_ip/32 -p tcp -m tcp --sport 27017 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -o lo -j ACCEPT

Сохраните правила:

netfilter-persistent save

Читайте также: Основы Iptables: общие правила и команды брандмауэра

3: Настройка доступа к внешним сервисам (опционально)

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

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

sudo nano /etc/mongod.conf

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

# network interfaces
net:
port: 27017
bindIp: 127.0.0.1

На данный момент MongoDB прослушивает локальный адрес закольцовывания. Добавьте в bindIp IP-адрес сервера MongoDB.

# network interfaces
net:
port: 27017
bindIp: 127.0.0.1, your_server_ip

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

Чтобы обновить настройки, перезапустите MongoDB.

sudo systemctl restart mongod

Теперь удалённые машины могут подключиться к MongoDB.

Больше руководств для MongoDB вы найдёте в специальном разделе нашего Информатория и на сайте MongoDB.

Tags: , ,

Добавить комментарий