開啟MongoDB認證權限
之前有發生過mongodb資料庫被勒索的新聞,主要是因為舊版的mongodb設定上是可以被任何人連接的,如果沒有設定資料庫權限,基本上任何人只要知道資料庫的ip位置,就可以入侵。
新版的mongodb已經把漏洞補上,預設只有內網才能連接上,但就不能從外部連接進去,所以還是得手動更改讓外部也可以連接,並且加上資料庫權限,避免被攻擊。
加入帳號
先在terminal裡面輸入mongo進入mongo的CLI中,首先進入admin中
1 | use admin |
接著建立一個擁有root權限的使用者,這邊也可以將root改成userAdminAnyDatabase,userAdminAnyDatabase可以讓此使用者管理各個資料庫,但不能對資料庫進行讀寫,擁有的權限沒有root大,root是所有功能都可以使用
1 | db.createUser({ |
之後會顯示建立成功,如果成功的話可以輸入以下指令進行登入,返回值為1表示登入成功
1 | db.auth("userID", "userPwd") |
接著進入要建立權限的資料庫,例如這次要為名為test的資料庫建立權限,首先就是先切換到test資料庫,如果原先沒有建立資料庫的話,mongodb也會自動幫你建立
1 | use test |
切換後跟前面建立擁有root權限的步驟一樣,這邊的roles可以看到第一個role是表示此使用者是test資料庫的擁有者,第二個role是他對test擁有讀寫的能力
1 | db.createUser({ |
創建成功後一樣測試可否正常登入,如果返回值為1表示登入成功
1 | db.auth("testAdmin", "test123") |
讓mongodb預設開啟認證
要讓後台的mongodb預設就開啟認證,必須先修改配置文件,配置文件在
1 | /etc/mongodb.conf |
接著更改以下內容,這樣就可以讓外網連進資料庫,並且開啟安全認證
1 | bind_ip = 0.0.0.0 |
更改完之後要重新啟動一下後台的mongodb,讓設定生效
1 | sudo systemctl restart mongodb |