GNU/Linux >> Linux の 問題 >  >> Linux

CentOS8にMongoDB4をインストールして保護する方法

MongoDBは、C++で記述されたクロスプラットフォームのNoSQLデータベースシステムです。 MongoDBは、MySQLやPostgreSQLなどの従来のテーブルベースのSQLデータベースとは異なり、大量のデータストレージ用に特別に設計されています。 MongoDBは、動的スキーマを持つJSONのようなドキュメントを使用し、データベースにデータを追加する前に事前定義されたスキーマを必要としません。 MongoDBは無料のオープンソースであり、ストレージ、データレプリケーション、アドホッククエリ、負荷分散などの豊富な機能セットが付属しています。

このチュートリアルでは、CentOS8にMongoDBをインストールして保護する方法を説明します。

前提条件

  • Atlantic.netクラウドプラットフォーム上の新しいCentOS8VPS。
  • サーバーで構成されているrootパスワード。

ステップ1–Atlantic.Netクラウドサーバーを作成する

まず、Atlantic.Netクラウドサーバーにログインします。 1GB以上のRAMを搭載したオペレーティングシステムとしてCentOS8を選択して、新しいサーバーを作成します。 SSH経由でクラウドサーバーに接続し、ページの上部で強調表示されているクレデンシャルを使用してログインします。

CentOS 8サーバーにログインしたら、次のコマンドを実行して、ベースシステムを最新の利用可能なパッケージで更新します。

dnf update -y

ステップ2–MongoDBリポジトリを追加する

次のコマンドで作成できます:

nano /etc/yum.repos.d/mongodb-org.repo

次の行を追加します:

[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc

終了したら、ファイルを保存して閉じます。次に、システムへのMongoDBのインストールに進むことができます。

ステップ3–MongoDBをインストールする

これで、次のコマンドを実行するだけでMongoDBをインストールできます。

dnf install mongodb-org -y

インストールが完了したら、MongoDBサービスを開始し、次のコマンドを使用してシステムの再起動後にサービスを開始できるようにします。

systemctl start mongod
systemctl enable mongod

次のコマンドを使用して、MongoDBサービスのステータスを確認できるようになりました。

systemctl status mongod

次の出力が表示されます。

● mongod.service - MongoDB Database Server
   Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2020-04-10 10:58:18 EDT; 7s ago
     Docs: https://docs.mongodb.org/manual
  Process: 2904 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=0/SUCCESS)
  Process: 2902 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 2899 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 2897 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUCCESS)
 Main PID: 2906 (mongod)
   Memory: 77.0M
   CGroup: /system.slice/mongod.service
           └─2906 /usr/bin/mongod -f /etc/mongod.conf

Apr 10 10:58:17 centos8 systemd[1]: Starting MongoDB Database Server...
Apr 10 10:58:17 centos8 mongod[2904]: about to fork child process, waiting until server is ready for connections.
Apr 10 10:58:17 centos8 mongod[2904]: forked process: 2906
Apr 10 10:58:18 centos8 mongod[2904]: child process started successfully, parent exiting
Apr 10 10:58:18 centos8 systemd[1]: Started MongoDB Database Server.

これで、MongoDBはポート27017で実行およびリッスンしています。次のコマンドで確認できます:

netstat -pnltu | grep 27017

次の出力が得られるはずです:

tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      2906/mongod

次のコマンドを使用してMongoDBシェルにアクセスすることもできます。

mongo

次の出力が得られるはずです:

MongoDB shell version v4.2.5
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("b0f7656f-f939-4f50-87d2-01cbeca0849a") }
MongoDB server version: 4.2.5
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
            http://docs.mongodb.org/
Questions? Try the support group
            http://groups.google.com/group/mongodb-user
Server has startup warnings:
2020-04-10T10:58:18.521-0400 I  CONTROL  [initandlisten]
2020-04-10T10:58:18.521-0400 I  CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2020-04-10T10:58:18.521-0400 I  CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2020-04-10T10:58:18.521-0400 I  CONTROL  [initandlisten]
2020-04-10T10:58:18.521-0400 I  CONTROL  [initandlisten]
2020-04-10T10:58:18.521-0400 I  CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2020-04-10T10:58:18.521-0400 I  CONTROL  [initandlisten] **        We suggest setting it to 'never'
2020-04-10T10:58:18.522-0400 I  CONTROL  [initandlisten]
---
Enable MongoDB's free cloud-based monitoring service, which will then receive and display
metrics about your deployment (disk utilization, CPU, operation statistics, etc).

The monitoring data will be available on a MongoDB website with a unique URL accessible to you
and anyone you share the URL with. MongoDB may use this information to make product
improvements and to suggest MongoDB products and deployment options to you.

To enable free monitoring, run the following command: db.enableFreeMonitoring()
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---

次のコマンドを使用して、MongoDBシェルを終了できます。

>exit

ステップ4–MongoDB認証を有効にする

nano /etc/mongod.conf

ファイルの最後に次の行を追加します。

security:
  authorization: enabled

終了したら、ファイルを保存して閉じます。次に、MongoDBサービスを再起動して、変更を適用します。

systemctl restart mongod

ステップ5–MongoDB管理者ユーザーを作成する

次に、管理タスクを実行するためのすべての権限を持つ管理ユーザーを作成する必要があります。

まず、次のコマンドを使用してMongoDBシェルにアクセスします。

mongo

次の出力が得られるはずです:

MongoDB shell version v4.2.5
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("09e0e028-cd26-4f9d-9270-52b938925f99") }
MongoDB server version: 4.2.5

次に、次のコマンドを使用してデータベースをadminに変更します。

> use admin

次に、次のコマンドを使用してmyadminというMongoDB管理者ユーザーを作成します。

> db.createUser( { user: "myadmin", pwd: "password", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )

ユーザーが作成されると、次の出力が表示されます。

Successfully added user: {
            "user" : "myadmin",
            "roles" : [
                        {
                                    "role" : "userAdminAnyDatabase",
                                    "db" : "admin"
                        }
            ]
}

次に、次のコマンドを使用してMongoDBシェルを終了します。

>exit

ステップ6–MongoDB認証を確認する

この時点で、MongoDBは認証を使用して構成されています。これで、MongoDBを操作する前に、ユーザー名とパスワードを入力する必要があります。

次に、認証なしでMongoDBに接続します:

mongo

次の出力が得られるはずです:

MongoDB shell version v4.2.5
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("fecf1846-13fd-4959-91da-5cf323781e13") }
MongoDB server version: 4.2.5

次に、次のコマンドを実行して、MongoDBユーザーを一覧表示します。

> show users

次のエラーが発生するはずです:

2020-04-10T11:08:04.598-0400 E  QUERY    [js] uncaught exception: Error: command usersInfo requires authentication :
[email protected]/mongo/shell/utils.js:25:13
[email protected]/mongo/shell/db.js:1638:15
[email protected]/mongo/shell/utils.js:883:9
[email protected]/mongo/shell/utils.js:790:15
@(shellhelp2):1:1

これは、認証せずにユーザーを一覧表示できないことを示しています。

次に、次のコマンドを使用してMongoDBを終了します。

>exit

ステップ7–管理ユーザーを使用してMongoDBにアクセスする

それでは、管理ユーザーを使用してMongoDBに接続しましょう:

mongo -u myadmin -p --authenticationDatabase admin

以下に示すように、管理者パスワードを入力するように求められます。

MongoDB shell version v4.2.5
Enter password:

管理者パスワードを入力し、 Enterを押します 。次の出力が得られるはずです:

connecting to: mongodb://127.0.0.1:27017/?authSource=admin&compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("a39f723c-f1b5-4c93-9e67-ff82379dfb62") }
MongoDB server version: 4.2.5

次に、データベースをadminに変更し、次のコマンドでユーザーを一覧表示します。

> use admin
> show users

次の出力が得られるはずです:

{
            "_id" : "admin.myadmin",
            "userId" : UUID("bcd920c1-63fd-4b82-a8a6-eb6515d51a34"),
            "user" : "myadmin",
            "db" : "admin",
            "roles" : [
                        {
                                    "role" : "userAdminAnyDatabase",
                                    "db" : "admin"
                        }
            ],
            "mechanisms" : [
                        "SCRAM-SHA-1",
                        "SCRAM-SHA-256"
            ]
}

次に、次の出力でMongoDBシェルを終了します。

>exit

結論

上記のガイドでは、CentOS 8にMongoDBをインストールする方法を学びました。また、MongoDB認証を有効にして管理ユーザーを作成する方法も示しました。これで、Atlantic.Net VPS上のMongoDBがユーザー名とパスワードで保護されます。Atlantic.NetのVPSがない場合は、今すぐVPSホスティングを開始してMongoDBをインストールしてください!


Linux
  1. Debian11にMongoDBをインストールして保護する方法

  2. Ubuntu20.04およびCentOS8にMongoDBをインストールする方法

  3. CentOS7にFlintCMSをインストールする方法

  1. CentOS 8 /RHEL8にMongoDBをインストールする方法

  2. CentOS 7 /RHEL7にMongoDB4.4/4.2をインストールする方法

  3. CentOS / RHEL :OpenSSH サーバーとクライアントをインストールして構成する方法

  1. CentOS8にMongoDBをインストールする方法

  2. RHEL 8 /CentOS8にmongodbをインストールする方法

  3. CentOS7にMongoDBをインストールする方法