MongoDBをUbuntu 18.04にインストールし、セキュリティを強化する手順について、詳細なガイドを提供します。MongoDBは、スケーラブルで高パフォーマンスなNoSQLデータベースであり、特にデータ量が多いアプリケーションでよく使用されます。この記事では、インストール手順とセキュリティの設定方法について深掘りします。
1. MongoDBのインストール
まず、Ubuntu 18.04にMongoDBをインストールする手順を説明します。
1.1 MongoDBリポジトリの追加
Ubuntuの公式リポジトリにはMongoDBが含まれていますが、最新の安定版をインストールするためには、MongoDBの公式リポジトリを追加する必要があります。以下の手順でリポジトリを追加します。
bashsudo apt update sudo apt install gnupg wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
次に、MongoDBリポジトリをsources.list.dディレクトリに追加します。
bashecho "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
1.2 MongoDBのインストール
リポジトリを追加した後、パッケージリストを更新してMongoDBをインストールします。
bashsudo apt update sudo apt install mongodb-org
インストールが完了したら、MongoDBを起動します。
bashsudo systemctl start mongod
MongoDBが正常に起動していることを確認するために、ステータスを確認します。
bashsudo systemctl status mongod
1.3 MongoDBの自動起動設定
システムの再起動時にMongoDBを自動で起動するように設定します。
bashsudo systemctl enable mongod
2. MongoDBのセキュリティ強化
MongoDBをインターネット上で公開する場合、そのセキュリティを強化することは非常に重要です。以下では、MongoDBを安全に保つための設定をいくつか紹介します。
2.1 認証の有効化
デフォルトでは、MongoDBは認証なしで動作しますが、これはセキュリティリスクを伴います。認証を有効にするには、MongoDBの設定ファイル(/etc/mongod.conf
)を編集し、security
セクションを追加します。
bashsudo nano /etc/mongod.conf
設定ファイル内で、以下のようにsecurity
セクションを追加します。
yamlsecurity:
authorization: "enabled"
この設定を保存して終了後、MongoDBを再起動します。
bashsudo systemctl restart mongod
2.2 ユーザーの作成
認証が有効になった後、MongoDBにアクセスするためのユーザーを作成します。まず、MongoDBシェルにアクセスします。
bashmongo
次に、admin
データベースに切り替え、管理者ユーザーを作成します。
bashuse admin
db.createUser({
user: "admin",
pwd: "your_secure_password",
roles: [{ role: "userAdminAnyDatabase", db: "admin" }]
})
上記のコマンドでadmin
というユーザーを作成し、強力なパスワードを設定します。userAdminAnyDatabase
ロールは、すべてのデータベースに対して管理者権限を付与します。
2.3 ファイアウォール設定
MongoDBはデフォルトでポート27017を使用します。このポートがインターネットに公開されていると、悪意のある攻撃者に狙われる可能性があります。そのため、ファイアウォールでポートを制限することが重要です。
UFW(Uncomplicated Firewall)を使用して、MongoDBがローカルホスト(127.0.0.1)からの接続のみを受け入れるように設定します。
bashsudo ufw allow from 127.0.0.1 to any port 27017
これにより、ローカルホスト以外のIPアドレスからMongoDBにアクセスできなくなります。
2.4 MongoDBのネットワークバインディング設定
デフォルトでは、MongoDBはすべてのネットワークインターフェースにバインドされますが、外部からアクセスを許可したくない場合、設定を変更してローカルインターフェースのみにバインドすることができます。
mongod.conf
ファイルを編集して、bindIp
オプションを設定します。
bashsudo nano /etc/mongod.conf
以下のように設定します。
yamlnet:
bindIp: 127.0.0.1 # ローカルホストのみにバインド
設定を保存した後、MongoDBを再起動します。
bashsudo systemctl restart mongod
2.5 TLS/SSLの有効化
データ通信のセキュリティを強化するために、MongoDBでTLS/SSLを有効にすることが推奨されます。これにより、データが暗号化されて送受信されます。
まず、SSL証明書を準備します。次に、mongod.conf
ファイルを編集し、以下のように設定します。
yamlnet:
ssl:
mode: requireSSL
PEMKeyFile: /path/to/your/certificate.pem
PEMKeyPassword: your_certificate_password
設定を保存後、MongoDBを再起動します。
bashsudo systemctl restart mongod
3. MongoDBのバックアップと監視
データベースのバックアップと監視は、運用環境では非常に重要です。以下に、簡単なバックアップ手順を示します。
3.1 バックアップの取得
mongodump
コマンドを使用して、MongoDBのバックアップを取得できます。バックアップを保存するディレクトリを指定して、以下のように実行します。
bashmongodump --out /path/to/backup/directory
3.2 監視ツールの設定
MongoDBには、mongostat
やmongotop
といった監視ツールが用意されています。これらを使用して、データベースのパフォーマンスやリソースの使用状況を監視できます。
例えば、mongostat
を使用して現在のステータスを確認するには、次のコマンドを実行します。
bashmongostat
4. まとめ
Ubuntu 18.04にMongoDBをインストールし、セキュリティを強化する方法について説明しました。認証の有効化、ユーザーの作成、ファイアウォールの設定、ネットワークバインディングの設定など、MongoDBを安全に運用するための基本的な手順をカバーしました。セキュリティの向上とともに、バックアップや監視を行い、運用環境での安定性を確保しましょう。