MySQL数据库访问日志分析_MySQL安全事件监控实用方法

哎,也许2 02 2 年吧……我当时在北京……公司服务器……日志分析……相当重要。

想想看... GeneralLog...真的会记录所有的SQL...甚至连接、查询、更改...它们都是为您编写的。
但是如果你打开它...例如,在my.cnf配置文件中...添加general_log=1 ...然后general_log_file指向一个路径...如/var/log/mysql/general.log...然后重新启动服务...哦哇...磁盘I/O...猛增...当并发很高时...甚至CPU都在抖动...所以...通常只是临时使用...在审计期间使用。

但是慢查询日志SlowQueryLog...这个好多了... long_query_time...默认值是1 0秒...你可以更改它...例如我将其更改为2 秒...所以需要超过2 秒的查询...它会为你记录...这对于发现性能问题特别有用...它还可以检测攻击...比如SQL注入...看看查询时间...很长...一定有问题...而且你还可以看到谁来...什么?哪个IP...
首先我用了ELKStack...就是Elasticsearch+Logstash+Kibana...那个Logstash...可以解析GeneralLog...提取关键字段...比如时间戳、IP、SQL语句...然后Kibana...可以创建一个仪表板...查看失败登录数...慢速查询数...IP分布异常...这些...相当直观。

但是使用 grep、awk...这些基本的命令行工具...还可以做一些事情...例如查找特定用户的登录错误...使用 grep "Access returned for user" bad_user /path/to/general.log...或计算 IP 连接数...使用 awk '{print $6 }' /path/to/general.log |订单|独特的-c | sort -nr...这些...快速过滤器...非常方便。

mysqldumpslow...这个工具...专门分析SlowQueryLog...发现高频慢查询...比如mysqldumpslow -c -t 1 0 /path/to/slow_query.log...可以显示执行次数最多的1 0条记录...这个...我经常用。

Splunk...那个更好...复杂的搜索,相关性分析...还有实时警报...但是我没怎么用过...成本有点高。

另外...自定义脚本...也可以用Python/Perl编写...来实现自定义解析逻辑...例如识别特定的SQL模式...
识别安全事件...这非常重要...例如非法登录尝试...即短时间内出现大量拒绝访问记录...异常SQL语句...非DROPTABLE、TRUNCATE...异常登录方式...来自非常规IP...或者频率太高...比如每秒数百次查询...需要注意这些...
配置报警规则...登录失败次数超过5 次/分钟...启用通知...或者检测包含SELECT FROM password_table的SQL语句...可以使用Watcher模块ELKStack...或者Splunk的Alert功能...
优化和注意事项...GeneralLog和SlowQueryLog...会占用磁盘空间...会增加负载I/O...所以在生产环境中...建议仅在审计时打开GeneralLog...long_query_time阈值...也需要调整...以避免记录太多慢且不相关的查询。

保护敏感信息...日志中可能有明文密码...个人数据...然后...启用TLS加密日志传输...归档时限制访问权限...例如chmod 6 00 /var/log/mysql/.log...这些……必须要做。

替代方案... MariaDB审计插件... 提供更详细的控制... 在用户和表级别记录操作... ProxySQL... 在代理级别拦截异常SQL... 减少对数据库的直接影响... 这些... 也可以考虑。

之前我检查了 SQL 注入攻击...我启用了 SlowQueryLog...我将 long_query_time 设置为 1 ...然后我使用 Kibana... 查找执行时间超过 5 秒的 SELECT 语句...我检查了源 IP...用户代理...然后我与 GeneralLog...结合以确认是否存在未经授权的访问...该示例输出... { timestamp: "2 02 3 -1 0-01 T1 2 :3 4 :5 6 Z", ip: "1 9 2 .0.2 .1 00", sql: "SELECT FROM users WHERE id=1 OR 1 =1 --", Execution_time: 8 .2 } ...通过系统的日志分析...可以创建覆盖整个“检测-分析-响应”流程的MySQL安全防护体系...抵御数据丢失、篡改等风险。

mysql如何启用日志审计

数据库安全加固:MySQL用户权限审计

我记得有一次我有一项紧急任务,需要审核我们公司MySQL数据库的用户权限。
那是一个周末,我坐在办公室电脑前,盯着满是代码和命令提示符的屏幕。

首先,我使用SHOWGRANTS命令查看用户权限,然后输入命令“SHOWGRANTSFOR'user'@'host'”,然后将'username'和'host'替换为我的实际用户名和主机名。
当我看着屏幕上一长串的权限列表时,我开始感到焦虑。
因为我们知道,不规范的权限管理可能会带来严重的安全风险。

在审核过程中,我们发现了几个问题。
某个账户拥有ALLPRIVILEGES权限,但该账户长时间未登录。
还有其他帐户没有很大的权限,但它们的访问范围包括整个数据库,因此它们显然不遵守最小权限原则。
我立即意识到,如果不立即解决这些问题,数据库的安全性可能会受到损害。

然后我们开始根据最小权限原则调整权限,为每个用户分配最合适的权限。
我们还删除了一些过期的帐户,包括几个测试帐户和长期未使用的临时帐户。

最后,我编写了一个简单的 Python 脚本来自动化审核过程。
我每个季度都会运行此脚本,以确保权限分配标准化且安全。

通过这个过程,我意识到数据库安全不仅仅是一个技术问题,而是一个持续的过程。
我经常想知道,如果每个人都像对待自己的钱包一样对待自己的数据库权利,那该多好。