一、MySQL AUDIT简介
MySQL AUDIT Plugin是一个MySQL安全审计插件,由McAfee提供,设计强调安全性和审计能力。该插件可用作独立审计解决方案,或配置为数据传送给外部监测工具。支持版本为MySQL (5.1, 5.5, 5.6, 5.7),MariaDB (5.5, 10.0, 10.1) ,Platform (32 or 64 bit)。从Mariadb 10.0版本开始audit插件直接内嵌了,名称为server_audit.so,可以直接加载使用。
安装插件的方式优缺点:
缺点:日志信息比较大,对性能影响大。
优点:记录每个用户的命令执行操作。
环境信息
Mysql版本:5.7.37
下载地址:https://github.com/mcafee/mysql-audit
注:版本并不通用,自行根据Mysql版本下载对应的版本插件
1、下载插件安装包
[root@localhost ~]# wget https://github.com/mcafee-enterprise/mysql-audit/releases/download/v1.1.12/audit-plugin-mysql-5.7-1.1.12-999-linux-x86_64.zip
2、解压
[root@localhost ~]# unzip audit-plugin-mysql-5.7-1.1.12-999-linux-x86_64.zip
3、查看当前Mysql的插件目录
mysql> show global variables like 'plugin_dir';
4、拷贝插件到插件目录并授权
[root@localhost ~]# cp audit-plugin-mysql-5.7-1.1.12-999/lib/libaudit_plugin.so /usr/local/mysql/lib/plugin/
[root@localhost ~]# chown -R mysql.mysql /usr/local/mysql/lib/plugin/libaudit_plugin.so
5、安装插件
mysql> INSTALL PLUGIN AUDIT SONAME 'libaudit_plugin.so';
Query OK, 0 rows affected (0.61 sec)
6、开启审计,写入my.cnf配置文件
[root@localhost ~]# vim /etc/my.cnf
添加[mysqld]段以下内容
audit_json_file = on
plugin-load=AUDIT=libaudit_plugin.so
audit_record_cmds='insert,delete,update,create,drop,alter,grant,truncate'
audit_json_log_file=/data/mysql/mysql-audit.json
7、重启Mysql服务,验证插件是否配置正确
[root@localhost ~]# /etc/init.d/mysqld restart
Shutting down MySQL... SUCCESS!
Starting MySQL.. SUCCESS!
8、查看安装的插件版本信息
mysql> show plugins;
mysql> show global status like 'AUDIT_version';
9、查看插件有哪些可配置参数
mysql> show variables like '%audit%'\G
其中我们需要关注的参数有:
1. audit_json_file
是否开启audit功能。
2. audit_json_log_file
记录文件的路径和名称信息(默认放在mysql数据目录下)。
3. audit_record_cmds
audit记录的命令,默认为记录所有命令。可以设置为任意dml、dcl、ddl的组合。如:audit_record_cmds=select,insert,delete,update。还可以在线设置set global audit_record_cmds=NULL。(表示记录所有命令)
4. audit_record_objs
audit记录操作的对象,默认为记录所有对象,可以用SET GLOBAL audit_record_objs=NULL设置为默认。也可以指定为下面的格式:audit_record_objs=,test.*,mysql.*,information_schema.*。
5. audit_whitelist_users
用户白名单。
10、写入测试数据
mysql> create database test;
Query OK, 1 row affected (0.00 sec)
mysql> use test;
Database changed
mysql> create table Name(id int,info varchar(100));
Query OK, 0 rows affected (0.02 sec)
mysql> insert into Name values(1,'xiaoming');
Query OK, 1 row affected (0.02 sec)
mysql> select * from Name;
+------+----------+
| id | info |
+------+----------+
| 1 | xiaoming |
+------+----------+
1 row in set (0.00 sec)
mysql> insert into Name values(2,'xiaowang');
Query OK, 1 row affected (0.01 sec)
mysql> delete from Name where id=1;
Query OK, 1 row affected (0.01 sec)
mysql> truncate Name;
Query OK, 0 rows affected (0.02 sec)
mysql> drop table Name;
Query OK, 0 rows affected (0.02 sec)
mysql> drop database test;
Query OK, 0 rows affected (0.00 sec)
11、查看审计日志文件
[root@localhost ~]# tail -100f /data/mysql/mysql-audit.json
12、参数配置
参考地址:https://github.com/mcafee/mysql-audit/wiki/Configuration
13、插件卸载
[root@localhost ~]# vim /etc/my.cnf
# 删除前面添加的配置,添加以下配置
audit_uninstall_plugin=1
14、重启Mysql服务
[root@localhost ~]# /etc/init.d/mysqld restart
Shutting down MySQL.. SUCCESS!
Starting MySQL.. SUCCESS!
15、卸载插件
注意:需要执行两次即可卸载
mysql> uninstall plugin AUDIT;
ERROR 1620 (HY000): Uninstall AUDIT plugin must be called again to complete
mysql> uninstall plugin AUDIT;
Query OK, 0 rows affected, 1 warning (0.00 sec)
16、配置my.cnf
# 删除刚才添加的配置audit_uninstall_plugin=1,否则下次重启Mysql报错
若文章图片、下载链接等信息出错,请在评论区留言反馈,博主将第一时间更新!如本文“对您有用”,欢迎随意打赏,谢谢!
评论