本实验的审计插件均是安装在 mysql-community-server-5.7.9 的服务器上。

插件安装(社区版)

插件下载地址:

解压:

# unzip audit-plugin-mysql-5.7-1.1.4-725-linux-x86_64.zipArchive: audit-plugin-mysql-5.7-1.1.4-725-linux-x86_64.zipcreating: audit-plugin-mysql-5.7-1.1.4-725/creating: audit-plugin-mysql-5.7-1.1.4-725/lib/inflating: audit-plugin-mysql-5.7-1.1.4-725/lib/libaudit_plugin.so

inflating: audit-plugin-mysql-5.7-1.1.4-725/COPYING

inflating: audit-plugin-mysql-5.7-1.1.4-725/THIRDPARTY.txt

inflating: audit-plugin-mysql-5.7-1.1.4-725/README.txt

inflating: audit-plugin-mysql-5.7-1.1.4-725/plugin-name.txt

creating: audit-plugin-mysql-5.7-1.1.4-725/utils/

查看MySQL的插件目录:

> show variables like 'plugin_dir';+---------------+------------------------------+

| Variable_name | Value |

+---------------+------------------------------+

| plugin_dir | /usr/local/mysql/lib/plugin/ |

+---------------+------------------------------+

复制库文件到MySQL库目录下:

# cp audit-plugin-mysql-5.7-1.1.4-725/lib/libaudit_plugin.so /usr/local/mysql/lib/plugin/#chmod a+x libaudit_plugin.so

进入mysql命令窗口,安装插件:

> install plugin audit soname 'libaudit_plugin.so';

Query OK,0 rows affected (0.06 sec)

查看mysql当前已经加载了哪些插件:

>show plugins;+----------------------------+----------+--------------------+--------------------+---------+

| Name | Status | Type | Library | License |

+----------------------------+----------+--------------------+--------------------+---------+

| binlog | ACTIVE | STORAGE ENGINE | NULL | GPL |

| mysql_native_password | ACTIVE | AUTHENTICATION | NULL | GPL |

| sha256_password | ACTIVE | AUTHENTICATION | NULL | GPL |

| MyISAM | ACTIVE | STORAGE ENGINE | NULL | GPL |

| PERFORMANCE_SCHEMA | ACTIVE | STORAGE ENGINE | NULL | GPL |

| InnoDB | ACTIVE | STORAGE ENGINE | NULL | GPL |

| INNODB_TRX | ACTIVE | INFORMATION SCHEMA | NULL | GPL |

| INNODB_LOCKS | ACTIVE | INFORMATION SCHEMA | NULL | GPL |…………| MRG_MYISAM | ACTIVE | STORAGE ENGINE | NULL | GPL |

| MEMORY | ACTIVE | STORAGE ENGINE | NULL | GPL |

| CSV | ACTIVE | STORAGE ENGINE | NULL | GPL |

| BLACKHOLE | ACTIVE | STORAGE ENGINE | NULL | GPL |

| partition | ACTIVE | STORAGE ENGINE | NULL | GPL |

| FEDERATED | DISABLED | STORAGE ENGINE | NULL | GPL |

| ARCHIVE | ACTIVE | STORAGE ENGINE | NULL | GPL |

| ngram | ACTIVE | FTPARSER | NULL | GPL |

| rpl_semi_sync_master | ACTIVE | REPLICATION | semisync_master.so | GPL |

| rpl_semi_sync_slave | ACTIVE | REPLICATION | semisync_slave.so | GPL |

| AUDIT | ACTIVE | AUDIT | libaudit_plugin.so | GPL |

+----------------------------+----------+--------------------+--------------------+---------+

查看版本:

> show global status like '%audit%';+------------------------+-----------+

| Variable_name | Value |

+------------------------+-----------+

| Audit_protocol_version | 1.0 |

| Audit_version | 1.1.4-725 |

+------------------------+-----------+

开启Audit功能:

> SET GLOBAL audit_json_file=ON;

Query OK,0 rows affected (0.00 sec)

执行任何语句(默认会记录任何语句,有语法错误的不会记录),然后去mysql数据目录查看mysql-audit.json文件(默认为该文件)。

插入一些数据,查看一下mysql-audit.json文件信息(json格式),如下:

{"msg-type": "activity","date": "1510038432019","thread-id": "43","query-id": "1891","user": "root","priv_user": "root","ip": "","host": "localhost","connect_attrs": {"_os": "linux-glibc2.5","_client_name": "libmysql","_pid": "4009","_client_version": "5.7.9","_platform": "x86_64","program_name": "mysql"},"pid": "4009","os_user": "root","appname": "mysql","rows": "1","cmd": "insert","objects": [

{"db": "part","name": "e","obj_type": "TABLE"}

],"query": "insert into e values (9898,'smart','james')"}

可以查看插件有哪些可配置的参数:

mysql> SHOW GLOBAL VARIABLES LIKE '%audi%';

其中我们需要关注的参数有:

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

用户白名单。

详细的参数说明,可以直接访问官方说明:

最后为了保证重启数据库,配置不丢失,修改my.cnf 配置文件,将下面的配置添加到[mysqld]中,所以在配置文件中my.cnf加入参数:

audit_json_file=on    #保证mysql重启后自动启动插件

plugin-load=AUDIT=libaudit_plugin.so    #防止删除了插件,重启后又会加载

audit_record_cmds='insert,delete,update,create,drop,alter,grant,truncate'   #要记录哪些命令语句,因为默认记录所有操作;

保存重启即可看到效果。

插件卸载

直接执行 UNINSTALL PLUGIN AUDIT 卸载会报错:

>uninstall plugin AUDIT;

ERROR1148 (42000): Uninstall AUDIT plugin disabled> set audit_uninstall_plugin=on;

ERROR1238 (HY000): Variable 'audit_uninstall_plugin' is a read only variable

需要在 my.cnf 中 [mysqld] 下添加 audit_uninstall_plugin=1,重启mysql。重启完毕后执行两次 UNINSTALL PLUGIN AUDIT; 即可卸载。

>UNINSTALL PLUGIN AUDIT;

ERROR1620 (HY000): Uninstall AUDIT plugin must be called again tocomplete>UNINSTALL PLUGIN AUDIT;

Query OK,0 rows affected, 1 warning (0.01 sec)

卸载完成后需要从 my.cnf 中删除 audit_uninstall_plugin=1 ,否则下次mysql启动会报错:[ERROR] /data/mysql/bin/mysqld: unknown variable 'audit_uninstall_plugin=1'

MariaDB server_audit 审计插件

MySQL 社区版还可以安装 MariaDB 的审计插件,安装方法同上面的基本一致。

下载地址:https://mariadb.com/kb/en/mariadb/about-the-mariadb-audit-plugin/ (也可以直接下载MariaDB对应的版本后,解压后在plugin目录下有server_audit.so插件)

MariaDB_5.5.37版本和MariaDB_10.0.10以后版本的audit插件支持MariaDB, MySQL、Percona Server使用。

MariaDB_5.x.x 和 MariaDB_10.x.x 区别:

MariaDB_5.x.x:兼容MySQL5.x.x的,接口几乎一致,只限于社区版

MariaDB_10.x.x:10.x.x使用新技术,接口会与mysql逐渐区别开来。目标就是以后想MariaDB新接口过渡。

这里采用的是下载 MariaDB 二进制安装包,解压获取 server_audit.so 插件,版本为5.5.58,下载地址:mariadb-5.5.58-linux-x86_64.tar.gz ,下载解压后,复制 mariadb-5.5.58-linux-x86_64/lib/plugin 下的 server_audit.so 到 /usr/local/mysql/lib/plugin 下,添加 +x 权限。然后安装:

mysql> INSTALL PLUGIN server_audit SONAME 'server_audit.so';

查看变量开启设置情况,默认貌似都是关闭的:

> show variables like '%server_audit%';+-------------------------------+-----------------------+

| Variable_name | Value |

+-------------------------------+-----------------------+

| server_audit_events | |

| server_audit_excl_users | |

| server_audit_file_path | server_audit.log |

| server_audit_file_rotate_now | OFF |

| server_audit_file_rotate_size | 1000000 |

| server_audit_file_rotations | 9 |

| server_audit_incl_users | |

| server_audit_loc_info | |

| server_audit_logging | OFF |

| server_audit_mode | 1 |

| server_audit_output_type | file |

| server_audit_query_log_limit | 1024 |

| server_audit_syslog_facility | LOG_USER |

| server_audit_syslog_ident | mysql-server_auditing |

| server_audit_syslog_info | |

| server_audit_syslog_priority | LOG_INFO |

+-------------------------------+-----------------------+

可以在 my.cnf 中添加如下配置,然后重启 mysqld:

server_audit_events='CONNECT,QUERY,TABLE,QUERY_DDL,QUERY_DML,QUERY_DCL'  #备注:指定哪些操作被记录到日志文件中

server_audit_logging=on

server_audit_file_path =/data/mysql/auditlogs/  #备注:审计日志存放路径,该路径下会生成一个server_audit.log文件,就会记录相关操作记录了

server_audit_file_rotate_size=200000000

server_audit_file_rotations=200

server_audit_file_rotate_now=ON

也可以动态开启审计功能:

> set global server_audit_logging=on;

Query OK,0 rows affected (0.00 sec)

默认在mysql的数据目录下生成文件 server_audit.log ,日志格式为:

20171107 17:56:16,CentOS6.6-Slave1,,,4,11,QUERY,,'select host,user,plugin from mysql.users',1146

20171107 18:26:00,CentOS6.6-Slave1,,,4,13,QUERY,,'insert into t values (7)',020171107 18:27:49,CentOS6.6-Slave1,,,4,15,QUERY,,'shows',1064  #语法错误的语句也会被记录

可以看到,MariaDB的审计插件日志要比MySQL社区插件简洁许多。

server_audit_output_type:指定日志输出类型,可为SYSLOG或FILE

server_audit_logging:启动或关闭审计

server_audit_events:指定记录事件的类型,可以用逗号分隔的多个值(connect,query,table),如果开启了查询缓存(query cache),查询直接从查询缓存返回数据,将没有table记录

server_audit_file_path:如server_audit_output_type为FILE,使用该变量设置存储日志的文件,可以指定目录,默认存放在数据目录的server_audit.log文件中

server_audit_file_rotate_size:限制日志文件的大小

server_audit_file_rotations:指定日志文件的数量,如果为0日志将从不轮转

server_audit_file_rotate_now:强制日志文件轮转

server_audit_incl_users:指定哪些用户的活动将记录,connect将不受此变量影响,该变量比server_audit_excl_users优先级高

server_audit_syslog_facility:默认为LOG_USER,指定facility

server_audit_syslog_ident:设置ident,作为每个syslog记录的一部分

server_audit_syslog_info:指定的info字符串将添加到syslog记录

server_audit_syslog_priority:定义记录日志的syslogd priority

server_audit_excl_users:该列表的用户行为将不记录,connect将不受该设置影响

server_audit_mode:标识版本,用于开发测试

卸载 server_audit

mysql>UNINSTALL PLUGIN server_audit;

mysql> show variables like '%audit%';

Emptyset (0.00 sec)

防止 server_audit 插件被卸载,需要在配置文件中添加:

[mysqld]

server_audit=FORCE_PLUS_PERMANENT

重启MySQL生效

mysql>UNINSTALL PLUGIN server_audit;

ERROR1702 (HY000): Plugin 'server_audit' is force_plus_permanent and can not be unloaded

值得注意的是,应该在server_audit插件被安装好,并且已经运行之后添加这些配置,否则过早在配置文件添加这个选项,会导致MySQL发生启动错误!

MySQL Enterprise Audit Plugin

MySQL 企业版的 Enterprise Edition 中自带 Audit Plugin ,名为 audit_log.so ,安装也很简单:

> install plugin audit_log soname 'audit_log.so';

默认在 datadir 目录下生成 audit.log ,其格式为 xml ,下面举几个例子。

#退出 mysql shell

2017-11-09T03:28:23 UTC

4_2017-11-09T03:23:12

Quit

3

0

0

root

localhost

connect

Socket

# 登录失败,用户名或密码错误,错误码 1045

2017-11-09T03:28:25 UTC

5_2017-11-09T03:23:12

Connect

4

1045

1

root

localhost

connect

Socket

root

# 登录成功 STATUS=0

2017-11-09T03:29:43 UTC

6_2017-11-09T03:23:12

Connect

5

0

0

root

localhost

connect

Socket

root

# 执行命令 show_variables

2017-11-09T03:31:12 UTC

9_2017-11-09T03:23:12

Query

5

0

0

root[root] @ localhost []

localhost

show_variables

show global variables like '%audit%'

注意:企业版 audit plugin 也会记录语法错误的sql语句。

# 各标签元素解释:文件的根标签为,并以 为结束标签:包含一系列的必选标签和可选标签,可选标签是否出现取决于audit record类型。:必选,例如Query,可能出现的值还包含Audit, Binlog Dump, Change user, Close stmt, Connect Out, Connect, Create DB, Daemon, Debug, Delayed insert, Drop DB,

Execute, Fetch, Field List, Init DB, Kill, Long Data, NoAudit, Ping, Prepare, Processlist, Query, Quit, Refresh,

Register Slave, Reset stmt, Set option, Shutdown, Sleep, Statistics, Table Dump, Time.:必选,例如28743_2013-09-18T21:03:24,包含一些列数字和时间戳,数字表示的是记录数,每增加一条记录,数字加1.:必选,例如2013-09-17T15:03:49 UTC,包含时间戳和时区两部分,记录的是从客户端接收到的sql执行完时刻的时间。

# 以下标签audit record类型决定是否出现:命令的类型。例如drop_table.:例如127,代表客户端连接标识符的无符号整型数字。:mysql连接的默认数据库名称,该标签只在 值是Connect或Change user时出现.:client端的主机名,该标签只在 值是Connect,Change user或Query时出现,例如localhost。:client端的IP地址,该标签只在 值是Connect,Change user或Query时出现,例如127.0.0.1。:mysql版本号,只在 值是Audit时出现,例如5.7.1-m11-log

:外部用户,该标签只在 值是Connect,Change user或Query时出现。:表示运行数据库的服务器的操作系统,只在 值是Audit时出现,例如x86_64-Linux。:服务器认证的客户端名称。该标签只在 值是Connect或Change user时出现。例如root。:通过proxy连接到mysql的用户。该标签只在 值是Connect或Change user时出现。:mysql数据库服务器的ID号,该标签只在 值是Audit或No Audit时出现。例如1。:实际执行的SQL语句。该标签只在 值是 Query 或 Execute时出现。例如DELETE FROM t1。:mysql数据库启动选项,该标签只在 值是Audit时出现,例如/usr/local/mysql/bin/mysqld --port=3306 --log-output=FILE

:代表sql命令的执行状态,0表示成功,其余表示有错误。例如1051。:代表sql命令的执行状态,0表示成功,1表示有错误。例如0。:客户端连接mysql服务器的用户名。例如root[root] @ localhost [127.0.0.1]。:表示日志文件格式的版本号。该标签只在 值是Audit时出现。例如1。

audit linux mysql_MySQL审计工具Audit Plugin安装使用相关推荐

  1. Linux进程管理工具_Supervisor的安装与配置

    Linux/Unix进程管理工具_Supervisor的安装与配置 Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是L ...

  2. MySQL审查工具_MySQL审计工具Audit插件使用

    一.介绍MySQL AUDIT MySQL AUDIT Plugin是一个 MySQL安全审计插件,由McAfee提供,设计强调安全性和审计能力.该插件可用作独立审计解决方案,或配置为数据传送给外部监 ...

  3. linux ldap客户端工具,OpenLDAP 客户端安装部署

    一.账号登录系统流程讲解 当在客户端输入账号登录系统时,系统根据/etc/nsswitch.conf配置文件获取账号查找顺序,然后再根据PAM配置文件调用相关模块,对账号(/etc/passwd)及密 ...

  4. linux安装bash工具包,Linux 资源监视工具BashTop的安装和使用

    使用BashTop,您还可以对进程进行排序,以及轻松地在各种排序选项之间切换.此外,您可以将SIGKILL,SIGTERM和SIGINT发送到所需的进程. BashTop可以安装在Linux,macO ...

  5. linux串口工具 kermit,Linux下串口工具kermit的安装使用攻略

    终端(计算机显示终端)是用户使用系统的入口,是计算机系统的输入输出设备,终端的发展也经历了字符哑终端.图形终端和网络终端三种形式:而console更强调是控制系统的地方,其使用者主要是管理员,从概念上 ...

  6. linux 测试cpu工具,给centos安装cpu监测工具

    windows下的硬件检测工具和cpu监测工具一堆堆的,可Linux的就少的可怜了. lm_sensors就是一个在Linux非常有用的CPU监测工具,可以检测CPU的工作电压,风扇转速.温度等数据. ...

  7. Linux系统下工具软件的安装

    Linux系统下软件的几种安装方法 1 背景 2 环境 3 安装工具 3.1 准备工作 3.1.1 更新系统 3.2 系统工具 3.2.1 elementary-tweaks 工具 3.2.3 Edd ...

  8. Kali Linux Web扫描工具:Arachni安装使用教程(图文并茂哦)

    前言:本文基于pockr内容整理为笔记,有一些自己的思考跟问题. 老规矩,先简单介绍咱们需要的软硬件工具 硬件工具:PC机 软件工具:kali.Arachni(linux版本) arachni简介: ...

  9. 【Linux】SSH工具:MobaXterm安装

    1:SSH工具:MobaXterm 1.1:下载 https://mobaxterm.mobatek.net/download.html 1.2:安装 欢迎页面 同意许可 确定安装位置 开始安装 操作 ...

  10. linux svn可视化工具,CentOS6.5安装SVN 可视化管理工具iF.SVNAdmin

    实际系统环境: CentOS 6.5 x64 一.安装Apache 通常系统都已经装好了,但我的服务器上却没有安装,所以要安装: # yum install httpd 二.安装SVN 根据SVN官网 ...

最新文章

  1. 智能高柜机器人_丰田公司推出新型助力机器人
  2. QDoc主题命令Topic Commands
  3. 独家下载!《零售数据中台通关指南》,带你玩转新零售
  4. 分布式定时任务框架Elastic-Job的使用
  5. react.js app_如何创建Next.js入门程序以轻松引导新的React App
  6. MySQL 错误 1366:1366 Incorrect integer value
  7. Bootstrap3 表格的情景类
  8. 织梦html2text( me),织梦dedecms中function='Html2Text(@me)的使用方法
  9. elasticsearch集群搭建实例
  10. Python动态数据展示
  11. 更新小红伞antivirus失败:生成更新结构失败。更新库生成错误 556
  12. SNIP物体检测算法理解
  13. eclipse配置文件
  14. java retainAll
  15. 2022深圳杯/东三省数学建模ABCD题 赛题分析解题方案
  16. 台式电脑怎么装win10 win11重装win10系统
  17. 切换无线网卡失败服务器提示,电脑无线网卡切换为AP模式时提示ICS启动失败的解决方法...
  18. 文件管理服务器win7,Win7如何取得文件管理所有权
  19. 听dalao讲课 7.27
  20. 该网页无法正常运作 HTTP ERROR 500

热门文章

  1. 白鹭(egret)搜素引擎入门
  2. idea Ctrl+Alt+T 快捷键失效、无法弹出surround with、与qq热键冲突-解决办法
  3. dxf制作kml_kml到dxf
  4. 橡皮擦的英语_小朋友们知道“橡皮擦”用英语该怎么说吗?
  5. vue等单页面应用及其优缺点
  6. 解决KEIL MDK编译生成Bin文件时,却生成了*bin文件夹
  7. little endian c语言,c语言那些细节之little-endian和big-endian
  8. c++ int转char*
  9. 从SNP_VCF文件提取SNV
  10. 微机原理与接口技术期末考试总结