我剛剛設置了MongoDB,並且持有mongoose
以及當我按照連接到數據庫的一些教程時,我注意到默認情況下不需要用戶/密碼,這導致我出現以下問題:我需要爲MongoDB啓用身份驗證嗎?
這是轉移到生產時的安全問題嗎?我需要採取哪些安全措施?任何人都可以遠程訪問MongoDB嗎?如果是這樣,如何抑制。
我剛剛設置了MongoDB,並且持有mongoose
以及當我按照連接到數據庫的一些教程時,我注意到默認情況下不需要用戶/密碼,這導致我出現以下問題:我需要爲MongoDB啓用身份驗證嗎?
這是轉移到生產時的安全問題嗎?我需要採取哪些安全措施?任何人都可以遠程訪問MongoDB嗎?如果是這樣,如何抑制。
是的,如果可以從互聯網訪問(即沒有防火牆,有弱/無密碼,或只綁定到本地主機),這是有問題的。攻擊者可能很容易訪問您的數據庫並讀取所有數據。這不僅僅是一個理論上的威脅,請參閱http://www.cso.com.au/article/566040/students-find-40k-unprotected-mongodb-databases-8-million-telco-customer-records-exposed/最近的「indicent」。
該mongodb開發人員提供了一個security checklist並且還提供了一個security tutorial。
因此,至少設置一個password,最多隻能設置bind it to localhost(如果其他用戶也可以訪問該計算機,則也會出現問題),以防止暴力攻擊。
綁定到localhost部分(有nobdy別人訪問我的機器)似乎是最合理的答案。我也會去授權憑證!謝謝 – Eduard
確實,你偶然發現了一個有效的問題。
你看看這個來源:
http://mongodb.github.io/node-mongodb-native/contents.html
並且具有做這種東西代碼:
var Db = require('mongodb').Db,
MongoClient = require('mongodb').MongoClient,
BSON = require('mongodb').pure().BSON,
assert = require('assert');
var db = new Db('integration_tests', new Server("127.0.0.1", 27017,
{auto_reconnect: false, poolSize: 4}), {w:0, native_parser: false});
// Establish connection to db
db.open(function(err, db) {
assert.equal(null, err);
// Add a user to the database
db.addUser('user', 'name', function(err, result) {
assert.equal(null, err);
// Authenticate
db.authenticate('user', 'name', function(err, result) {
assert.equal(true, result);
db.close();
});
});
});
只是增加了更多的資源,你可能想看看at:
希望這是你的追求productionizing MongoDB的一個很好的起點!
安全性應該是一種多層次的方法。
27017
上的MongoDB流量才能從網絡服務器訪問MongoDB機器。ssh
從需要訪問它們的特定IP地址訪問MongoDB機器或Web服務器。27017
,和任何人誰妥協的Web服務器將能夠從源代碼中提取MongoDB的密碼服務器。總之,不,你並不需要身份驗證,但它可以添加額外的安全層。其他層次更重要。
檢查 - https://docs.mongodb.org/v2.6/tutorial/add-admin-user/ –