MYSQL8安全之审计管理

打印 上一主题 下一主题

主题 576|帖子 576|积分 1728

MYSQL8安全之审计管理



  • 审计概念
  • 一、MYSQL8开源审计mysql-audit
    1. * mysql-audit安装配置
    复制代码

    • 0、下载解压插件
    • 1、查看mysql的插件位置
    • 2、上传库文件到插件目录
    • 3. 修改my.cnf
    • 4、安装插件
    • 5、查看mysql-audit日志
    • 安装插件报错
      1.       * 解决办法:
      复制代码

      • 1、盘算偏移量
      • 2、将偏移量添加到my.cnf中
      • 3、添加偏移量依然报错


  • 二、MYSQL自带的init-connect+binlog实现mysql审计
    1. * 1、创建一份存放连接信息的表
    复制代码

    • 2、配置权限
    • 3、配置init-connect
    • 4、记录和跟踪测试

审计概念

审计:记任命户的操作,方便以后查证,但生产环境数据库本身不建议开启,会影响性能,可以使用第三方实现审计。
一、MYSQL8开源审计mysql-audit

mysql5.7企业版自带审计功能,必要付费。
社区版可以使用McAfee提供的开源软件mysql Audit Pluging
项目地点:https://github.com/trellix-enterprise/mysql-audit
mysql-audit安装配置

0、下载解压插件

  1. # 下载插件压缩包
  2. wget -c https://github.com/trellix-enterprise/mysql-audit/releases/download/v1.1.13/audit-plugin-mysql-8.0-1.1.13-1008-linux-x86_64.zip
  3. # 解压
  4. unzip audit-plugin-mysql-8.0-1.1.13-1008-linux-x86_64.zip
  5. # 进入lib目录
  6. cd audit-plugin-mysql-8.0-1.1.13-1008/lib
  7. # 赋予可执行权限
  8. chmod +x libaudit_plugin.so
  9. # 修改属主和属组为msyql:mysql
  10. chown mysql:mysql libaudit_plugin.so
复制代码
1、查看mysql的插件位置

  1. -- 查看插件的位置
  2. SHOW global variables LIKE '%plugin_dir%';
复制代码
![image.png](https://img-
blog.csdnimg.cn/img_convert/7bc68325bc32f0195815a72cea6b0bd3.png#averageHue=#282727&clientId=u5aa656e8-85f0-4&from=paste&height=110&id=u5356bdf9&originHeight=220&originWidth=1060&originalType=binary&ratio=2&rotation=0&showTitle=false&size=89136&status=done&style=none&taskId=u9eea1748-f6c2-4536-890e-1e972abf951&title=&width=530)
2、上传库文件到插件目录

  1. # 复制到插件目录
  2. cp audit-plugin-mysql-8.0-1.1.13-1008/lib/libaudit_plugin.so /usr/lib64/mysql/plugin/
复制代码
3. 修改my.cnf

  1. # 停止mysqld服务
  2. systemctl stop mysqld
复制代码
修改my.cnf配置文件
  1. [mysqld]
  2. # 加载名为 libaudit_plugin.so 的AUDIT审计插件
  3. plugin-load=AUDIT=libaudit_plugin.so
  4. # 启用审计日志以JSON格式记录
  5. audit_json_file=on
  6. # 指定事件审计文件路径
  7. audit_json_log_file=/var/log/mysql-audit.json
  8. # 指定审计事件类型
  9. ## 如果不指定audit_record_cmds,所有DDL,DML全记录
  10. audit_record_cmds='insert,delete,update,create,drop,alter,grant,truncate'
复制代码
![image.png](https://img-
blog.csdnimg.cn/img_convert/84aaeb091434bcd9d992c210893254c9.png#averageHue=#f2f2f2&clientId=u5aa656e8-85f0-4&from=paste&height=105&id=uda096acd&originHeight=210&originWidth=1012&originalType=binary&ratio=2&rotation=0&showTitle=false&size=114576&status=done&style=none&taskId=ueb745846-9ff8-4f61-a67b-f86763901cd&title=&width=506)
启动mysqld服务
  1. -- 启动mysqld服务
  2. systemctl start mysqld
复制代码
4、安装插件

  1. -- root登录mysql
  2. mysql -uroot
  3. -- 安装audit插件
  4. install plugin audit soname 'libaudit_plugin.so';
  5. -- 查看audit插件版本
  6. SHOW global status LIKE 'audit_version';
复制代码
![image.png](https://img-
blog.csdnimg.cn/img_convert/194ca1f1faacab72f8aba575eabb344b.png#averageHue=#073008&clientId=u5aa656e8-85f0-4&from=paste&height=68&id=DIz1R&originHeight=136&originWidth=1392&originalType=binary&ratio=2&rotation=0&showTitle=false&size=183209&status=done&style=none&taskId=u4daec061-4e38-4b4b-8418-56d0a56f62e&title=&width=696)
5、查看mysql-audit日志

json查看工具:https://blog.csdn.net/omaidb/article/details/125581170
  1. # 查安装json查看工具jq
  2. dnf install jq -y
  3. # 查看最后100条日志
  4. tail -100 /var/log/mysql-audit.json
  5. # 用jq查看json格式日志
  6. tail -100 /var/log/mysql-audit.json |jq
复制代码
安装插件报错

安装libaudit_plugin.so插件报错。
![image.png](https://img-
blog.csdnimg.cn/img_convert/4ec1f3c441cd33068bf23bf19d6f19e5.png#averageHue=#ebecea&clientId=u5aa656e8-85f0-4&from=paste&height=278&id=qjvEt&originHeight=556&originWidth=1460&originalType=binary&ratio=2&rotation=0&showTitle=false&size=810076&status=done&style=none&taskId=ubf9f6a0b-bba7-4b87-bdb4-6a214f8fc91&title=&width=730)
解决办法:

盘算mysqld的偏移量,重新指定mysqld偏移量。
1、盘算偏移量

  1. # 安装gdb包
  2. dnf install -y gdb
  3. # 找到offset-extract.sh脚本
复制代码
![image.png](https://img-
blog.csdnimg.cn/img_convert/555912f7d8d7c4bc54a270484d5ae82a.png#averageHue=#2d2d2d&clientId=u5aa656e8-85f0-4&from=paste&height=108&id=SUkcT&originHeight=216&originWidth=880&originalType=binary&ratio=2&rotation=0&showTitle=false&size=87247&status=done&style=none&taskId=ued6112d3-3179-4743-8ed6-7b2664bfc3a&title=&width=440)
  1. # 使用offset-extract.sh脚本计算偏移量
  2. offset-extract.sh /usr/sbin/mysqld
复制代码
2、将偏移量添加到my.cnf中

![image.png](https://img-
blog.csdnimg.cn/img_convert/3249e486a8faab1ba8ff948700ed3f4b.png#averageHue=#f4f3f3&clientId=u5aa656e8-85f0-4&from=paste&height=118&id=A5g6h&originHeight=236&originWidth=2088&originalType=binary&ratio=2&rotation=0&showTitle=false&size=273187&status=done&style=none&taskId=u8b8010b2-9dd8-4c92-81ac-0d8c2fe8011&title=&width=1044)
  1. [mysqld]
  2. audit_offsets=计算出的偏移量
复制代码
![image.png](https://img-
blog.csdnimg.cn/img_convert/e3c98787b6045bc32d70543bbe68af6e.png#averageHue=#062006&clientId=u5aa656e8-85f0-4&from=paste&height=83&id=XtFAB&originHeight=166&originWidth=2868&originalType=binary&ratio=2&rotation=0&showTitle=false&size=420566&status=done&style=none&taskId=u1b8ed817-8cf1-4c80-9f0d-a98ead20d2f&title=&width=1434)
3、添加偏移量依然报错

![image.png](https://img-
blog.csdnimg.cn/img_convert/bfd324420ca73b1379bd3a411581a723.png#averageHue=#dad5ce&clientId=u5aa656e8-85f0-4&from=paste&height=107&id=q8zM6&originHeight=214&originWidth=1284&originalType=binary&ratio=2&rotation=0&showTitle=false&size=222679&status=done&style=none&taskId=uf66decf6-ccf0-4641-b199-1abdc7d280e&title=&width=642)
二、MYSQL自带的init-connect+binlog实现mysql审计

1、创建一份存放连接信息的表

  1. -- 创建一份存放连接信息的表
  2. CREATE database auditdb DEFAULT CHARSET utf8mb4;
  3. -- 进入auditdb库
  4. use auditdb;
  5. -- 创建auditdb.accesslog(访问日志)表
  6. CREATE TABLE auditdb.accesslog(
  7.     ID INT PRIMARY KEY auto_increment,
  8.     ConnectionID INT,
  9.     ConnUserName VARCHAR(30),
  10.     PrivMatchName VARCHAR(30),
  11.     LoginTime timestamp
  12. );
复制代码
2、配置权限

  1. -- 配置权限
  2. -- 向mysql.db表中插入一条记录,授权所有用户在任意主机上访问auditdb数据库,并具有select和insert的操作权限。
  3. -- host、db、user、select_priv和insert_priv是该表中的字段名;
  4. -- %代表通配符,表示任何IP地址都可以使用此记录匹配;
  5. -- 'auditdb'表示要授权的数据库名称,这里为auditdb;
  6. -- ''表示要授权的用户名称,这里为空字符串,表示所有用户都能匹配上此记录;
  7. -- YY表示该用户对auditdb数据库有select和insert操作的权限。
  8. INSERT into mysql.db(host, db, user, select_priv, insert_priv)
  9. values('%', 'auditdb', '', 'Y', 'Y');
  10. -- 提交事务
  11. cmomit;
  12. -- 应用权限配置
  13. FLUSH PRIVILEGES;
复制代码
3、配置init-connect

![image.png](https://img-
blog.csdnimg.cn/img_convert/431d1e9bfeb21e1a9958b59d65824f98.png#averageHue=#2c2c2c&clientId=u5aa656e8-85f0-4&from=paste&height=163&id=u034daa12&originHeight=326&originWidth=980&originalType=binary&ratio=2&rotation=0&showTitle=false&size=172949&status=done&style=none&taskId=uf7c38e80-73b2-49b3-9bb4-a83b0789839&title=&width=490)
  1. # 此项配置可以用于记录所有数据库连接的基本信息,以方便审计和监控。
  2. # init-connect:在每个新客户端连接成功后,将执行SQL语句
  3. # 往名为"auditdb.accesslog"的表中插入一条记录,该记录包含连接ID(ConnectionID)、连接用户名(ConnUserName)、权限匹配名(PrivMatchName)和登录时间(LoginTime)等信息。
  4. ## connection_id()函数用于获取当前连接的ID,
  5. ## user()函数用于获取当前连接的用户名,
  6. ## current_use()函数用于获取当前连接所使用的权限匹配名
  7. ## now()函数则用于获取当前的系统时间。
  8. init-connect='INSERT into auditdb.accesslog(ConnectionID,ConnUserName,PrivMatchName,LoginTime) values(connection_id(),user(),current_use(),now());'
  9. # 指定binlog的存储路径和文件名前缀
  10. ## binlog记录所有对数据库的修改操作,包括插入、更新和删除
  11. log_bin=/var/lib/mysql/binlog
  12. # 指定binlog索引文件的存储路径和文件名
  13. log_bin_index=/var/lib/mysql/binlog.index
复制代码
重启mysqld服务
  1. # 重启msyql服务
  2. systemctl restart mysqld
复制代码
4、记录和跟踪测试

如果是root登录,不会记录信息。
  1. # 使用 mysqlbinlog 工具读取名为 binlog.000001 的二进制日志文件
  2. ## --start-datetime 和 --stop-datetime 参数分别指定了要搜索的时间范围,即从 2018 年 4 月 12 日 16:53:00 开始,到 2018 年 4 月 12 日 16:55:00 结束
  3. ## -i 参数表示忽略大小写
  4. ## grep -B 20 显示匹配的前20行
  5. mysqlbinlog --start-datetime='2018-04-12 16:53:00' --stop-datetime='2018-04-12 16:55:00' binlog.000001 |grep -i '关键字' -B 20
复制代码
![image.png](https://img-
blog.csdnimg.cn/img_convert/ef50d18f9c60f38648e232746cd39c7a.png#averageHue=#0a300b&clientId=u5aa656e8-85f0-4&from=paste&height=82&id=u6d4ea650&originHeight=164&originWidth=1946&originalType=binary&ratio=2&rotation=0&showTitle=false&size=306655&status=done&style=none&taskId=u051ba6cb-2cff-4732-bf82-3b074d329f8&title=&width=973)
![image.png](https://img-
blog.csdnimg.cn/img_convert/fe2b1e6edfebb146efeab65526bb60af.png#averageHue=#084e09&clientId=u5aa656e8-85f0-4&from=paste&height=107&id=uf9857b9a&originHeight=214&originWidth=1036&originalType=binary&ratio=2&rotation=0&showTitle=false&size=293496&status=done&style=none&taskId=u1c7cf043-4b9b-4b1b-8ba9-6a442d3bfbb&title=&width=518)
![image.png](https://img-
blog.csdnimg.cn/img_convert/c482bc58ab6b3f426548069a55c2cf7c.png#averageHue=#050502&clientId=u5aa656e8-85f0-4&from=paste&height=284&id=u7dc1b2aa&originHeight=568&originWidth=2616&originalType=binary&ratio=2&rotation=0&showTitle=false&size=967270&status=done&style=none&taskId=u74745688-0e71-49b3-96ac-6f31b95605a&title=&width=1308)
  1. -- 查看访问日志表
  2. slect * from auditdb.accesslog;
复制代码
![image.png](https://img-
blog.csdnimg.cn/img_convert/727efc9df31f66f3c069b1d42be0878d.png#averageHue=#072907&clientId=u5aa656e8-85f0-4&from=paste&height=202&id=uf78277d5&originHeight=404&originWidth=1920&originalType=binary&ratio=2&rotation=0&showTitle=false&size=608519&status=done&style=none&taskId=ue7aa3fb6-c7d1-41a1-b9d3-22c033ca434&title=&width=960)
学习网络安全技能的方法无非三种:
第一种是报网络安全专业,如今叫网络空间安全专业,主要专业课程:程序计划、盘算机构成原理原理、数据结构、操作体系原理、数据库体系、
盘算机网络、人工智能、自然语言处理、社会盘算、网络安全法律法规、网络安全、内容安全、数字取证、呆板学习,多媒体技能,信息检索、舆情分析等。
第二种是自学,就是在网上找资源、找教程,或者是想办法熟悉一-
些大佬,抱紧大腿,不过这种方法很耗时间,而且学习没有规划,可能很长一段时间感觉本身没有进步,容易劝退。
如果你对网络安全入门感兴趣,那么你必要的话可以点击这里

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

鼠扑

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表