Вступление
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 данные в пути].