文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MYSQL8安全之审计管理

2023-09-07 05:43

关注

MYSQL8安全之审计管理

审计概念

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


一、MYSQL8开源审计mysql-audit

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


mysql-audit安装配置


0、下载解压插件

# 下载插件压缩包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# 解压unzip audit-plugin-mysql-8.0-1.1.13-1008-linux-x86_64.zip# 进入lib目录cd audit-plugin-mysql-8.0-1.1.13-1008/lib# 赋予可执行权限chmod +x libaudit_plugin.so # 修改属主和属组为msyql:mysqlchown mysql:mysql libaudit_plugin.so 

1、查看mysql的插件位置

-- 查看插件的位置SHOW global variables LIKE '%plugin_dir%';

image.png


2、上传库文件到插件目录

# 复制到插件目录cp audit-plugin-mysql-8.0-1.1.13-1008/lib/libaudit_plugin.so /usr/lib64/mysql/plugin/

3. 修改my.cnf

# 停止mysqld服务systemctl stop mysqld

修改my.cnf配置文件

[mysqld]# 加载名为 libaudit_plugin.so 的AUDIT审计插件plugin-load=AUDIT=libaudit_plugin.so# 启用审计日志以JSON格式记录audit_json_file=on# 指定事件审计文件路径audit_json_log_file=/var/log/mysql-audit.json# 指定审计事件类型## 如果不指定audit_record_cmds,所有DDL,DML全记录audit_record_cmds='insert,delete,update,create,drop,alter,grant,truncate'

image.png
启动mysqld服务

-- 启动mysqld服务systemctl start mysqld

4、安装插件

-- root登录mysqlmysql -uroot-- 安装audit插件install plugin audit soname 'libaudit_plugin.so'-- 查看audit插件版本SHOW global status LIKE 'audit_version';

image.png


5、查看mysql-audit日志

json查看工具:https://blog.csdn.net/omaidb/article/details/125581170

# 查安装json查看工具jqdnf install jq -y# 查看最后100条日志tail -100 /var/log/mysql-audit.json# 用jq查看json格式日志tail -100 /var/log/mysql-audit.json |jq

安装插件报错

安装libaudit_plugin.so插件报错。
image.png


解决办法:

计算mysqld偏移量,重新指定mysqld偏移量。


1、计算偏移量

# 安装gdb包dnf install -y gdb# 找到offset-extract.sh脚本

image.png

# 使用offset-extract.sh脚本计算偏移量offset-extract.sh /usr/sbin/mysqld

2、将偏移量添加到my.cnf中

image.png

[mysqld]audit_offsets=计算出的偏移量

image.png


3、添加偏移量依然报错

image.png


二、MYSQL自带的init-connect+binlog实现mysql审计


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

-- 创建一份存放连接信息的表CREATE database auditdb DEFAULT CHARSET utf8mb4;-- 进入auditdb库use auditdb;-- 创建auditdb.accesslog(访问日志)表CREATE TABLE auditdb.accesslog(    ID INT PRIMARY KEY auto_increment,    ConnectionID INT,    ConnUserName VARCHAR(30),    PrivMatchName VARCHAR(30),    LoginTime timestamp);

2、配置权限

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

3、配置init-connect

image.png

# 此项配置可以用于记录所有数据库连接的基本信息,以方便审计和监控。# init-connect:在每个新客户端连接成功后,将执行SQL语句# 往名为"auditdb.accesslog"的表中插入一条记录,该记录包含连接ID(ConnectionID)、连接用户名(ConnUserName)、权限匹配名(PrivMatchName)和登录时间(LoginTime)等信息。## connection_id()函数用于获取当前连接的ID,## user()函数用于获取当前连接的用户名,## current_use()函数用于获取当前连接所使用的权限匹配名## now()函数则用于获取当前的系统时间。init-connect='INSERT into auditdb.accesslog(ConnectionID,ConnUserName,PrivMatchName,LoginTime) values(connection_id(),user(),current_use(),now());'# 指定binlog的存储路径和文件名前缀## binlog记录所有对数据库的修改操作,包括插入、更新和删除log_bin=/var/lib/mysql/binlog# 指定binlog索引文件的存储路径和文件名log_bin_index=/var/lib/mysql/binlog.index

重启mysqld服务

# 重启msyql服务systemctl restart mysqld

4、记录和跟踪测试

如果是root登录,不会记录信息。

# 使用 mysqlbinlog 工具读取名为 binlog.000001 的二进制日志文件## --start-datetime 和 --stop-datetime 参数分别指定了要搜索的时间范围,即从 2018 年 4 月 12 日 16:53:00 开始,到 2018 年 4 月 12 日 16:55:00 结束## -i 参数表示忽略大小写## grep -B 20 显示匹配的前20行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
image.png
image.png

-- 查看访问日志表slect * from auditdb.accesslog;

image.png

来源地址:https://blog.csdn.net/omaidb/article/details/130387489

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯