时间 2018-12-23 08:01:11  FreeBuf
主题 MySQL

0×0 背景

由于MySQL社区版没有自带的审计功能或插件,对于等级保护当中对数据库管理的要求的就存在一定的不满足情况的,抛开条条框框不说数据库的日志是值得研究的,通过收集数据库的日志到企业SOC平台便于安全事件的溯源与故障分析,配合目前的UEBA技术能够轻松发现很多恶意事件。

根据等级保护内容第四章“数据库管理系统安全技术要求”中 第四节“数据库安全审计”中明确提出数据库管理系统的安全审计应:

1. 建立独立的安全审计系统;
2. 定义与数据库安全相关的审计事件;
3. 设置专门的安全审计员;
4. 设置专门用于存储数据库系统审计数据的安全审计库;
5. 提供适用于数据库系统的安全审计设置、分析和查阅的工具。 

0×1 部署插件

  为了节省购买一些安全设备的费用,可以尝试使用一些开源的日志审计插件。Mysql-audit是macfee公司基于percona开发的MySQL的SQL审计插件。

源码地址如下: https://github.com/mcafee/mysql-audit

首先确定当前mysql的版本去官网下载与之相对应的插件:

解压插件后需要确认mysql插件的安装目录:

将解压出来的插件libaudit_plugin.so复制到插件的目录下:

使用mysql的函数install plugin导入此插件后通过show plugin确认是否导入成功。

主要命令如下:

install plugin audit soname ‘libaudit_plugin.so’

安装完成之后并不会立马开始审计内容,需要定义一些参数。

Audit_json_file这个参数要整体控制是否开启审计功能使用命令:

Set variables audit_json_file=on

开启审计功能:

审计后的记录名可以通过查询变量audit_json_log_file获取:

Show variables like “audit_json_log_file”

默认的审计记录格式如下:

Json格式如下:

同时插件支持一些自定义的参数与命令,包括白名单与黑名单的功能。

Audit_whitelist_users: 不审计user用户的所有命令
Aduit_record_cmds: 需要进行审计的命令种类

更多的参数配置项目可以参考官方给的手册:

https://github.com/mcafee/mysql-audit/wiki/Configuration

0×2 总结

1. 通过插件的方式可以实现mysql日志的审计通过ELK的框架实现日志的保存与分析,再通过后期写一些脚本分析可以实现安全检测与业务分析等多个功能,关键是零成本特别适合那些”一个人的安全部”有此需求的同行们.

2. 根据一些测试数据表示,插件对性能的影响是比较大的约有20%左右的消耗需要结合具体的业务情况进行评估。

简单实现MySQL数据库的日志审计的更多相关文章

  1. canal 基于Mysql数据库增量日志解析

    canal 基于Mysql数据库增量日志解析  1.前言  最近太多事情 工作的事情,以及终身大事等等 耽误更新,由于最近做项目需要同步监听 未来电视 mysql的变更了解到公司会用canal做增量监 ...

  2. mysql数据库binlog日志的异地备份

    MySQL数据库的二进制日志binlog记录了对数据库的全量DDL和DML操作,对数据库的point to point灾难恢复起着无法替代的关键作用.因此,基于此类考虑,需要对生产环境产生的binlo ...

  3. MYSQL数据库的日志文件

    日志文件:用来记录MySQL实例对某种条件做出响应时写入的文件.如错误日志文件.二进制日志文件.慢查询日志文件.查询日志文件等. 错误日志 show variables like 'log_error ...

  4. MySQL 数据库通过日志恢复

    http://blog.csdn.net/hanxin1987216/article/details/5976856 要想从二进制日志恢复数据,你需要知道当前二进制日志文件的路径和文件名.一般可以从选 ...

  5. 简单 PHP + MySQL 数据库动态网站制作 -- 摘抄

    在这篇文章中,我尽量用最浅显易懂的语言来说明使用 PHP, MySQL 制作一个动态网站的基本技术.阅读本文需要简单的 HTML 基础知识和(任一编程语言的)编程基础知识(例如变量.值.循环.语句块的 ...

  6. Pycharm建立web2py项目并简单连接MySQL数据库

    引言 web2py是一种免费的,开源的web开发框架,用于敏捷地开发安全的,数据库驱动的web应用:web2p采用Python语言编写,并且可以使用Python编程.web2py是一个完整的堆栈框架, ...

  7. C#中简单操作Mysql数据库

    以C#访问MySQL数据库,执行简单的CRUD. MySql.Data.dll是C#操作MySQL的驱动文件,是C#连接MySQL必要插件,使C#语言更简洁的操作MySQL数据库.可以用NuGet命令 ...

  8. *CentOS下简单的MySQL数据库操作

    1.登录成功之后退出的话,直接输入quit或者exit即可.

  9. mysql数据库开启日志

    旧版 #开启慢查询 slow_query_log # (超过2秒的SQL语法记录起来,设短一点来记录除错也是一种方法.) long_query_time = 2 log-slow-queries=D: ...

随机推荐

  1. postgresql进程及内存结

    一.进程和内存架构图 postgresql数据库启动时,先启动一个postmaster的主进程,然后fork出一些辅助子进程. 二.主进程postmaster -bash-4.2$ which pos ...

  2. 最短路径算法----floyd(转)

    一.Floyd算法 假设从i到j的最短路径上要经过若干个顶点,这些中间顶点中最大的顶点编号为k,最小的顶点为t,因此要求算dist[i][j]的最小值,那么只需要求算dist[i][s]+dist[s ...

  3. <context:component-scan>子标签:<context:include-filter>和<context:exclude-filter>使用时要注意的地方

    在Spring MVC中的配置中一般会遇到这两个标签,作为<context:component-scan>的子标签出现. 但在使用时要注意一下几点: 1.在很多配置中一般都会吧Spring ...

  4. FFmpeg简易播放器的实现-音视频播放

    本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10235926.html 基于FFmpeg和SDL实现的简易视频播放器,主要分为读取视频文 ...

  5. Spring基础(8) : 延迟加载,Bean的作用域,Bean生命周期

    1.延迟加载 <bean id="p" class="com.Person" lazy-init="true"/> @Confi ...

  6. CRC16位校验

    之前有跟第三方通讯合作,应为CRC表码问题导致校验出结果不一致,纠结了很久,最后直接采用CRC计算方式校验才解决. 两种方式贴,自行对比. CRC校验计算方法 private ushort CRC_1 ...

  7. nehibernet .net注意事项

    1:xml属性:嵌入资源建立实体对象:public virtual int id{get;set;}建立与实体对象同名的xml文件,以.hbm.xml为扩展名2:StructureMap.config ...

  8. Java - HashCode源码解析

    Java提高篇(二六)-----hashCode hashCode的作用 要想了解一个方法的内在原理,我们首先需要明白它是干什么的,也就是这个方法的作用.在讲解数组时(java提高篇(十八)----- ...

  9. 理解Java异常

    一.Java异常的简介 Java异常是Java提供的一种识别及响应错误的一致性机制.具体来说,异常机制提供了程序退出的安全通道.当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器.Ja ...

  10. linux系统编程:open常用参数详解

    open用于打开一个文件,通过设置不同的flag,可以让进程只读,只写,可读/可写等操作 一.对一个不存在或者存在的文件(test.txt),进行写入操作 /*==================== ...