MongoDB安全策略


MongoDB安裝啟動詳解

一,修改啟動端口

mongo的默認端口為27017 如果啟用的是27017端口並且在公網上很容易被人攻擊,所以第一點我們要修改端口

sudo ./mongod --dbpath=/data/db --fork --port 29089 --logpath=/data/logs

我們現在啟動的是29089端口

啟動shell

$ ./mongo

image

報錯:

Failed to connect to 127.0.0.1:27017, reason: errno:61 Connection refused

這是是因為我們修改了端口,而默認連接的是27017的端口,所以我們進入shell時也要指定啟動服務似的端口

$ ./mongo --port 29089

這樣就可以進入了

image

二,用戶認證

mongodb默認是沒有管理賬戶的,需要開發人員添加管理員賬戶,在啟動mongo服務時添加身份認證才可以進入數據庫,所以我們需要做兩點:

  • 添加管理員
  • 啟動服務時時添加 auth 指令

mogodb 默認有兩個數據庫:
在我們初次安裝並啟動mongo服務后,進入shell管理可以看到已存在兩個數據庫,在執行show dbs時 會顯示以下兩個數據庫

  • admin
  • local

我們要在admin里添加用戶以便在進入數據庫時認證,我是在mac下操作,以下都是mac下的命令,下面演示整個用戶添加和認證的過程

1.檢查mongo服務是否開啟

 $ ps -ef | grep mongo
 

image

未找到mongo啟動進程

2.啟動mongo服務

$ cd /usr/local/bin
$ ./mongod --dbpath=/data/db --fork --port 29089 --logpath=/data/logs

image

成功啟動mongo

3.進入shell管理后台

$ cd /usr/local/bin
$ ./mongo --port 29089

image

4.查看當前所有數據庫

$ show dbs

image

除了admin,local數據庫其他都是我業務上使用后建立的數據庫,可以看到我們直接就訪問到數據庫並且可以操作

5.在admin庫里添加管理員用戶

$ use admin
$ db.getUsers();

image

使用admin數據庫並檢查是否存在用戶

6 創建用戶

$ db.createUser({user:"leinov",pwd:"123456",roles:["root"]})

db.getUsers();

image

db.createUser()創建一個用戶,並分配角色,我們創建里一個超級管理員,這個角色可以對本機mongo實例內的所有數據庫做有效的讀寫操作,關於db.createUser()方法參考官方文檔 https://docs.mongodb.com/manual/reference/method/db.auth/

7 重新啟動服務並添加認證auth

$ sudo ./mongod --dbpath=/data/db --fork --port 29089  --logpath=/data/logs --auth

在啟動命令后面加上auth這樣在進入數據庫時就會開啟認證

8.重新進入shell后台

$ ./mongo--port29089
$ show dbs

image

提示沒有權限查看數據庫list

9.切換到admin數據庫驗證

$ use admin
$ db.auth({user:"leinov",pwd:"123456"})

db.auth()方法是驗證用戶的操作方法,返回值為0/1 1為驗證成功
image

10.再次查看數據庫

$ show dbs

image

完成端口修改和用戶認證基本上就可以保證數據庫的安全了,我自己的mongo也被黑了,網上其實還有很多裸奔的mongo數據庫,所以一定要給自己的mongo修改端口添加用戶認證保證安全。

image

3.0后的mongo很多方法都有變化,具體參考官方文檔 https://docs.mongodb.com/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM