Debian8にMongoDBをインストールする方法
序章
MongoDB は、最新のWebアプリケーションで一般的に使用されている無料のオープンソースNoSQLドキュメントデータベースです。 このチュートリアルは、本番アプリケーション環境で使用するためにサーバー上にMongoDBをセットアップするのに役立ちます。 MongoDBをインストールし、ファイアウォールルールを構成してMongoDBへのアクセスを制限します。
前提条件
このチュートリアルに従うには、次のものが必要です。
- sudo非rootユーザーを持つ1台のDebian8サーバー。 これらの権限を持つユーザーは、Debian8ガイドの初期サーバーセットアップでセットアップできます。
ステップ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
サービスが実行中であることを示す次の出力が表示されます。
出力
● 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.
MongoDBが正常にインストールされたので、ソフトウェアファイアウォールで保護しましょう。
ステップ2—ファイアウォールでMongoDBを保護する
ほとんどの場合、MongoDBには、アプリケーションをホストしている別のサーバーなど、特定の信頼できる場所からのみアクセスする必要があります。 このタスクを実行するために、明示的に接続を許可される別のサーバーのIPアドレスを指定しながら、MongoDBのデフォルトポートへのアクセスを許可できます。 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 22 -j ACCEPT
リモートサーバーからMongoDBに接続する場合は、アプリケーションサーバーからMongoDBのデフォルトポートへのアクセスを許可する次のルールを追加します。
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
警告:ルールで明示的に定義されていないトラフィックをドロップするようにデフォルトのポリシーを変更すると、すべてがロックダウンされます。 将来、追加のトラフィックを許可する場合は、新しいルールを追加する必要があります。
さらに、誤ってルールをフラッシュすると、サーバーからロックアウトされます。 将来ルールを調整する必要がある場合は、sudo iptables -P INPUT 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 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
これらのファイアウォールルールの詳細については、 Ubuntu14.04でIptablesを使用してファイアウォールを設定する方法をご覧ください。
手順3—外部サーバーへのアクセスを有効にする(オプション)
MongoDBの現在のバージョンは、デフォルトで外部接続を受け入れません。 ファイアウォールで特定のIPアドレスへのアクセスを制限している場合は、リモート接続を受け入れるようにMongoDBの構成を変更できます。
MongoDB構成ファイルを編集します。
sudo nano /etc/mongod.conf
このセクションを見つけます:
mongod.conf
# network interfaces net: port: 27017 bindIp: 127.0.0.1
Mongoはローカルループバックアドレスをリッスンしているため、ローカル接続のみを受け入れます。 bindIp
の値を変更して、MongoDBサーバーのIPアドレスが含まれるようにします。
mongod.conf
# network interfaces net: port: 27017 bindIp: 127.0.0.1, your_server_ip
ファイルを保存して、エディターを終了します。
次に、MongoDBを再起動して、変更を適用します。
sudo systemctl restart mongod
これで、リモートマシンが接続できるようになります。 ただし、データベースをさらに保護するために、認証を有効にすることもできます。
結論
MongoDBのインストールと構成に関するより詳細な手順は、これらのDigitalOceanコミュニティの記事にあります。 必ずデータをバックアップし、転送中のデータを暗号化する方法を調べてください。