ToB企服应用市场:ToB评测及商务社交产业平台
标题:
MYSQL8安全之审计管理
[打印本页]
作者:
鼠扑
时间:
2024-8-8 13:12
标题:
MYSQL8安全之审计管理
MYSQL8安全之审计管理
审计概念
一、MYSQL8开源审计mysql-audit
* mysql-audit安装配置
复制代码
0、下载解压插件
1、查看mysql的插件位置
2、上传库文件到插件目录
3. 修改my.cnf
4、安装插件
5、查看mysql-audit日志
安装插件报错
* 解决办法:
复制代码
1、盘算偏移量
2、将偏移量添加到my.cnf中
3、添加偏移量依然报错
二、MYSQL自带的init-connect+binlog实现mysql审计
* 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、下载解压插件
# 下载插件压缩包
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:mysql
chown mysql:mysql libaudit_plugin.so
复制代码
1、查看mysql的插件位置
-- 查看插件的位置
SHOW global variables LIKE '%plugin_dir%';
复制代码

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'
复制代码

启动mysqld服务
-- 启动mysqld服务
systemctl start mysqld
复制代码
4、安装插件
-- root登录mysql
mysql -uroot
-- 安装audit插件
install plugin audit soname 'libaudit_plugin.so';
-- 查看audit插件版本
SHOW global status LIKE 'audit_version';
复制代码

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

解决办法:
盘算mysqld的偏移量,重新指定mysqld偏移量。
1、盘算偏移量
# 安装gdb包
dnf install -y gdb
# 找到offset-extract.sh脚本
复制代码

# 使用offset-extract.sh脚本计算偏移量
offset-extract.sh /usr/sbin/mysqld
复制代码
2、将偏移量添加到my.cnf中

[mysqld]
audit_offsets=计算出的偏移量
复制代码

3、添加偏移量依然报错

二、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

# 此项配置可以用于记录所有数据库连接的基本信息,以方便审计和监控。
# 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
复制代码



-- 查看访问日志表
slect * from auditdb.accesslog;
复制代码

学习网络安全技能的方法无非三种:
第一种是报网络安全专业,如今叫网络空间安全专业,主要专业课程:程序计划、盘算机构成原理原理、数据结构、操作体系原理、数据库体系、
盘算机网络、人工智能、自然语言处理、社会盘算、网络安全法律法规、网络安全、内容安全、数字取证、呆板学习,多媒体技能,信息检索、舆情分析等。
第二种是自学,就是在网上找资源、找教程,或者是想办法熟悉一-
些大佬,抱紧大腿,不过这种方法很耗时间,而且学习没有规划,可能很长一段时间感觉本身没有进步,容易劝退。
如果你对网络安全入门感兴趣,那么你必要的话可以点击这里
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4