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


解壓插件后需要確認(rèn)mysql插件的安裝目錄:


將解壓出來(lái)的插件libaudit_plugin.so復(fù)制到插件的目錄下:

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


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

審計(jì)后的記錄名可以通過(guò)查詢變量audit_json_log_file獲?。?/p>
- Show variables like “audit_json_log_file”
默認(rèn)的審計(jì)記錄格式如下:

Json格式如下:

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

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

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