MySQL McAfee审计插件Audit Plugin安装

发布时间 2023-04-16 23:20:02作者: PiscesCanon

 

MySQL McAfee审计插件Audit Plugin安装

 

官网下载:https://github.com/trellix-enterprise/mysql-audit/releases

官方文档:https://github.com/trellix-enterprise/mysql-audit/wiki

防爬虫:https://www.cnblogs.com/PiscesCanon/p/17324406.html 

 

注意要对应你的数据库软件版本来下载,一开始我测试的MySQL是8.0.29。

Audit Plugin没有一个支持8.0.29的插件版本,于是用了下边截图这个,

默认我以为支持了8.0.30,也应该向下兼容29的版本,然后折腾半天就是无法安装成功,设置偏移量也是报错,后边升级成30就好了。

 

安装如下

查看插件目录位置。

(root@localhost 22:45:11) [performance_schema](27538)> show global variables like 'plugin_dir';
+---------------+------------------------------+
| Variable_name | Value                        |
+---------------+------------------------------+
| plugin_dir    | /usr/local/mysql/lib/plugin/ |
+---------------+------------------------------+
1 row in set (0.10 sec)

 

 

 解压并将libaudit_plugin.so文件拷贝到插件目录位置。

unzip audit-plugin-mysql-8.0-1.1.13-1008-linux-x86_64.zip 
cd audit-plugin-mysql-8.0-1.1.13-1008/lib
chown mysql:mysql libaudit_plugin.so 
cp -p libaudit_plugin.so /usr/local/mysql/lib/plugin/

 

 

安装插件。

在线安装,但是重启失效:

INSTALL PLUGIN AUDIT SONAME 'libaudit_plugin.so';
set global audit_json_file=on;

 

 

audit_json_file=on表示启用审计,上边只是安装插件而已。

 

永久生效的话将配置加入my.cnf中:

[mysqld]
plugin-load=AUDIT=libaudit_plugin.so
audit_whitelist_users=root,mysql.infoschema,mysql.session,mysql.sys
audit_json_file=on

 

 

audit_whitelist_users=root,mysql.infoschema,mysql.session,mysql.sys表示后边指定的用户不进行审计。

audit_json_file表示启用审计,第一条命令只是安装插件而已。

 

校验检查:

show plugins;

 

如果显示有“AUDIT”的话表示安装成功。

此外,也可以通过运行以下命令来验证 AUDIT 插件的版本:

(root@localhost 22:53:49) [performance_schema](27538)> show global status like 'AUDIT_version';
+---------------+-------------+
| Variable_name | Value       |
+---------------+-------------+
| Audit_version | 1.1.13-1008 |
+---------------+-------------+
1 row in set (0.01 sec)

 

 

审计日志文件默认名字为:mysql-audit.json,位于数据文件目录下。

可通过audit_json_log_file=/data/logs/mysql/mysql_audit.json同时修改位置和文件名。

 

摘取日志一行内容:

{"msg-type":"activity","date":"1681657153276","thread-id":"27591","query-id":"38716111","user":"midb_decl","priv_user":"midb_decl","ip":"192.168.1.153","host":"192.168.1.153","_client_name":"libmysql","_thread":"4580","_client_version":"8.0.31","_os":"win","_platform":"AMD64","_pid":"2980","rows":"1","status":"0","cmd":"select","query":"SELECT 0"}

 

 

其他都好理解,这个“date”的表示方法简直无语,UTC下的unix毫秒级的时间戳。

下边展示如何转化为人能看懂的方法。

(root@localhost 23:03:24) [performance_schema](27631)> select FROM_UNIXTIME(1681657153276/1000,'%Y-%m-%d %H:%i:%s') as date;
+---------------------+
| date                |
+---------------------+
| 2023-04-16 22:59:13 |
+---------------------+
1 row in set (0.00 sec)

 

 

反过来,查看当前时间,展示为UTC的unix毫秒级时间戳。

[root@dev-app81 ~]# echo $[`date -u +%s`*1000]
1681657641000

 

 

也可指定时间,

[root@dev-app81 ~]# echo $[`date -d "2023-04-13 15:32:12" +%s`*1000]
1681371132000

 

 

就这样吧。

更加详细的用法信息查看官方文档。

 

这里也有一篇各个审计方式的介绍,挺牛逼的。

推荐看看:MySQL的审计功能实现方案