最近某项目的等保测评中扫出Mysql5.7.30因为没有安装审计插件导致出现一个高危漏洞。网上查了社区版的Mysql5.7.30没有自带审计插件,但客户也不能去购买Mysql企业版。经网上百度,可以用至少2种方式解决,一种是使用MariaDB中的server_audit.so,一种是使用Percona的audit_log.so,后者我从对应的官网上下载了几个版本,把audit_log.so复制部署到服务器上都没成功,大家如果感兴趣的话可以去Software Downloads - Percona 网站上下载试试,不知道应该选择什么版本:

   因为Percona没有配通,所以改用MariaDB,从官网Download MariaDB Server - MariaDB.org 我选择了10.2.38的版本,见下图(注意选版本的时候,Display older releases后面的复选框勾上才会显示大量不同的版本):

因为网上介绍的Mysql5.7.30匹配MariaDB 10.2.38,所以我先下载这个版本试一下。点上面的红框复制链接可直接用迅雷下载,软件包比较大,700多兆。下载完成后,复制到CentOS Linux,然后使用tar -xzvf  mariadb-10.2.38-linux-systemd-x86_64.tar.gz 解压,解压完成后,

        第一步:进入解压的lib目录,执行 install lib/plugin/server_audit.so /usr/local/mysql/lib/plugin/ ,注意,不同的服务器的MYSQL的插件目录可能不一样,所以需要确保自己的服务器的mysql插件目录是不是/usr/local/mysql/lib/plugin/。

        第二步,命令行登录Mysql,在mysql>提示符后输入 install plugin server_audit SONAME ‘server_audit.so’;

     第三步,

     ## 配置audit永久有效

     mkdir -p /data/logs/logs_audit

     chmod -R 777 /data/logs/logs_audit

     也可以自己指定日志目录。

    第四步,编辑/etc/my.cnf (注意不同系统的mysql配置文件可能在不同的目录,centos和ubuntu的默认配置文件也不一样):

在[mysqld]下添加:

server_audit_logging=ON

#要记录的SQL语句,包含查询语句
server_audit_events=connect,query,table,query_ddl,query_dml,query_dcl,query_dml_no_select

#开启日志轮转
server_audit_file_rotate_now=ON

#日志达到100M后轮转
server_audit_file_rotate_size=100000000

#审计日志文件存储路径
server_audit_file_path=/data/logs/logs_audit/server_audit.log

保存my.cnf然后执行systemctl restart mysqld.service

然后再登录到mysql,执行一个select 的查询语句,然后再打开审计日志文件 /data/logs/logs_audit/server_audit.log,看有没有日志记录:

tail -200 /data/logs/logs_audit/server_audit.log

        可以看到有日志记录了。在生产环境中,为了通过等保测评,server_audit_events可以配置更多的内容,包括用户的添加和删除、审计功能的启动和关闭、审计策略的调整、权限变更、系统资源的异常使用、重要的系统操作(如用户登录、退出)等重要的用户行为和安全事件。具体的可以再百度下。

       以上是MysqlServer5.7.30版配置审计插件的详细步骤。如果大家的项目需要应对等保测评,以及自身的数据库安全的需求,可以参考本文的步骤,相信对大家会有所帮助。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐