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


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


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

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


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

審計(jì)后的記錄名可以通過查詢變量audit_json_log_file獲取:
- 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)目可以參考官方給的手冊:
https://github.com/mcafee/mysql-audit/wiki/Configuration

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