Установка MongoDB в Debian 8
Debian | Комментировать запись
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: Debian 8, MongoDB, NoSQL