前書き
http://mongodb.com [MongoDB]は、最新のWebアプリケーションで一般的に使用される無料のオープンソースのNoSQLドキュメントデータベースです。 このチュートリアルは、実稼働アプリケーション環境で使用するためにサーバーでMongoDBをセットアップするのに役立ちます。 MongoDBをインストールし、ファイアウォールルールを構成してMongoDBへのアクセスを制限します。
前提条件
このチュートリアルを実行するには、次のものが必要です。
-
sudo非rootユーザーを持つDebian 8サーバー1台。 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 [ 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/ [転送中のデータを暗号化]。