2014-09-24 38 views
3

所以我設法讓mongodb啓動並運行,在管理數據庫中添加了超級管理員用戶,並在我的測試表中添加了本地管理員用戶。我已經開始用的mongod如何拒絕未經身份驗證的連接到mongodb

mongod --dbpath ./ --auth 

但是,如果我從終端運行

mongo 

,我不能進行任何修改或閱讀,但我仍然似乎能嗅出使用

數據庫
use <DBNAME> 

如果沒有提供用戶名和密碼,是否可以完全拒絕與mongod實例的連接?

+0

'使用'可以讓您選擇任何數據庫名稱,不管它是否已經退出(或已驗證)。 – 2014-09-25 01:13:25

回答

4

這裏有一個誤解,use <dbname>將工作數據庫是否存在,不存在信息泄露,因爲它們不能運行show databasesshow collections確認的東西實際上是存在(因爲他們沒有足夠的權限)。未驗證的會話並不比原始的TCP套接字更好,它看起來更像是因爲您使用mongo shell作爲客戶端(您也可以運行mongo --nodb並執行任務,但這並不意味着任何事情都會受到影響,在這種情況下甚至沒有與數據庫的連接)。

所以,你要求的是一種拒絕連接之前,他們進行TCP連接。但是,在實際進行身份驗證之前,您必須首先進行TCP連接(否則,您如何與數據庫進行身份驗證?),因此,當您考慮分佈式數據庫的工作方式時,確實沒有多大意義。

如果您想拒絕除可信IP地址之外的連接並鎖定某些東西等,那麼這通常是一個好主意,但它是在數據庫之外,在iptables或您選擇的防火牆之外完成的。

相關問題