1. 啟用MongoDB審計功能
在Debian系統中,MongoDB的審計功能需通過修改配置文件/etc/mongod.conf
開啟。在security
部分添加以下配置(支持BSON或JSON格式,推薦JSON便于后續分析):
security:
auditLog:
destination: file # 日志輸出到文件
format: JSON # 日志格式(可選JSON/CSV/BSON)
path: /var/log/mongodb/audit.json # 日志文件路徑
# 可選:通過filter過濾日志(如僅記錄嚴重級別≥1的事件)
# filter: '{ "severity": { "$gte": 1 } }'
修改完成后,重啟MongoDB服務使配置生效:
sudo systemctl restart mongod
驗證審計功能是否開啟,可通過MongoDB shell執行以下命令,若返回true
則表示成功:
mongo --eval "db.runCommand({ getParameter: 1, auditLog: 1 })"
2. 配置審計過濾策略
為減少無關日志占用空間,可通過filter
參數指定審計范圍。例如:
filter: '{ "operationType": { "$in": ["createUser", "dropUser"] } }'
admin
數據庫的訪問:filter: '{ "db": "admin" }'
修改mongod.conf
中的filter
字段后,重啟MongoDB服務即可應用新策略。如需臨時調整過濾條件,可直接在MongoDB shell中執行:
use admin
db.setAuditLogDestination("file", { format: "JSON", path: "/var/log/mongodb/audit.json" })
db.getAuditLogOptions().filter = '{ "operationType": { "$in": ["createUser", "dropUser"] } }'
3. 加固操作系統及MongoDB基礎安全
審計功能需配合基礎安全措施才能發揮最大效果:
mongod.conf
的security
部分添加authorization: enabled
,強制用戶登錄后才能訪問數據庫。mongod.conf
中的net.bindIp
參數,僅允許受信任的IP地址訪問(如本機127.0.0.1
或特定內網IP)。net.ssl.mode: requireSSL
并指定證書路徑(PEMKeyFile
),確保數據傳輸安全。mongodb
)運行MongoDB服務,限制其對系統文件的訪問權限。4. 定期監控與分析審計日志
審計日志需定期檢查以識別異常行為:
tail
命令實時查看日志:tail -f /var/log/mongodb/audit.json
grep
過濾關鍵操作、awk
統計操作頻率):# 查找所有用戶創建操作
grep 'operationType": "createUser"' /var/log/mongodb/audit.json
# 統計每日登錄次數
awk -F'"timestamp":' '{print $2}' /var/log/mongodb/audit.json | cut -d' ' -f1 | uniq -c