2017-08-03 95 views
-1

我有一個MongoDB的路由器,在命令行像這樣開始:如何要求在mongos路由器上進行身份驗證?

mongos --configdb mdbc1:27019,mdbc2:27019,mdbc3:27019 --keyFile /root/mongodb-keyfile & 

我可以連接到,沒有立即提供認證:

[[email protected] ~]# mongo 
MongoDB shell version: 3.0.15 
connecting to: test 

MongoDB的要求我驗證自己,然後才允許我做了更多的事情,但事實是它讓我連接而不提供證書是安全風險。

如何讓mongos路由器在接受連接之前要求傳遞用戶名/密碼組合?

關於重複:是的,我認爲這是重複的。但是,由於這兩個副本中的問題都沒有得到滿意的答覆,所以或許值得再次提問。

爲了進一步解釋:MySQL,SSH和類似的,要求提供有效的登錄信息,然後允許用戶進一步去請求服務器執行任何操作。但是,MongoDB似乎沒有這樣做 - 我可以連接到服務器的控制檯,並讓它運行各種密集的JavaScript,浪費資源並且是一種討厭的東西,這真的不應該被允許。我如何要求登錄是一個人絕對的第一件事?

+0

你真的可以運行密集的JavaScript,浪費資源,並且是一個滋擾,沒有被認證?是什麼讓你如此確信有任何安全風險? –

+0

是的,你真的可以。 作爲一個測試,我連接到一個mongo服務器,沒有進行身份驗證,只是寫了「while(1);」並回車。 我通過另一個終端上的「頂部」觀看了系統。它立即達到了100%的CPU使用率。 安全性方面,這不會讓你入侵。但它確實使服務器更有可能無法履行其常規職責,使得正確驗證的進程更可能失敗,因爲根本沒有足夠的CPU可用於他們。 –

+0

我可能對此有錯。再次檢查後,我意識到我正在Mongo服務器本身上執行localhost的測試。當我從另一臺機器嘗試它時,另一臺機器的負載上升 - 而不是Mongo服務器。 –

回答

0

首先,創建用戶管理員。

在admin數據庫中,添加具有userAdminAnyDatabase角色的用戶。

use admin 
db.createUser(
    { 
    user: "myUserAdmin", 
    pwd: "abc123", 
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] 
    } 
) 

然後斷開與--auth命令行選項蒙戈shell.Re-啓動的mongod實例或,如果使用一個配置文件,所述:例如,以下在管理數據庫中創建用戶myUserAdmin security.authorization設置。

mongod --auth --port 27017 --dbpath /data/db1 
+0

我正在使用mongos,而不是mongod。 mongos沒有--auth參數。 –

+0

我認爲https://docs.mongodb.com/v3.0/tutorial/enable-internal-authentication/文檔可以幫助你。 –

+0

這並沒有回答這個問題。實際上,它具體說「在沒有身份驗證連接的mongo shell中,切換到身份驗證數據庫,並使用db.auth()方法進行身份驗證」 我試圖解決的問題是,它不應該是可能的無需身份驗證連接 –

相關問題