最近因为一些事情的发生,出现了好端端的页面,变成了空页面。转头开发同事就来质问我,是不是我动了什么,后来经过调查发现,是平台运营的同事误删资料导致的。

所以如果运维或者开发部门有很多人都分配了数据库的增删改之类的操作权限的话,某一天哪个表或者字段丢失了都无法找到是谁干的,所以这个锅只能运维来背了。因此很有必要把数据库的操作记录保存下来,但是代价就是服务器的效能就会变差一些了,但为了安全起见,还是建议开启的。

在一些操作限制中,难免会有人质疑具有super权限的用户做了什么动作,所以还是把root用户也一同审计在内,可以避免不必要的麻烦

1.我们就以mysql-5.7.17为例,安插第三方的插件来进行审计。通过多方了解,知道MySQL AUDIT Plugin是一个 MySQL安全审计插件,由McAfee提供,设计强调安全性和审计能力。可用作独立审计解决方案,或配置为数据传送给外部监测工具。

audit下载地址:

https://bintray.com/mcafee/mysql-audit-plugin/release

2.准备安装audit插件

[root@~]unzip audit-plugin-mysql-5.7-1.1.2-694-linux-x86_64.zip

Archive: audit-plugin-mysql-5.7-1.1.2-694-linux-x86_64.zip

creating: audit-plugin-mysql-5.7-1.1.2-694/

creating: audit-plugin-mysql-5.7-1.1.2-694/lib/

inflating: audit-plugin-mysql-5.7-1.1.2-694/lib/libaudit_plugin.so

inflating: audit-plugin-mysql-5.7-1.1.2-694/COPYING

inflating: audit-plugin-mysql-5.7-1.1.2-694/THIRDPARTY.txt

inflating: audit-plugin-mysql-5.7-1.1.2-694/README.txt

creating: audit-plugin-mysql-5.7-1.1.2-694/utils/

inflating: audit-plugin-mysql-5.7-1.1.2-694/utils/offset-extract.sh

3.查看mysql为安插audit插件的路径

mysql > show global variables like 'plugin_dir';

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

| Variable_name | Value |

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

| plugin_dir |/data0/mysql/lib/plugin/ |

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

1 row in set (0.00 sec)

4.将需要安装的插件复制到上述指定路径,并赋予可执行权限即可

[root@~]cd audit-plugin-mysql-5.7-1.1.2-694/lib

[root@lib]cp libaudit_plugin.so /data0/mysql/lib/plugin/

[root@~]cd /data0/mysql/lib/plugin/

[root@plugin]chmod a+x libaudit_plugin.so

5.有了4的步骤以后,便可以在数据库上加载审计插件

mysql> install plugin audit soname 'libaudit_plugin.so';

Query OK,0 rows affected (1.78 sec)

mysql> flush privileges;

Query OK,0 rows affected (0.00 sec)

6.加载插件完毕后,查看审计插件是否已经插入到了数据库内,并查看相关插件版本

mysql> show global status like '%audit%';

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

| Variable_name | Value |

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

| Audit_protocol_version | 1.0 |

| Audit_version | 1.1.2-694 |

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

2 rows in set (0.00 sec)

7.开启数据库的审计功能

mysql> set global audit_json_file=on;

Query OK,0 rows affected (0.00 sec)

8.查看数据库跟审计有关的相关信息

mysql> show global variables like '%audit%';

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

| Variable_name | Value |

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

| audit_before_after | after |

| audit_checksum | |

| audit_client_capabilities | OFF |

| audit_delay_cmds | |

| audit_delay_ms | 0 |

| audit_force_record_logins | OFF |

| audit_header_msg | ON |

| audit_json_file | ON |

| audit_json_file_bufsize | 1 |

| audit_json_file_flush | OFF |

| audit_json_file_retry | 60 |

| audit_json_file_sync | 0 |

| audit_json_log_file | mysql-audit.json |

| audit_json_socket | OFF |

| audit_json_socket_name | /var/run/db-audit/mysql.audit__data0_mysql-data_3306 |

| audit_json_socket_retry | 10 |

| audit_offsets | |

| audit_offsets_by_version | ON |

| audit_password_masking_cmds | CREATE_USER,GRANT,SET_OPTION,SLAVE_START,CREATE_SERVER,ALTER_SERVER,CHANGE_MASTER,UPDATE |

| audit_password_masking_regex | identified(?:/\*.*?\*/|\s)*?by(?:/\*.*?\*/|\s)*?(?:password)?(?:/\*.*?\*/|\s)*?['|"](?.*?)(?.*?)(?.*?)(?.*?)(?

| audit_record_cmds | |

| audit_record_objs | |

| audit_sess_connect_attrs | ON |

| audit_socket_creds | ON |

| audit_uninstall_plugin | OFF |

| audit_validate_checksum | ON |

| audit_validate_offsets_extended | ON |

| audit_whitelist_cmds | BEGIN,COMMIT,PING |

| audit_whitelist_users | |

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

29 rows in set (0.00 sec)

9.可以更改你想存放日志的路径,以便日后记得在哪里查找查看日志

audit_json_log_file就是数据库中审计日志mysql-audit.json存放的路径,一般审计日志放在了数据库的数据存放的路径上。像我的mysql-audit.json就存放在/data0/mysql-data里。当然如果你要换到你指定的路径也可以,用 mysql > set global audit_json_log_file='你想放置的路径';

10.缩减日志内容

在查看已经开启的审计日志以后,你就会发现日志量太大了,只要网站有人访问,肯定都会有select的日志记录,因为在默认情况下audit_record_cmds=null,记录所有操作指令,但是我们开启审计日志的目的是为了审计,不是为了记流水账,所以只记录insert、delete、update就可以了。这样就比较符合我们的初衷,所以可以像下面那样做:

mysql > set global audit_record_cmds = 'insert,delete,update';

11.局限到你想要审计的数据库即可

在默认情况下audit_record_objs=null,即是数据库里的所有对象都列为记录对象。但为了安全起见,我都审计。当然也可以指定哪些数据库的表格需要进行审计记录,如下例设置:

mysql > set global audit_record_objs = 'mysql.*,test.*';

12.mysql审计还是有搞特殊化的,就是白名单这种东西,简言之就是可以指定谁免受审计之苦。

设定如下:

mysql > set global audit_whitelist_users = 'z';

13.查看审计日志内容

cat /data0/mysql-data/mysql-audit.json

大概通过上述步骤,审计就可以说简略的完成了。

centos 7.2 mysql 允许_CentOS 7.2 mysql-5.7.17 审计插件安装、开启与设定相关推荐

  1. mysql 5.02审计_CentOS 7.2 mysql-5.7.17 审计插件安装、开启与设定

    最近因为一些事情的发生,出现了好端端的页面,变成了空页面.转头开发同事就来质问我,是不是我动了什么,后来经过调查发现,是平台运营的同事误删资料导致的. 所以如果运维或者开发部门有很多人都分配了数据库的 ...

  2. mysql审计插件安装_MySQL审计插件安装使用说明文档--升级版

    目的 基于之前设计开发的MySQL审计插件,以及<MySQL审计插件安装使用说明文档>的内容介绍,对完善后的mysql审计插件进行补充和说明.主要对新增内容进行详细说明,进一步完善审计插件 ...

  3. centos系统中mysql密码_CentOS系统找回mysql登录密码

    在使用CentOS系统中,也许你会对很多的东西进行设置密码,来保护你的电脑的安全问题等,那么,如过一个不小心把密码忘记了,也许会给你的工作带来很多的不便.下面我们就来帮大家解决一个关于CentOS系统 ...

  4. centos mysql 连接_centos支持远程mysql连接

    MySQL名字的来历MySQL是一个小型关系型数据库管理系统,我们在CentOS系统中如何安装使用呢,而且让MySQL支持远程连接.下面我们就来学习方法. CentOS系统安装好MySQL后,默认情况 ...

  5. centos下忘记mysql密码_CentOS下忘记mysql密码的解决办法

    一:停掉正在运行的 [root@Test01~]# serviced stop 如果没有把mysql加入服务,可以用/etc/init.d/mysql stop 二:使用 "–skip-gr ...

  6. centos php配置mysql数据库_CentOS+Nginx+PHP+MySQL详细配置(图解)

    #make && make install 三.安装Nginx 在网上,看到不少人装Nginx 时非常麻烦,配置时用了一大堆选项,请问你们真实现那么多功能么?害的我越看越郁闷.此次安装 ...

  7. MySQL审计插件使用和对比

    数据库审计是数据库安全中很重要的一个环节,说到审计,有些上市公司内部还会根据塞班斯法案,进行404审计等等. 而最基本的审计还是需要的,有些同学可能感觉审计会有些鸡肋,其实非也,开审计的功能势必会影响 ...

  8. centos mysql 设置_CentOS下MySQL安装后配置和设置-阿里云开发者社区

    CentOS下MySQL安装后配置和设置: 1:安装完成路径: 1.数据库目录 /var/lib/mysql/ 2.配置文件 /usr/share/mysql(mysql.server命令及配置文件) ...

  9. centos 安装mysql扩展_centos php安装mysql扩展的方法

    centos php安装mysql扩展的方法:首先下载mysql扩展包:然后找到并打开php.ini配置文件:接着添加扩展包,语句是"extension=mysql.so":最后重 ...

最新文章

  1. POI解析Excel文件工具类
  2. 洛谷 P5019 铺设道路(差分)
  3. 微型计算机实验代码,上师大,微型计算机实验全代码.doc
  4. powershell获取linux文件,powershell如何读取文件名并赋值到变量?
  5. python毕业设计开题报告-基于Python的教学互动系统的设计与实现开题报告
  6. Hello World -- Java Web版(Java Web 入门教程)
  7. Hadoop、Spark、Hbase、Hive的安装
  8. CentOS7下pptp ***一键安装脚本
  9. Java 洛谷 P1425 小鱼的游泳时间
  10. 20210625 函数的极限
  11. oopc——3.封装
  12. java 中的jframe_java中JFrame是什么
  13. Sqlserver自动优化
  14. 物联网周刊(第 5 期):智能家居入口之争
  15. IESM项目实训三——语音合成工具类
  16. 视频号还是直播?2021年微信财富密码预言
  17. PHP 文字生成透明图片之路
  18. 制作WIN10U盘启动盘
  19. TI官方代码中的任务状态机
  20. 2006最酷小说《上上床,谈谈心》

热门文章

  1. 解决npm ERR! code ENOENT
  2. 修改属性页CPropertyPage标题
  3. php文件上传错误代码
  4. 红旗桌面版本最新运用要领和结果解答100例-3
  5. vs中c++项目的配置
  6. C#使用Aspose.Words操作word文档(利用模板2)
  7. Access数据库创建字段类型无效问题
  8. IOS开发基础之socket的使用
  9. 树莓派通过VNC连接时分辨率太低
  10. OPENSSL的基础使用