当前位置: 首页 > 工具软件 > mysql-audit > 使用案例 >

MySQL Audit Plugin Mcafee安装详解

楮庆
2023-12-01

概述

MySQL社区版本没有官方的审计插件,可选择的只有MariaDB的审计插件Mcafee.其中由于我们环境使用的MySQL8, 而MariaDB的审计插件不支持MySQL8,所以只有选择Mcafee.

建议 1: 如果是您的MySQL版本为5.7时,建议使用MariaDB的审计插件.


准备

Mcafeex需要关闭SElinux,可以参考文档,可以先临时关闭(不用重启服务器):

setenforce 0

在下载Mcafee之前,请使用下面的命令查看你的MySQL版本:

mysql -V

当前我的MySQL版本为:
mysql Ver 8.0.25 for Linux on x86_64 (MySQL Community Server - GPL)

确定MySQL版本非常重要,因为不同的版本需要选择对应版本的插件.

建议 2: 在生产环境中选择软件的版本非常重要: 第一要选择永久支持版本; 第二尽量不要使用最新版本,除非老版本无法满足你的需求.

确定了MySQL版本后,我们就可以选择Mcafee插件的版本了.首先查看Mcafee插件的所有版本,然后找到支持您MySQL的插件版本.例如,支持我们环境的插件版本为v1.1.9.然后在Assets 里(一般是折叠起来的,睁大眼睛!)找到满足你环境的zip包,服务器一般是linux-x86_64,我选择的是audit-plugin-mysql-8.0-1.1.9-974-linux-x86_64.zip.在linux上可以直接下载:

wget https://github.com/mcafee-enterprise/mysql-audit/releases/download/v1.1.9/audit-plugin-mysql-8.0-1.1.9-974-linux-x86_64.zip

然后, 直接使用命令解压缩:

unzip audit-plugin-mysql-8.0-1.1.9-974-linux-x86_64.zip

安装

准备好环境后,然后就可以安装审计插件了.安装步骤也可以参考官方文档.安装步骤如下:

查找MySQL插件目录

首先, 登录您的MySQL:

mysql -uroot -p

然后,在MySQL中查询插件目录:

show global variables like 'plugin_dir';

默认MySQL的插件目录为/usr/lib64/mysql/plugin/

将插件文件移动到插件目录

接着, 将zip包中lib目录下的libaudit_plugin.so移动到插件目录:

cp audit-plugin-mysql-8.0-1.1.9-974-linux-x86_64/lib/libaudit_plugin.so /usr/lib64/mysql/plugin/ 

将插件文件修改为可执行文件

将文件移动到插件目录后,需要使用shell命令将文件修改为可执行文件:

chmod a+x /usr/lib64/mysql/plugin/libaudit_plugin.so

加载插件

加载插件有两种方式,第一种方式是使用SQL语句直接加载:

INSTALL PLUGIN AUDIT SONAME 'libaudit_plugin.so';

第二种方式是使用plugin-load,即在my.cnf文件中的[mysqld]下添加:

plugin-load=AUDIT=libaudit_plugin.so 

官方建议生产环境中使用第二种方式.
另外, 第二种方式在my.cnf文件中添加配置后需要重启.另外,Mcafee插件支持其它配置参数可以一并放到my.cnf中:

plugin-load=AUDIT=libaudit_plugin.so
audit_json_file=on
audit_force_record_logins=on
audit_json_file_sync=1

验证

经过上面的步骤,我们的插件是否安装成功了呢?是骡子是马,拉出来溜溜.在MySQL中执行下面SQL语句:

show plugins;
show global status like 'AUDIT_version';

如果上面两个命令正常输出,那恭喜您,插件安装成功.

接下来,需要手动打开插件:

SET GLOBAL audit_json_file=on;

最后就可以查看MySQL data目录下的日志文件了,当然你可能不知道你的data目录在哪里,那么可以通过下面的SQL查看data目录:

SHOW VARIABLES WHERE Variable_Name = 'datadir'

然后可以查看审计日志文件,审计文件默认名字为mysql-audit.json,审计文件为JSON格式的数据,你可以查看一下是否正确记录了你所有的操作.

日志自动切分

Mcafee Audit Plugin 有一个致命的缺点,那就是无法实现审计日志文件无法自动切分,这种情况下,基本无法在产线使用,于是我们可以借助logrotate来实现自动日志切分,我们只用在目录/etc/logrotate.d下添加一个配置文件mcafee-audit(文件名任意)即可,文件内容为:

/var/lib/mysql/mysql-audit.json {
        daily
        copytruncate
        compress
        minsize 1M
        rotate 10
        dateext
        dateformat .%Y-%m-%d
        sharedscripts
        postrotate
            mysql -e "set global audit_json_file_flush=on" -uroot -p"******"
        endscript
}

关于文件内容大家请参考: https://github.com/mcafee-enterprise/mysql-audit/issues/140

Bugfix

完成了上面的步骤如果仍然没有安装成功,大家不要灰心,征途才刚刚开始.

如果在验证时没有发现audit插件或者报错,大家一定要从头开始,第一个要确认的是你的插件版本是支持你的MySQL版本的,如果不支持那本文章也无法为你解决.

如果插件支持你的版本,那么我们可以解决那些可能的问题,首先可以参考官方Issues,如果你的问题刚好和能在Issues里面找到,这可以直接按照解决方法解决问题.

遇到插件加载问题时,mysql命令行里面输出的错误日志并不完整,我们可以查看mysql日志文件的error信息.我们可以通过下面的SQL语句查看mysql的错误日志位置:

show variables like 'log_error';

然后可以看到插件加载的详细日志.例如,我遇到的问题如下:
Audit Plugin: unable to protect page and nx bit enabled. This may happen if you have SELinux enabled. Disable SELinux execmod protection for mysqld. Page: 0x7f762972c000, Size: 4096

明显是Linux安全问题,即需要我们关闭SELinux,关闭后,我们可以重启MySQL然后重新加载或者验证发现当前问题已经解决.

建议 3: 大家遇到问题后,一定要先查看官方文档,查看是否配置出错,或者官方是否有相关的Issue, 如果还是无法解决,可以加入官方的讨论组,或者直接创建Issue,然后寻求找到解决方案

 类似资料: