MongoDBデータベースセキュリティユーザーパスワードの変更

    MongoDBは非リレーショナルデータベースであり、そのデータベースセキュリティはmysql5.7より前のバージョンと非常に似ています。データベースがインストールされたばかりです。

ソフトウェアと例が初期化された後、データベースはまったく安全ではありません。つまり、新しく初期化されたmongodbには、データがあればセキュリティ上の制限はありません。

ライブラリはパブリックネットワーク上にあり、どのマシンもインターネットを介してmongoの任意のクライアントを介してデータベースに接続できます。したがって、MongoDBで本番環境に移行します

以前は、MongoDBをセキュリティの観点から強化する必要がありました。ここでは、1つのマスター、1つのスレーブ、1つのアービトレーションを備えたMongodbアーキテクチャのユーザーパスワードを紹介します

変更します。

    1. mongodbデータベースクラスターのメインライブラリにログインし、スーパー管理ユーザーを作成します

db.createUser(  

{{  

    ユーザー: "firstset"、   

    pwd: "firstset"、  

    役割:[{役割: "userAdminAnyDatabase"、db: "管理者"}]  

}  

);  

    2. zhulのパスワードを変更し、mogodbプロセスを確認し、ポート番号に注意します。

ps -ef | grep mongod

モンゴ108361 0 09:02?00:00:03 mongod --dbpath / opt / mongo / data / dns_repset1  --port 10001  --replSet firstset --oplogSize 512 --rest --fork --logpath /opt/mongo/logs/firstset/firstset.log --logappend --nojournal --directoryperdb --keyFile / opt / mongo / keyfile / keyfile

mongo 10997 9767 0 09:09 pts / 3 00:00:00 grep --color = auto mongod

    3. zhulのパスワードを変更し、現在のデータベースがパスワードなしでログインしているかどうかを確認します

[mongo @ mongo1 keyfile] $ mongo --port 10001 

MongoDBシェルバージョン:3.2.11-49-g52b68fa

接続先:127.0.0.1:10001 /テスト

firstset:PRIMARY> show dbs

2019-10-24T09:09:31.298 + 0800 E QUERY [thread1]エラー:listDatabasesが失敗しました:{

「OK」:0、

"errmsg": "管理者がコマンド {listDatabases:1.0}を実行することを許可されていません"、

「コード」:13

}:

_getErrorWithCode @ src / mongo / shell / utils.js:25:13

Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1

shellHelper.show@src/mongo/shell/utils.js:761:19

shellHelper@src/mongo/shell/utils.js:651:15

@(shellhelp2):1:1

firstset:PRIMARY> exit

さようなら

    検証を通じて、現在のデータベースはキーファイルのセキュリティ認証検証を試みました。パスワードなしのログインはコマンドの実行を拒否します。

4. zhulのパスワードを変更します。変更したユーザーのパスワードがわかっている場合は、アカウントパスワードを使用してログインするか、キーファイルのセキュリティ制限をキャンセルできます。

パスワードなしでログインした後、関連するユーザーのパスワードを変更し、キーファイルのセキュリティ認証を有効にします

[mongo @ mongo1 keyfile] $ mongo -u firstset -p firstset --port 10001

MongoDBシェルバージョン:3.2.11-49-g52b68fa

接続先:127.0.0.1:10001 /テスト

サーバーには起動時の警告があります: 

2019-10-24T09:02:45.827 + 0800 I CONTROL [main] **警告:-restは--httpinterfaceなしで指定されています。

2019-10-24T09:02:45.827 + 0800 I CONTROL [main] ** httpインターフェースを有効にする

2019-10-24T09:02:46.0​​23 + 0800 I CONTROL [initandlisten] 

2019-10-24T09:02:46.0​​23 + 0800 I CONTROL [initandlisten] **警告:サーバーはWebサーバーインターフェイスとアクセス制御で起動されます。

2019-10-24T09:02:46.0​​23 + 0800 I CONTROL [initandlisten] ** Webインターフェイス(rest、httpinterface、jsonp)は安全ではありません 

2019-10-24T09:02:46.0​​23 + 0800 I CONTROL [initandlisten] **であり、下位互換性のために必要な場合を除いて無効にする必要があります。

2019-10-24T09:02:46.0​​23 + 0800 I CONTROL [initandlisten] 

2019-10-24T09:02:46.0​​23 + 0800 I CONTROL [initandlisten] 

2019-10-24T09:02:46.0​​23 + 0800 I CONTROL [initandlisten] **警告:/ sys / kernel / mm / transparent_hugepage / enabledは「常に」です。

2019-10-24T09:02:46.0​​23 + 0800 I CONTROL [initandlisten] **「never」に設定することをお勧めします

2019-10-24T09:02:46.0​​23 + 0800 I CONTROL [initandlisten] 

2019-10-24T09:02:46.0​​23 + 0800 I CONTROL [initandlisten] **警告:/ sys / kernel / mm / transparent_hugepage / defragは「常に」です。

2019-10-24T09:02:46.0​​24 + 0800 I CONTROL [initandlisten] **「never」に設定することをお勧めします

2019-10-24T09:02:46.0​​24 + 0800 I CONTROL [initandlisten] 

firstset:PRIMARY> show dbs;

管理者0.000GB

dns_testdb 0.004GB

ローカル0.008GB

firstset:PRIMARY>  db.updateUser( "firstset"、{pwd: "rootroot"});

firstset:PRIMARY> exit

さようなら

    5.パスワードの変更を確認します

-間違ったユーザー名またはパスワードのログインが拒否されました

[mongo @ mongo1 keyfile] $ mongo -u firstset -p firstset --port 10001 

MongoDBシェルバージョン:3.2.11-49-g52b68fa

接続先:127.0.0.1:10001 /テスト

2019-10-24T09:11:35.167 + 0800 E QUERY [thread1]エラー:認証に失敗しました。

DB.prototype._authOrThrow @ src / mongo / shell / db.js:1441:20

@(auth):6:1

@(auth):1:2

例外:ログインに失敗しました

-正しいユーザー名とパスワードでログインした後、正常に操作できます

[mongo @ mongo1 keyfile] $ mongo -u firstset -p rootroot --port 10001

MongoDBシェルバージョン:3.2.11-49-g52b68fa

接続先:127.0.0.1:10001 /テスト

サーバーには起動時の警告があります: 

2019-10-24T09:02:45.827 + 0800 I CONTROL [main] **警告:-restは--httpinterfaceなしで指定されています。

2019-10-24T09:02:45.827 + 0800 I CONTROL [main] ** httpインターフェースを有効にする

2019-10-24T09:02:46.0​​23 + 0800 I CONTROL [initandlisten] 

2019-10-24T09:02:46.0​​23 + 0800 I CONTROL [initandlisten] **警告:サーバーはWebサーバーインターフェイスとアクセス制御で起動されます。

2019-10-24T09:02:46.0​​23 + 0800 I CONTROL [initandlisten] ** Webインターフェイス(rest、httpinterface、jsonp)は安全ではありません 

2019-10-24T09:02:46.0​​23 + 0800 I CONTROL [initandlisten] **であり、下位互換性のために必要な場合を除いて無効にする必要があります。

2019-10-24T09:02:46.0​​23 + 0800 I CONTROL [initandlisten] 

2019-10-24T09:02:46.0​​23 + 0800 I CONTROL [initandlisten] 

2019-10-24T09:02:46.0​​23 + 0800 I CONTROL [initandlisten] **警告:/ sys / kernel / mm / transparent_hugepage / enabledは「常に」です。

2019-10-24T09:02:46.0​​23 + 0800 I CONTROL [initandlisten] **「never」に設定することをお勧めします

2019-10-24T09:02:46.0​​23 + 0800 I CONTROL [initandlisten] 

2019-10-24T09:02:46.0​​23 + 0800 I CONTROL [initandlisten] **警告:/ sys / kernel / mm / transparent_hugepage / defragは「常に」です。

2019-10-24T09:02:46.0​​24 + 0800 I CONTROL [initandlisten] **「never」に設定することをお勧めします

2019-10-24T09:02:46.0​​24 + 0800 I CONTROL [initandlisten] 

firstset:PRIMARY> show dbs;

管理者0.000GB

dns_testdb 0.004GB

ローカル0.008GB

firstset:PRIMARY> use admin

データベース管理者に切り替えました

firstset:PRIMARY>コレクションを表示します。

system.users

system.version

firstset:PRIMARY> db.system.users.find();

{"_id": "test.firstset"、 "user": "firstset"、 "db": "test"、 "credentials":{"SCRAM-SHA-1":{"iterationCount":10000、 "salt" : "ISdrb4a3Cc0A59vXEUxjOg =="、 "storedKey": "qPn44VuZrJ6QwWzOMBq90vZ5eAo ="、 "serverKey": "rz + CDSlpXHKvUDGg0PCnG2GZCjk ="}}、 "roles":[" }]}

firstset:PRIMARY> dns_testdbusedns_testdbを使用します

dbdns_testdbに切り替えました

firstset:PRIMARY>コレクションを表示します。

test_collection

firstset:PRIMARY> db.test_collection.findOne();

{{

"_id":ObjectId( "5d8434a5b138ddafc446e13b")、

「名前」:「牛」、

"user_id":48149、

「ブール値」:false、

"added_at":ISODate( "2019-09-20T02:08:37.116Z")、

「番号」:1743

}

firstset:PRIMARY> 

firstset:PRIMARY> rs.status();

{{

"set": "firstset"、

"日付":ISODate( "2019-10-24T01:13:15.006Z")、

"myState":1、

「用語」:NumberLong(7)、

"heartbeatIntervalMillis":NumberLong(2000)、

「メンバー」:[

{{

"_id":0、

"名前": "192.168.192.251:10001"、

「健康」:1、

「状態」:1、

"stateStr": "PRIMARY"、

「稼働時間」:630、

"最適な": {

"ts":タイムスタンプ(1571879490、1)、

"t":NumberLong(7)

}、

"OptimalDate":ISODate( "2019-10-24T01:11:30Z")、

"electionTime":タイムスタンプ(1571879010、1)、

"electionDate":ISODate( "2019-10-24T01:03:30Z")、

"configVersion":1、

「自己」:真

}、

{{

"_id":1、

"名前": "192.168.192.252:10001"、

「健康」:1、

「状態」:2、

"stateStr": "SECONDARY"、

「稼働時間」:566、

"最適な": {

"ts":タイムスタンプ(1571879490、1)、

"t":NumberLong(7)

}、

"OptimalDate":ISODate( "2019-10-24T01:11:30Z")、

"lastHeartbeat":ISODate( "2019-10-24T01:13:13.320Z")、

"lastHeartbeatRecv":ISODate( "2019-10-24T01:13:13.259Z")、

"pingMs":NumberLong(0)、

"syncingTo": "192.168.192.251:10001"、

"configVersion":1

}、

{{

"_id":2、

"名前": "192.168.192.250:10001"、

「健康」:1、

「状態」:7、

"stateStr": "ARBITER"、

「稼働時間」:593、

"lastHeartbeat":ISODate( "2019-10-24T01:13:13.301Z")、

"lastHeartbeatRecv":ISODate( "2019-10-24T01:13:13.185Z")、

"pingMs":NumberLong(0)、

"configVersion":1

}

]、

「OK」:1

}

firstset:PRIMARY> 

 

  MongoDB keyFile認証設定については、以下を参照してください。

http://blog.itpub.net/29357786/viewspace-2130594/

おすすめ

転載: blog.csdn.net/www_xue_xi/article/details/102793292