前書き

http://mongodb.com [MongoDB]は、最新のWebアプリケーションで一般的に使用される無料のオープンソースのNoSQLドキュメントデータベースです。 このチュートリアルは、実稼働アプリケーション環境で使用するためにサーバーでMongoDBをセットアップするのに役立ちます。 MongoDBをインストールし、ファイアウォールルールを構成してMongoDBへのアクセスを制限します。

前提条件

このチュートリアルを実行するには、次のものが必要です。

ステップ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 [ Ubuntu 14.04でIptablesを使用してファイアウォールを設定する方法]。

手順3-外部サーバーへのアクセスを有効にする(オプション)

MongoDBの現在のバージョンは、デフォルトでは外部接続を受け入れません。 ファイアウォールを使用して特定のIPアドレスへのアクセスを制限している場合、MongoDBの構成を変更してリモート接続を受け入れることができます。

MongoDB構成ファイルを編集します。

sudo nano /etc/mongod.conf

このセクションを見つけます。

mongod.conf

# network interfaces
net:
 port: 27017
 bindIp:

Mongoはローカルループバックアドレスでリッスンしているため、ローカル接続のみを受け入れます。 `+ bindIp +`の値を変更して、MongoDBサーバーのIPアドレスが含まれるようにします。

mongod.conf

# network interfaces
net:
 port: 27017
 bindIp: 127.0.0.1

ファイルを保存し、エディターを終了します。

次に、MongoDBを再起動して変更を適用します。

sudo systemctl restart mongod

これで、リモートマシンが接続できるようになります。 ただし、https://docs.mongodb.com/v3.2/tutorial/enable-authentication/ [認証を有効にする]を使用して、データベースをさらに保護することもできます。

結論

MongoDBのインストールと構成に関する詳細な手順については、https://www.digitalocean.com/community/search?q = mongodb [これらの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/ [転送中のデータを暗号化]。