這篇文章將為大家詳細(xì)講解有關(guān)如何解決MongoDB各種安全隱患問題,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、海淀網(wǎng)絡(luò)推廣、小程序定制開發(fā)、海淀網(wǎng)絡(luò)營銷、海淀企業(yè)策劃、海淀品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供海淀建站搭建服務(wù),24小時服務(wù)熱線:13518219792,官方網(wǎng)址:www.rwnh.cn
Mongo的默認(rèn)安裝經(jīng)常會導(dǎo)致各種安全問題,例如鳳凰網(wǎng)某系統(tǒng)和mongodb未授權(quán)訪問。
今天我們來聊聊MongoDB的安全配置。
1.MongoDB安裝時不添加任何參數(shù),默認(rèn)是沒有權(quán)限驗(yàn)證的,登錄的用戶可以對數(shù)據(jù)庫任意操作而且可以遠(yuǎn)程訪問數(shù)據(jù)庫,需以–auth參數(shù)啟動。
2.在剛安裝完畢的時候MongoDB都默認(rèn)有一個admin數(shù)據(jù)庫,此時admin數(shù)據(jù)庫是空的,沒有記錄權(quán)限相關(guān)的信息。當(dāng) admin.system.users一個用戶都沒有時,即使mongod啟動時添加了–auth參數(shù),如果沒有在admin數(shù)據(jù)庫中添加用戶,此時不 進(jìn)行任何認(rèn)證還是可以做任何操作(不管是否是以–auth 參數(shù)啟動),直到在admin.system.users中添加了一個用戶。
3.MongoDB的訪問分為連接和權(quán)限驗(yàn)證,即使以–auth參數(shù)啟動還是可以不使用用戶名連接數(shù)據(jù)庫,但是不會有任何的權(quán)限進(jìn)行任何操作
4.admin數(shù)據(jù)庫中的用戶名可以管理所有數(shù)據(jù)庫,其他數(shù)據(jù)庫中的用戶只能管理其所在的數(shù)據(jù)庫。
5.在2.4之前版本中,用戶的權(quán)限分為只讀和擁有所有權(quán)限;2.4版本的權(quán)限管理主要分為:數(shù)據(jù)庫的操作權(quán)限、數(shù)據(jù)庫用戶的管理權(quán)限、集群的管理權(quán)限,建議由超級用戶在admin數(shù)據(jù)庫中管理這些用戶。不過依然兼容2.4版本之前的用戶管理方法。
0×01 MongoDB中用戶的角色說明
1. read角色
數(shù)據(jù)庫的只讀權(quán)限,包括:
aggregate,checkShardingIndex,cloneCollectionAsCapped,collStats,count,dataSize,dbHash,dbStats,distinct,filemd5,mapReduce (inline output only.),text (beta feature.)geoNear,geoSearch,geoWalk,group
2. readWrite角色
數(shù)據(jù)庫的讀寫權(quán)限,包括:
read角色的所有權(quán)限
cloneCollection (as the target database.),convertToCapped,create (and to create collections implicitly.),renameCollection (within the same database.)findAndModify,mapReduce (output to a collection.) drop(),dropIndexes,emptycapped,ensureIndex()
3. dbAdmin角色
數(shù)據(jù)庫的管理權(quán)限,包括:
clean,collMod,collStats,compact,convertToCappe create,db.createCollection(),dbStats,drop(),dropIndexes ensureIndex(),indexStats,profile,reIndex renameCollection (within a single database.),validate
4. userAdmin角色
數(shù)據(jù)庫的用戶管理權(quán)限
5. clusterAdmin角色
集群管理權(quán)限(副本集、分片、主從等相關(guān)管理),包括:
addShard,closeAllDatabases,connPoolStats,connPoolSync,_cpuProfilerStart_cpuProfilerStop,cursorInfo,diagLogging,dropDatabase shardingState,shutdown,splitChunk,splitVector,split,top,touchresync serverStatus,setParameter,setShardVersion,shardCollection replSetMaintenance,replSetReconfig,replSetStepDown,replSetSyncFrom repairDatabase,replSetFreeze,replSetGetStatus,replSetInitiate logRotate,moveChunk,movePrimary,netstat,removeShard,unsetSharding hostInfo,db.currentOp(),db.killOp(),listDatabases,listShardsgetCmdLineOpts,getLog,getParameter,getShardMap,getShardVersion enableSharding,flushRouterConfig,fsync,db.fsyncUnlock()
6. readAnyDatabase角色
任何數(shù)據(jù)庫的只讀權(quán)限(和read相似)
7. readWriteAnyDatabase角色
任何數(shù)據(jù)庫的讀寫權(quán)限(和readWrite相似)
8. userAdminAnyDatabase角色
任何數(shù)據(jù)庫用戶的管理權(quán)限(和userAdmin相似)
9. dbAdminAnyDatabase角色
任何數(shù)據(jù)庫的管理權(quán)限(dbAdmin相似)
0×02 MongoDB安裝注意事項(xiàng)
1. 安裝的時候需要加–auth
加了–auth之后MongoDB才需要驗(yàn)證
2. 需要加–nohttpinterface
不加會有一個28017的端口監(jiān)聽,可以通過網(wǎng)頁管理mongodb,不需要請去掉
3. 可以加–bind_ip
加之后可以限制訪問的ip
4. 可以加–port
加了之后可以重新制定端口,默認(rèn)為27017
5. 安裝完之后需立即在admin數(shù)據(jù)庫中添加一個用戶
只有在admin數(shù)據(jù)庫中添加一個用戶后才能使認(rèn)證生效
注:安裝的過程其實(shí)就是添加1個服務(wù),指定啟動時候的參數(shù)。
0×03 用戶授權(quán)
1. 2.4之前版本的用戶管理方式
1.1、進(jìn)入admin創(chuàng)建一個管理賬號
use admin db.addUser("test","test")
1.2、進(jìn)入需要使用的數(shù)據(jù)庫中創(chuàng)建一個程序使用用戶
use test db.addUser("test","test")默認(rèn)擁有讀寫權(quán)限 db.addUser("test","test",True)擁有讀取權(quán)限
2. 2.4版本的用戶管理,也可使用之前版本的方式
2.1、進(jìn)入admin創(chuàng)建一個管理賬號
use admin db.addUser("test","test")
2.2、進(jìn)入admin給使用的數(shù)據(jù)庫test創(chuàng)建一個對數(shù)據(jù)庫及日志擁有讀寫權(quán)限的賬戶
use admin db.addUser({ "user": "test", "pwd": "test", "roles": [ ], "otherDBRoles": { "test": [ "readWrite" ], "test_log": [ "readWrite" ] } })
0×04 安全配置方案
1. 安裝的時候加–auth,并立即在admin數(shù)據(jù)庫創(chuàng)建一個用戶
默認(rèn)情況下MongoDB是無需驗(yàn)證的,所以這是至關(guān)重要的一步
2. 可以考慮安裝的時候修改端口和指定訪問ip
具體根據(jù)實(shí)際情況來設(shè)定,也可以直接在服務(wù)器防火墻上做
3. 安裝的時候建議加上–nohttpinterface取消默認(rèn)的一個網(wǎng)頁管理方式
默認(rèn)的web管理一般不會用,且很多人不知道,***關(guān)閉
4. 管理用戶處理
因需要在admin中建立一個管理賬戶用于管理,***是設(shè)置強(qiáng)密碼,但是不要給其他程序使用
5. MongoDB服務(wù)運(yùn)行賬戶
windows下可以使用network service 或者新建一個用戶,使用默認(rèn)的USERS組,然后添加給予數(shù)據(jù)庫文件及日志存儲目錄的寫權(quán)限,并建議取消對cmd等程序的執(zhí)行權(quán)限。
linux下新建一個賬戶,給予程序的執(zhí)行權(quán)限和數(shù)據(jù)庫文件及日志目錄的讀寫權(quán)限,并建議取消對sh等程序的執(zhí)行權(quán)限。
6. 控制好網(wǎng)站或者其他程序使用的連接用戶權(quán)限
網(wǎng)站或者其他程序使用的用戶只給予對應(yīng)庫的權(quán)限,不要使用admin數(shù)據(jù)庫中的管理賬戶。
0×05 常用命令
1. 安裝
mongod --dbpath d:\mongodb\data --logpath d:\mongodb\log\mongodb.log ----nohttpinterface --auth --install
2. 添加用戶
use admin db.addUser("test","test")
3. 顯示所有數(shù)據(jù)庫
show dbs
4. 使用某個數(shù)據(jù)庫
use test
5. 連接數(shù)據(jù)庫
mongo test -uroot -p123456
6. 添加用戶認(rèn)證
db.auth("username","password")
7. 查看用戶
db.system.users.find()
就寫幾個基本的,其他的網(wǎng)上很多,或者用工具連上去之后操作。
06 管理工具
1. MongoVUE
客戶端形式的管理工具
2. rockmongo
基于php的web管理
關(guān)于如何解決mongoDB各種安全隱患問題就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
本文標(biāo)題:如何解決mongoDB各種安全隱患問題
當(dāng)前鏈接:http://www.rwnh.cn/article6/jepgog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、企業(yè)建站、云服務(wù)器、Google、做網(wǎng)站、動態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)