MySql日志审计配置与分析实战
字数 1675 2025-08-15 21:31:56
MySQL日志审计配置与分析实战指南
一、MySQL审计概述
MySQL安全审计是数据库安全的重要组成部分,通过记录和分析数据库操作日志,可以:
- 检测暴力破解尝试
- 发现SQL注入攻击
- 追踪命令执行行为
- 还原攻击场景
- 追溯攻击来源
二、审计方法选择
1. 审计方案比较
- 审计插件:直接集成在MySQL中,性能有一定影响但数据完整
- 旁路审计设备:对数据库性能影响小,但可能遗漏部分细节
2. 推荐方案
本文以MariaDB Audit Plugin为例,因其:
- 功能完善
- 配置灵活
- 兼容MySQL
三、MariaDB审计插件安装与配置
1. 环境准备
- 操作系统:Windows Server 2008 R2
- 数据库:MySQL 5.5.29
- 测试环境:phpstudy 8.1 + sqli-labs
2. 插件安装步骤
- 从官网下载MariaDB 5.5.68版本
- 使用命令解压到目标目录:
msiexec /a "d:\mariadb-5.5.68-winx64.msi" /qb TARGETDIR="D:\abc" - 从
MariaDB 5.5\lib\plugin目录提取server_audit.dll - 复制到MySQL插件目录
- 在MySQL命令行安装插件:
INSTALL PLUGIN server_audit SONAME 'server_audit.dll';
3. 插件配置参数详解
| 参数 | 说明 | 建议值 |
|---|---|---|
| server_audit_events | 记录的事件类型(connect,query,table等) | 根据需求设置 |
| server_audit_excl_users | 不记录其行为的用户列表 | 排除监控用户 |
| server_audit_file_path | 审计日志路径 | 自定义安全目录 |
| server_audit_file_rotate_size | 单个日志文件大小限制 | 64M(67108864) |
| server_audit_file_rotations | 保留的日志文件数量 | 根据存储空间设置 |
| server_audit_incl_users | 只记录其行为的用户列表 | 高权限用户 |
| server_audit_logging | 审计功能开关 | ON |
| server_audit_output_type | 日志输出类型(FILE/SYSLOG) | FILE |
| server_audit_query_log_limit | 查询字符串长度限制 | 2048 |
4. 启用审计
SET GLOBAL server_audit_logging = ON;
SET GLOBAL server_audit_events = 'connect,query,table';
SET GLOBAL server_audit_file_path = '/var/log/mysql_audit.log';
四、错误日志配置
- 查询错误日志路径:
SHOW VARIABLES LIKE 'log_error'; - 错误日志记录了:
- 连接警告
- 命令执行错误
- 系统级错误
五、攻击场景分析与日志特征
1. MySQL暴力破解
错误日志特征:
[Warning] IP address '192.168.106.180' could not be resolved: 不知道这样的主机。
审计日志特征:
[timestamp],[serverhost],[username],[host],[connectionid],[queryid],QUERY,[database],[object],[retcode]
- 大量1045返回码(认证失败)
- 成功后的查询操作模式可推测破解工具
2. SQL注入攻击
日志特征:
- access.log记录可疑URL请求
- server_audit.log记录完整的注入语句:
UNION SELECT操作INTO OUTFILE写入后门- 系统函数调用
3. SQLMap OS-Shell攻击
审计日志特征:
- 探测阶段:
- 版本查询
- 字符集检测
- 操作系统类型探测
- UDF利用:
- 创建自定义函数
- 通过函数执行系统命令
- 命令执行:
whoami等系统命令记录- 错误信息可能暴露攻击者IP
六、日志分析实战技巧
- 时间线分析:按时间排序事件,还原攻击流程
- IP追踪:关联多个日志中的IP信息
- 错误代码分析:
- 1045:认证失败
- 1142:权限拒绝
- 行为模式识别:
- 爆破工具的特征查询
- SQLMap的指纹特征
- 异常时间操作
七、安全建议
-
审计策略:
- 重点监控高权限账户
- 记录所有DDL操作
- 监控异常时间操作
-
日志管理:
- 定期轮转日志
- 集中存储日志
- 设置适当的日志保留策略
-
防护措施:
- 限制远程访问IP
- 使用最小权限原则
- 定期审计数据库权限