簡單實現(xiàn)MySQL數(shù)據(jù)庫的日志審計
0x0 背景
由于MySQL社區(qū)版沒有自帶的審計功能或插件,對于等級保護當中對數(shù)據(jù)庫管理的要求的就存在一定的不滿足情況的,拋開條條框框不說數(shù)據(jù)庫的日志是值得研究的,通過收集數(shù)據(jù)庫的日志到企業(yè)SOC平臺便于安全事件的溯源與故障分析,配合目前的UEBA技術能夠輕松發(fā)現(xiàn)很多惡意事件。
根據(jù)等級保護內(nèi)容第四章“數(shù)據(jù)庫管理系統(tǒng)安全技術要求”中 第四節(jié)“數(shù)據(jù)庫安全審計”中明確提出數(shù)據(jù)庫管理系統(tǒng)的安全審計應:
1. 建立獨立的安全審計系統(tǒng);
2. 定義與數(shù)據(jù)庫安全相關的審計事件;
3. 設置專門的安全審計員;
4. 設置專門用于存儲數(shù)據(jù)庫系統(tǒng)審計數(shù)據(jù)的安全審計庫;
5. 提供適用于數(shù)據(jù)庫系統(tǒng)的安全審計設置、分析和查閱的工具。
0x1 部署插件
為了節(jié)省購買一些安全設備的費用,可以嘗試使用一些開源的日志審計插件。Mysql-audit是macfee公司基于percona開發(fā)的MySQL的SQL審計插件。
源碼地址如下:https://github.com/mcafee/mysql-audit
首先確定當前mysql的版本去官網(wǎng)下載與之相對應的插件:


解壓插件后需要確認mysql插件的安裝目錄:


將解壓出來的插件libaudit_plugin.so復制到插件的目錄下:

使用mysql的函數(shù)install plugin導入此插件后通過show plugin確認是否導入成功。
主要命令如下:
- install plugin audit soname ‘libaudit_plugin.so’


安裝完成之后并不會立馬開始審計內(nèi)容,需要定義一些參數(shù)。
Audit_json_file這個參數(shù)要整體控制是否開啟審計功能使用命令:
- Set variables audit_json_file=on
開啟審計功能:

審計后的記錄名可以通過查詢變量audit_json_log_file獲取:
- Show variables like “audit_json_log_file”
默認的審計記錄格式如下:

Json格式如下:

同時插件支持一些自定義的參數(shù)與命令,包括白名單與黑名單的功能。
Audit_whitelist_users: 不審計user用戶的所有命令
Aduit_record_cmds: 需要進行審計的命令種類

更多的參數(shù)配置項目可以參考官方給的手冊:
https://github.com/mcafee/mysql-audit/wiki/Configuration

0x2 總結
1、通過插件的方式可以實現(xiàn)mysql日志的審計通過ELK的框架實現(xiàn)日志的保存與分析,再通過后期寫一些腳本分析可以實現(xiàn)安全檢測與業(yè)務分析等多個功能,關鍵是零成本特別適合那些”一個人的安全部”有此需求的同行們。
2、根據(jù)一些測試數(shù)據(jù)表示,插件對性能的影響是比較大的約有20%左右的消耗需要結合具體的業(yè)務情況進行評估。