MongoDB安全checklist及最優配置模板
最近 MongoDB “贖金事件”鬧得沸沸揚揚,不少公網上裸奔的 MongoDB 中招,有興趣的同學可以看下耗子叔寫的從 MONGODB “贖金事件” 看安全問題,中招的主要原因還是因為使用者的安全意識比較薄弱,部署的 MongoDB 完全沒有任何安全防護,可以通過公網訪問,並且沒有開啟鑑權
。
MongoDB 官方文件在安全方面做了很多總結,出了一個MongoDB Security Checklist,但從這次中招的規模來看,大部分使用者並沒有認真看過這個文件,這次事件也剛好是一個資料庫安全科普的好機會,希望所有的資料庫使用者都要重視自己的資料安全。
MongoDB 安全 Checklist,使用者可以做的安全措施包括
- 開啟鑑權 Enable Auth,並給所有需要訪問MongoDB資料庫的使用者配置合適的許可權(許可權最小化原則)
- 限制網路訪問,只允許從安全的網路環境訪問MongoDB,可以使用系統防火牆,或 MongoDB 自身的配置項bindIp來限制訪問來源
- 開啟訪問審計,記錄所有的使用者訪問行為,萬一出問題時有據可查
- 限制MongoDB程式的許可權,儘量建立單獨的使用者來管理MongoDB程式,不要用root帳號啟動
- 訪問鏈路加密、儲存的資料加密,不過絕大部分場景還不需要這麼高的安全級別,實在需要也可以配置上,會對效能有一定影響
- …
—
為了方便使用者快速進行合理的配置,給大家分享一個阿里雲資料庫MongoDB版的配置模板(為了簡化,稍有改動)。
資料組織,一個mongod程式對應一個工作目錄,包含data、etc、logs 3個目錄,分別儲存資料、配置、以及執行日誌
|-- $mymongo
|-- data
-- ***
|-- etc
-- keyfile
-- mongod.conf
|-- logs
-- mongod.pid
-- mongod.log
mongod.conf內容 (將$mymongo替換成你的工作目錄)
systemLog:
destination: file
logAppend: true
logRotate: rename
path: $mymongo/logs/mongod.log
timeStampFormat: iso8601-local
traceAllExceptions: false
verbosity: 0
processManagement:
fork: true
pidFilePath: $mymongo/logs/mongod.pid
net:
#bindIp: 127.0.0.1
port: 3001
http:
enabled: false
maxIncomingConnections: 1000
unixDomainSocket:
enabled: false
operationProfiling:
mode: slowOp
slowOpThresholdMs: 100
security:
authorization: enabled
keyFile: $mymongo/etc/keyfile
javascriptEnabled: false
replication:
oplogSizeMB: 5120
replSetName: myreplset
storage:
dbPath: $mymongo/data
directoryPerDB: true
syncPeriodSecs: 60
engine: wiredTiger
journal:
enabled: true
commitIntervalMs: 100
wiredTiger:
engineConfig:
cacheSizeGB: 4
基於上述模板,使用者可以根據自己的實際情況稍加修改,主要關注如下引數
引數 | 含義 | 說明 |
---|---|---|
systemLog.verbosity | 日誌級別 | 建議設定為0,如想記錄更多debug資訊,可修改該值為1-5,越大日誌越詳細 |
net.bindIp | 監聽的ip地址列表 | 預設監聽所有的ip,如果有多塊網路卡,可以選擇性的繫結,以限制不可信的網路訪問 |
net.port | 監聽斷開 | 預設27017,根據需要定製 |
net.maxIncomingConnections | 最大連線數 | 根據需要配置,保證系統最大檔案控制程式碼數大於該值(ulimit -n) |
operationProfiling.slowOpThresholdMs | 慢請求閾值 | 如無特殊需求,建議使用預設的100ms,超過該值的請求會記錄到對應db的system.profile集合裡 |
replication.replSetName | 複製集名字 | 強烈建議部署複製集提供服務,名字隨便定製 |
replication.oplogSizeMB | oplog大小 | 預設為磁碟空間5%,無特殊需求建議保持預設值 |
security.authorization | 是否開啟鑑權 | 強烈建議開啟 |
security.keyFile | 複製集內部鑑權的keyfile路徑 | 複製集要開啟鑑權,必須配置keyfile,用於複製整合員間的鑑權 |
security.javascriptEnabled | 是否支援server端js,比如$where、mapreduce需要server端js的支援 | 如無必要,建議關閉 |
storage.directoryPerDB | 每個db一個單獨的目錄儲存 | 強烈建議,以充分發揮檔案系統優勢 |
storage.engine | 儲存引擎 | 強烈建議使用wiredtiger,低成本 + 高效能 |
storage.wiredTiger.engineConfig.engineConfig | wireditger cache大小 | 預設 max(1, 0.6 * RAM) |
storage.journal.enabled | 是否開啟journal | 強烈建議開啟 |
storage.journal.commitIntervalMs | journal 刷盤間隔 | 預設100ms,建議保持預設值 |
上述引數,對於不確定含義或拿不準的引數可以直接使用預設值 (配置項行首加 # 即可註釋掉配置)。
使用上述模板啟動 MongoDB 服務後,使用者可以先通過localhost/127.0.0.1來連線 MongoDB,建立第一個管理使用者,接下來就可以用管理使用者登入做進一步的操作。
—
要想讓MongoDB發揮最佳的效果,瞭解其各項配置含義來優化配置是非常有必要的,如果想完全免去資料庫運維的煩惱,專注於業務開發,則可直接使用阿里雲資料庫MongoDB版,主要特性包括:
- 完全相容MongoDB 3.2版本,開啟鑑權、保證資料庫安全
- 3節點複製集,保證資料高可靠、服務高可用,即將推出分片叢集(MongoDB Sharded Cluster)
- 提供全量、增量備份功能,即使資料被誤刪,也能恢復到任意時間點
- 提供資料庫操作審計功能,使用者的所有操作都記錄審計日誌,有據可查
- 支援VPC環境,支援使用者白名單功能
- …
相關文章
- MySQL最優配置模板( 5.6&5.7轉)MySql
- mongodb叢集搭建及配置安全認證MongoDB
- MongoDB安全配置MongoDB
- 簡單的 web 安全 checklistWeb
- 01 . MongoDB簡介及部署配置MongoDB
- mongodb索引及查詢優化分析MongoDB索引優化
- MongoDB Windows環境安裝及配置MongoDBWindows
- Mongodb在Windows下安裝及配置MongoDBWindows
- Oracle Performance ChecklistOracleORM
- Oracle DBA ChecklistOracle
- Mongodb 配置複製集,並啟用安全校驗MongoDB
- Mongodb優化MongoDB優化
- 網路效能優化及安全保障優化
- MongoDB 安全&安全檢查列表MongoDB
- Tomcat部署解析及配置優化Tomcat優化
- mongodb效能優化MongoDB優化
- Tape-out Checklist FormORM
- MongoDB 映象配置方法MongoDB
- Mongodb主從配置MongoDB
- 【mongodb安裝配置】MongoDB
- sift、surf、orb 特徵提取及最優特徵點匹配ORB特徵
- Laravel 配置雙模板Laravel
- SVN安裝配置及安全注意事項
- Tomcat—部署配置及優化(安裝部署;虛擬主機配置;優化)Tomcat優化
- HBase記憶體配置及JVM優化記憶體JVM優化
- MongoDB Page Fault 的發現與解決、騰訊雲 MongoDB 智慧診斷及優化實踐MongoDB優化
- mongodb配置檔案常用配置項MongoDB
- 從實踐中尋找webpack4最優配置Web
- tomcat配置調優與安全總結(轉)Tomcat
- 搭建高可用MongoDB叢集(一):配置MongoDBMongoDB
- 直播分享| 騰訊雲 MongoDB 智慧診斷及效能優化實踐MongoDB優化
- MongoDB最佳安全實踐MongoDB
- Oracle/雲MySQL/MsSQL“大遷移”真相及最優方案OracleMySql
- Android啟動頁黑屏及最優解決方案Android
- jemalloc Mongodb Nginx 優化MongoDBNginx優化
- MongoDB效能優化指南MongoDB優化
- 做機器學習專案的checklist機器學習
- 【MongoDB】安裝與配置MongoDB