投稿者:admin 發(fā)表于:2014-07-02 點(diǎn)擊:1 Mongo的默認(rèn)安裝經(jīng)常會導(dǎo)致各種安全問題,,例如鳳凰網(wǎng)某系統(tǒng)和mongodb未授權(quán)訪問,。 今天我們來聊聊MongoDB的安全配置。 1.MongoDB安裝時不添加任何參數(shù),默認(rèn)是沒有權(quá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)限驗證,即使以–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)限,,包括:
2. readWrite角色 數(shù)據(jù)庫的讀寫權(quán)限,,包括: read角色的所有權(quán)限
3. dbAdmin角色 數(shù)據(jù)庫的管理權(quán)限,,包括:
4. userAdmin角色 數(shù)據(jù)庫的用戶管理權(quán)限 5. clusterAdmin角色 集群管理權(quán)限(副本集,、分片,、主從等相關(guān)管理),包括:
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安裝注意事項 1. 安裝的時候需要加–auth 加了–auth之后MongoDB才需要驗證 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)證生效 注:安裝的過程其實就是添加1個服務(wù),,指定啟動時候的參數(shù),。 0×03 用戶授權(quán) 1. 2.4之前版本的用戶管理方式 1.1、進(jìn)入admin創(chuàng)建一個管理賬號
1.2,、進(jìn)入需要使用的數(shù)據(jù)庫中創(chuàng)建一個程序使用用戶
2. 2.4版本的用戶管理,,也可使用之前版本的方式 2.1、進(jìn)入admin創(chuàng)建一個管理賬號
2.2,、進(jìn)入admin給使用的數(shù)據(jù)庫test創(chuàng)建一個對數(shù)據(jù)庫及日志擁有讀寫權(quán)限的賬戶
0×04 安全配置方案 1. 安裝的時候加–auth,,并立即在admin數(shù)據(jù)庫創(chuàng)建一個用戶 默認(rèn)情況下MongoDB是無需驗證的,所以這是至關(guān)重要的一步 2. 可以考慮安裝的時候修改端口和指定訪問ip 具體根據(jù)實際情況來設(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. 安裝
2. 添加用戶
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)上很多,,或者用工具連上去之后操作,。 0×06 管理工具 1. MongoVUE 客戶端形式的管理工具 2. rockmongo 基于php的web管理 不足之處求大牛指正!
|
|