經仔細閱讀分析該案例后,發現常易被人忽視的日常安全運營之安全基線工作即能輕松預防和避免該類事件的發生,詳細分析如下:
一、案例成因分析
1. 背景信息
2. 數據泄露原因技術分析
從Gevers在推特上發的截圖和描述可以初步分析如下,該公司使用MongoDB數據庫存放人臉識別等個人敏感數據,該數據庫實例服務使用MongnDB安裝缺省端口27017,該服務端口可由互聯網直接訪問,該數據庫未啟用身份認證機制,即允許任何人訪問。
事件產生原因:該公司對存放人臉識別敏感數據的MongoDB數據庫使用了出場安裝缺省配置,未進行日常安全運營中的安全基線工作,存在嚴重安全漏洞導致了此事件的發生。
二、安全運營之安全基線工作的預防能力介紹
在日常安全運營中的安全基線工作中,企業的安全團隊會針對公司使用的各種系統、軟件和數據庫開發和發布相應的安全基線標準,在系統上線前進行部署和合規性檢查,經檢查只有在與公司的安全基線標準符合的前提下才允許上線,這樣就可以避免由于各種系統、軟件和數據庫由于使用廠家出廠不安全缺省配置導致的安全漏洞問題,有效地降低和控制安全風險。
下面針對該案例摘錄部分MangoDB安全基線內容如下:
1. 端到端安全架構設計
MongoDB端到端安全架構設計如下圖所示,從人員、過程和產品(技術)三個維度進行縱深安全體系防護,分別通過訪問控制、加密和審計來實施。
網絡安全架構部署參照下圖,通過兩層防火墻將WEB/應用服務器和MongoDB數據庫服務器分別隔離在不同的兩個DMZ類進行網絡區域隔離和分層網絡訪問控制,數據庫服務器通過防火墻訪問規則控制只能由DMZ1區域內的應用服務器訪問,避免了將其直接暴露給互聯網的安全風險問題。
2. 啟用MongoDB數據庫身份認證功能
身份認證功能狀態檢查:
- cat /etc/mongod.conf | grep “Auth=”
如果身份認證功能已啟用,則Auth的設置值為“True”。
激活身份認證功能步驟:
(1)啟動未激活身份認證功能的MongoDB數據庫實例;
- mongod --port 27017--dbpath /data/db1
(2)創建數據庫系統管理員用戶,并確保設置的口令符合組織口令策略的要求;
- use admin db.createUser(
- {
- user: "siteUserAdmin", pwd:"password",
- roles: [ { role: "userAdminAnyDatabase",db: "admin" } ]
- }
- )
(3)重啟已激活身份認證功能的MongoDB數據庫實例。
- mongod --auth--config /etc/mongod.conf
3. 確保MongoDB數據庫實例只在授權的接口上偵聽網絡連接
當前數據庫實例網絡偵聽狀態檢查:
檢查MongoDB配置文件;
- cat /etc/mongod.conf |grep –A12“net”| grep “bindIp“
檢查相關網絡訪問控制設置;
- iptables –L
配置數據庫實例偵聽在指定網絡接口并用防火墻規則進行嚴格訪問控制,應只允許DMZ區域里的應用服務器連接,下面以主機防火墻iptables示例配置如下。
- iptables -A INPUT -s <ip-address> -p tcp--destination-port 27017 -m state --state NEW,ESTABLISHED -j ACCEPT
- iptables -A OUTPUT -d <ip-address> -p tcp--source-port 27017 -m state --state ESTABLISHED -j ACCEPT
如上對比分析可以看出,如果企業在日常安全運營中,認真嚴格地按照MongoDB數據庫安全基線標準執行的話,就能夠有效地預防和避免類似大數據泄露案例的發生。
Reference:
https://github.com/cn-quantumsec/Diaoyu-Castle-Sec-Benchmark-Project