摘要:通過指定,并在生產(chǎn)線上關(guān)閉的接口來達(dá)到規(guī)避網(wǎng)絡(luò)進口的安全問題。避免同樣的悲劇在發(fā)生。上海小胖原創(chuàng)地址歡迎各位大神前來評論。每周五,敬請期待,上海小胖獨更。
序
原本這周想寫一個系列關(guān)于 GDPR(General Data Protection Regulation) MongoDB 的,但是昨天(2017.09.05)又爆出超2.6W 個MongoDB 節(jié)點被劫持。所以臨陣變卦,決定寫一篇關(guān)于MongoDB 安全的文章。
是什么心理讓各位Developer & DBAer 在發(fā)生了如此大的比特幣勒索 事件后,還是敢于裸奔1?縱使覺得數(shù)據(jù)不重要、有備份,出于對安全的意識,是不是也應(yīng)該使用一些安全保護措施呢?
現(xiàn)狀截止到我發(fā)稿前(2017.09.06 早7點),我再次驗證了目前的MongoDB 節(jié)點裸奔的情況,情況非常不容樂觀。通過查看 SHODAN, 我發(fā)現(xiàn)目前還有超過5W個節(jié)點的MongoDB 是在使用默認(rèn)端口27017的,其中老美和中國占據(jù)半壁江山
而在第一頁中,我就看到一個裸奔的節(jié)點
數(shù)據(jù)量并不大,為了驗證節(jié)點的有效性,這里僅作為論證參考,不對該節(jié)點進行任何影響。
從圖中,我們可以看到,這臺機器顯然并沒有逃過hacker的攻擊,當(dāng)hacker們攻擊了MongoDB的節(jié)點之后,會備份你的數(shù)據(jù),并刪除所有數(shù)據(jù),同時會刪除journal 日志,這樣就算是 Enterprise 版本,也審計不到了。
hacker的攻擊方式其實非常簡單,可以簡單分為以下幾步:
通過類似SHODAN 這樣的網(wǎng)站(諸如:ZoomEye 等)提供的API,進行全網(wǎng)掃描,MongoDB 那就是掃描27017端口
獲取到IP后,進行嗅探
如果可以獲取到登錄信息,那么運行腳本(備份全庫、清理journal、留下打款賬號信息)
具體的實現(xiàn),這里不做過多描述,目的不是為了教學(xué)攻破MongoDB,而是為了給大家敲響警鐘。
防范通過以上,我們可以清楚的意識到只要做到基本的防范措施,不處于裸奔狀態(tài),黑客就不會那么輕易的進入我們DB中了。
需要強調(diào)的是,MongoDB官方給出一個默認(rèn)不加密的配置,是為了方便developer的快速搭建環(huán)境,但并不意味著可以如此上線。
因此,在上線前,我們需要對照著MongoDB 官方給出的CheckList 去校驗一次。
Enable Access Control and Enforce Authentication首先肯定是打開我們的authentication。
打開方式非常簡單:
在admin數(shù)據(jù)庫中,創(chuàng)建一個admin 用戶
use admin db.createUser( { user: "myUserAdmin", pwd: "abc123", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )
在啟動項中加入--auth,或者在配置文件中加入 security.authorization: enabled.
mongod --auth --port 27017 --dbpath /data/db1
使用之前創(chuàng)建的myUserAdmin 用戶登錄mongo
mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"
在應(yīng)用庫中創(chuàng)建一個具有讀寫權(quán)限的應(yīng)用賬號。(注意:在MongoDB中,賬號跟著數(shù)據(jù)庫走,也就是說在哪個數(shù)據(jù)庫下創(chuàng)建的,該賬號就屬于哪個庫)
use test db.createUser( { user: "myTester", pwd: "xyz123", roles: [ { role: "readWrite", db: "test" }, { role: "read", db: "reporting" } ] } )Configure Role-Based Access Control
這里需要明確的是,MongoDB的基本安全分為兩種,一種是認(rèn)證,一種是鑒權(quán)。其實英語會說的比較明白點: authorization, authentication.
認(rèn)證是作為用戶登錄的一種賬號密碼校驗,類似MySQL 的 root/password ,在大部分應(yīng)用中,一旦創(chuàng)建一個連接(用于連接池的),那么該連接只會做一次,所以大可不必?fù)?dān)心因為認(rèn)證而帶來的開銷。
鑒權(quán)是在數(shù)據(jù)庫中的賬號擁有的權(quán)限做鑒定,類似MySQL中的privilege。
Encrypt Communication打開MongoDB 的TLS/SSl 的配置,社區(qū)版需要下載一個SSL版本,或者可以從社區(qū)版通過升級步驟升級到SSl版本,企業(yè)版自帶SSL。
SSL 可以保證MongoDB的 所有連接(輸入和輸出的連接)都是加密的。
Encrypt and Protect DataMongoDB 3.2 WT 引擎推出了一個新的加密功能,僅限企業(yè)版,可以對物理數(shù)據(jù)文件進行加密,若不打開,則默認(rèn)通過系統(tǒng)對文件進行加密。
Limit Network Exposure通過指定bindIp ,并在生產(chǎn)線上關(guān)閉MongoDB 的 Http 接口來達(dá)到規(guī)避網(wǎng)絡(luò)進口的安全問題。
Audit System ActivityMongoDB 企業(yè)版同時提供了審計功能,幫助用戶更好的巡檢自己的數(shù)據(jù)庫。
Run MongoDB with a Dedicated User使用mongodb 用戶 啟動MongoDB,而不是使用root 用戶
后續(xù)希望大家在經(jīng)過2次 MongoDB 的打劫后,都提高警惕了。把自己的生產(chǎn)節(jié)點都check 一遍。避免同樣的悲劇在發(fā)生。
上海小胖[MiracleYoung] 原創(chuàng)地址: https://segmentfault.com/u/shanghaixiaopang/articles
歡迎各位大神前來評論。
每周五,敬請期待,上海小胖[MiracleYoung] 獨更。
如果夏雨荷還在大明湖畔等著我的話,我就不更了。
裸奔在此處的解釋為,使用默認(rèn)端口27017,并對公網(wǎng)開放,未做任何防火墻措施,同時未開啟認(rèn)證和鑒權(quán)的MongoDB 數(shù)據(jù)庫。 ?
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/19097.html
摘要:開發(fā)人員常用的框架文檔及中文翻譯,包含系列文檔,日志,,,,數(shù)據(jù)庫,,等最新官方文檔以及對應(yīng)的中文翻譯。其它如果你有針對此網(wǎng)站好的建議或意見,也歡迎提更多的文檔和更多的文檔版本支持 開發(fā)人員常用的框架文檔及中文翻譯,包含 Spring 系列文檔(Spring, Spring Boot, Spring Cloud, Spring Security, Spring Session),日志(...
摘要:開發(fā)人員常用的框架文檔及中文翻譯,包含系列文檔,日志,,,,數(shù)據(jù)庫,,等最新官方文檔以及對應(yīng)的中文翻譯。其它如果你有針對此網(wǎng)站好的建議或意見,也歡迎提更多的文檔和更多的文檔版本支持 開發(fā)人員常用的框架文檔及中文翻譯,包含 Spring 系列文檔(Spring, Spring Boot, Spring Cloud, Spring Security, Spring Session),日志(...
摘要:如果刪除所有用替換其他寫了一個和結(jié)合的數(shù)據(jù)查詢服務(wù)細(xì)節(jié)可點擊鏈接到查看 1.系統(tǒng)環(huán)境 Golang:go version go1.10.3 darwin/amd64 OS:MacOS MongoDB: version: 3.4.4 2.Golang使用MongoDB 使用:gopkg.in/mgo.v2 獲取包:go get gopkg.in/mgo.v2 引入:impor...
閱讀 1814·2021-10-20 13:49
閱讀 1356·2019-08-30 15:52
閱讀 2863·2019-08-29 16:37
閱讀 1033·2019-08-29 10:55
閱讀 3064·2019-08-26 12:14
閱讀 1649·2019-08-23 17:06
閱讀 3235·2019-08-23 16:59
閱讀 2543·2019-08-23 15:42