等保建设:打造MySQL数据库审计系统

news2025/1/15 23:24:08

1、建设目标

        在等级保护三级->应用安全->安全审计中强制需要有审计平台(满足对操作系统、数据库、网络设备的审计,在条件不允许的情况下,至少要使用数据库审计)

数据库审计服务符合等级保护三级标准,帮助您满足合规性要求,包括但不限于:

  • 中国银监会、工业和信息化部、公安部、国家互联网信息办公室制定的《网络借贷信息中介机构业务活动管理暂行办法》中第十八条指出需要进行信息安全检查和审计。

  • 网络安全法

    • 第二十一条 (三)采取监测、记录网络运行状态、网络安全事件的技术措施,并按照规定留存相关的网络日志不少于六个月。

    • 第三十八条 关键信息基础设施的运营者应当自行或者委托网络安全服务机构对其网络的安全性和可能存在的风险每年至少进行一次检测评估,并将检测评估情况和改进措施报送相关负责关键信息基础设施安全保护工作的部门。

  • 等保三级数据库审计功能要求如下表:

数据库安全审计等保三级a) 审计范围应覆盖到服务器和 重要客户端上的每个操作系统用户和数据库用户;
b) 审计内容应包括重要用户行为、 系统资源的异常使用和重要系统命令的使用等系统内重要的安全相关事件;
c) 审计记录应包括事件的日期、时间、类型、主体标识、客体标识和结果等;
d)  应能够根据记录数据进行分析,并生成审计报表;
e)  应保护审计进程,避免受到未预期的中断;
f) 应保护审计记录,避免受到未预期的删除、修改或覆盖等。

2、工作原理

        数据库审计服务通过插件监听模式,在较小影响数据库日常运行效能的前提下,实现灵活的审计与监控。

  • 基于数据库操作语句进行审计,监视数据库登录、访问行为,有效地实施审计策略。数据库审计服务还具备强大的数据库活动审计分析能力,从多个角度灵活呈现数据库的活动状态,帮助您有效执行安全策略。

3、使用的开源工具及组件

  • Mariadb新版自带server_audit 审计插件

  • Rsyslog服务(omkafka、omfwd模块)

  • kafka服务(logstash可选)

  • Elasticsearch

4、整体架构图

图片

    SQL记录架构图

5、开始部署

5.1、安装插件server_audit 插件

进入数据库,使用下列语句启用插件

> INSTALL PLUGIN server_audit SONAME'server_audit.so';

或者编辑/etc/my.cnf添加

[mysqld]plugin-load=server_audit=server_audit.so

查看插件安装情况

> show variables like 'server_au%';

打开日志的审计功能

> set global server_audit_logging=on;

查看audit插件的运行状态:

> show global status like '%audit%';

server_audit_active :ON (表示server_audit插件在运行);

server_audit_current_log : server_audit.log(审计日志路径和日志名);

server_audit_last_error : 错误消息;

server_audit_writes_failed : 因错误没有记录的日志条目数

设置审计日志记录位置​​​​​​​

# mkdir /var/log/mysql/# chown mysql.mysql /var/log/mysql/ -R

设置变量(设置完即生效)​​​​​​​

> set GLOBAL server_audit_events='CONNECT,QUERY,TABLE';> set GLOBAL server_audit_excl_users='root';> set GLOBAL server_audit_file_rotate_size=1073741824;   (单位:字节)> set GLOBAL server_audit_file_rotations=10;> set global server_audit_file_rotate_now=ON;> set global server_audit_logging=on;> set global server_audit_file_path='/var/log/mysql/server_audit.log';

设置永久生效  在/etc/my.cnf的[mysqld]段添加上下面的内容

# audit plugin settings​​​​​​​

plugin-load = server_audit.soserver_audit = FORCE_PLUS_PERMANENTserver_audit_events = 'CONNECT,QUERY,TABLE'server_audit_logging = ONserver_audit_file_rotations=10server_audit_file_rotate_size =200Mserver_audit_excl_users='root'server_audit_file_path  = /var/log/mysql/server_audit.log

审计参数说明​​​​​​​

server_audit_output_type:指定日志输出类型,可为SYSLOG或FILEserver_audit_logging:启动或关闭审计server_audit_events:指定记录事件的类型,可以用逗号分隔的多个值(connect,query,table),如果开启了查询缓存(query cache),查询直接从查询缓存返回数据,将没有table记录server_audit_file_path:如server_audit_output_type为FILE,使用该变量设置存储日志的文件,可以指定目录,默认存放在数据目录的server_audit.log文件中server_audit_file_rotate_size:限制日志文件的大小server_audit_file_rotations:指定日志文件的数量,如果为0日志将从不轮转server_audit_file_rotate_now:强制日志文件轮转server_audit_incl_users:指定哪些用户的活动将记录,connect将不受此变量影响,该变量比server_audit_excl_users优先级高server_audit_excl_users:该列表的用户行为将不记录,connect将不受该设置影响server_audit_syslog_facility:默认为LOG_USER,指定facilityserver_audit_syslog_ident:设置ident,作为每个syslog记录的一部分server_audit_syslog_info:指定的info字符串将添加到syslog记录server_audit_syslog_priority:定义记录日志的syslogd priorityserver_audit_mode:标识版本,用于开发测试

注意!为了防止server_audit插件被卸载,需要在配置文件中添加:​​​​​​​

[mysqld]server_audit=FORCE_PLUS_PERMANENT

5.2、卸载server_audit审计插件​​​​​​​

> UNINSTALL PLUGIN server_audit;> show variables like '%audit%';   验证是否卸载完

卸载的步骤:

1、需要先在配置文件里把server_audit相关的配置项目注释掉,再重启mariadb。

2、再来执行UNINSTALL PLUGIN server_audit;才能卸载掉这个插件。

3、卸载插件完成后,执行show variables like '%audit%';仍然能看到这个插件的可用参数,再次重启mariadb才行。

5.3、设置审计日志记录到rsyslog

> SET GLOBAL server_audit_output_type=SYSLOG;

#表示成功​​​​​​​

> show global status like '%audit%';         | server_audit_current_log   | [SYSLOG] |

> show variables like 'server_au%';| server_audit_output_type      | syslog |

配置rsyslog服务

# /etc/init.d/rsyslog restart

然后连接到mysql执行些数据库、表的操作,可以tail -f /var/log/message里面看到操作的内容。

默认的操纵日志都打在/var/log/message里面,不方便我们查看,可以修改下/etc/rsyslog.conf,

添加syslog-client端采集日志到syslog-server端​​​​​​​

vi /etc/rsyslog.d/mysql_audit.conf# template$template mysql_adit_fwd, "%rawmsg%"if $programname == ["mysql-server_auditing"] then {    action(type="omfwd"        Protocol="udp"        Target="192.168.10.27"        Port="5514"template="mysql_adit_fwd"queue.type="linkedList"queue.spoolDirectory="/tmp"queue.fileName="remoteQueue_nginx_waf"queue.maxDiskSpace="5g"queue.saveOnShutdown="on"queue.workerThreads="4")    stop}

# /etc/init.d/rsyslog restart   重启rsyslog服务

配置远程接收rsyslog-server端日志服务器,将日志写到kafka​​​​​​​

vi /etc/rsyslog.d/mysql_audit.conf# template$template mysql_audit_output, "%rawmsg%\n"# rulesetruleset(name="mysql_audit") {  action(    type="omkafka"template="mysql_audit_output"    broker=["192.168.10.8:9092","192.168.10.9:9092","192.168.10.15:9092"    ]    partitions.auto="on"    topic="elk-mysql-audit-log"    dynatopic="off"    resubmitOnFailure="on"    keepFailedMessages="on"    confParam=["batch.num.messages=1","queue.buffering.max.ms=100"       ]queue.spoolDirectory="/tmp"queue.filename="mysql_audit_kafka"queue.size="360000"queue.maxdiskspace="2G"queue.highwatermark="216000"queue.discardmark="350000"queue.type="LinkedList"queue.dequeuebatchsize="4096"queue.timeoutenqueue="0"queue.maxfilesize="10M"queue.saveonshutdown="on"queue.workerThreads="4"  )  stop}# 定义消息来源及设置相关的actioninput(type="imudp" port="5514" ruleset="mysql_audit")

5.4、其它配置请参考其它文档

  •  配置Kafaka

  •  配置Elasticsearch

  •  配置Kibana

至此基本的数据库审计收集完毕,能够简单应付过等保审核(有开发条件者,可扩充以下功能)

1、可配合Elasticsearch 开发SQL审计规则,实现自动化审计不合规语句、异常SQL语句等。

2、可配合https://github.com/cookieY/Yearning 平台实现,SQl审计、审核全功能

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1691095.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决LabVIEW通过OPC Server读取PLC地址时的错误180121602

在使用LabVIEW通过OPC Server读取PLC地址时,若遇到错误代码180121602,建议检查网络连接、OPC Server和PLC配置、用户权限及LabVIEW设置。确保网络畅通,正确配置OPC变量,取消缓冲设置以实时读取数据,并使用诊断工具验证…

vue contextPath的思考

先说我这边的情况,目前项目都是前后端分离开发的,上线有种部署方式,常见的就是前后端分开部署,这是比较常见的,我这边因客户原因,打包一起进行部署比较简单,交付技术运维部方便后期其他现场部署…

DHT11获取数据传输到PC端

1.DHT11的时序数据 a : dht 1 b :dht 0延时30ms c: dht 1 卡d点;while(dht1); 卡e点 while(!dht) 卡f点:while(dht) 卡g点:while(!dht) 有效数据都是高电平,持续时间不一样,50us读&#…

首发!飞凌嵌入式FETMX6ULL-S核心板已适配OpenHarmony 4.1

近日,飞凌嵌入式在FETMX6ULL-S核心板上率先适配了OpenHarmony 4.1,这也是业内的首个应用案例,嵌入式核心板与OpenHarmony操作系统的结合与应用,将进一步推动千行百业的数智化进程。 飞凌嵌入式FETMX6ULL-S核心板基于NXP i.MX 6ULL…

水电集中抄表是什么?

1.定义分析:水电集中抄表 水电集中抄表是一种现代化能源管理体系方法,它利用先进的信息科技,如物联网技术、云计算等,完成对水电表数据的远程智能采集与处理。这种方法改变了传统的人工上门服务抄表方式,提高了效率&a…

为什么 buffer 越大传输效率越低

先看 从边际效益递减看 buffer 中挤占带宽 中的两个模型: E1 inflight_prop - inflight_buff: y 2 t x − b x a − x y2tx-\dfrac{bx}{a-x} y2tx−a−xbx​E2 bw / delay: y a x − x 2 b t a − t x y\dfrac{ax-x^2}{bta-tx} ybta−…

光环P3O不错的一个讲座

光环P3O不错的一个讲座,地址:https://apphfuydjku5721.h5.xiaoeknow.com/v2/course/alive/l_663dc840e4b0694c62c32d1d?app_idapphfuydJkU5721&share_fromu_5c987304d8515_wH2E5HgCgx&share_type5&share_user_idu_5c987304d8515_wH2E5HgCgx…

STL--set和multiset集合

set和multiset会根据特定的排序准则&#xff0c;自动将元素排序。两者不同之处在于multiset 允许元素重复而 set 不允许。如下图: 使用set或multiset&#xff0c;必须先包含头文件: #include <set>上述两个类型都被定义为命名空间std内的class template: namespace std…

Platformer Project

Platformer项目适合那些寻找坚实基础来构建你梦想中的3D平台游戏的人,提供受该类型最具影响力游戏启发的核心机制。 一般功能 移动支持; 自定义运动学角色控制器; Humanoid Rig支持(共享动画); 保存/加载(二进制、JSON或Playerprefs); 支持多个存储槽; 三星、硬币和最…

React-JSX基础

什么是JSX 概念&#xff1a;JSX是JavaScript和XML&#xff08;HTML&#xff09;的缩写&#xff0c;表示在JS代码中编写HTML模板结构&#xff0c;它是React中编写UI模板的方式 优势&#xff1a;1.HTML的声明式模板写法 2.JS的可编程能力 JSX的本质 JSX并不是标准的JS语法&…

高集成IP摄像SOC处理方案简介以及芯片介绍SSC336D

时至今日&#xff0c;随着科技越来越快的发展&#xff0c;视频监控领域目前已经向新型 IP 网络进行技术过渡。而 IP 网络摄像系统的初始定义为&#xff1a;网络与视频处理技术相统一的摄像单元。 网络摄像系统拥有自己的 IP 地址和计算功能&#xff0c;能处理网络通信任务。其…

Qt下使用QImage和OpenCV实现图像的拼接与融合

文章目录 前言一、使用QImage进行水平拼接二、使用OpenCV进行水平拼接三、使用OpenCV进行图像融合四、示例完整代码总结 前言 本文主要讲述了在Qt下使用QImage和OpenCV实现图像的拼接与融合&#xff0c;并结合相应的示例进行讲解&#xff0c;以便大家学习&#xff0c;如有错误…

Linux基础(二):环境搭建

本文准备从0开始&#xff0c;一步步搭建一套属于自己的Linux系统环境&#xff0c;这将是后续学Linux、用Linux、Linux环境编程、应用和项目部署、工具实验等一系列学习和实践的基石&#xff0c;希望对小伙伴们有帮助。提前备好Linux编程实验环境非常重要&#xff0c;建议人手一…

【小笔记】如何在docker中更新或导入neo4j数据?

如何在docker中更新或导入neo4j数据&#xff1f; &#xff08;1&#xff09;背景&#xff1a; 我尝试了4.4.9和5.19.0版本的Neo4j社区版&#xff0c;基于他们的镜像创建容器后&#xff0c;需要导入我准备好的csv文件或dump文件&#xff0c;因为数据量非常大&#xff0c;所以采…

IntelliJ IDEA集成Baidu Comate,商城系统支付交易功能开发实战

文章目录 Baidu Comate介绍安装配置体验安装插件配置体验注释生成代码技术问答 实战设计表生成代码导入数据 总结 Baidu Comate介绍 在科技互联网飞速发展的今天&#xff0c;百度凭借其深厚的技术积累和创新能力&#xff0c;推出了一款名为Baidu Comate智能代码助手的产品。该…

JS-03深入了解构造函数

目录 1 引入构造函数 2 通过构造函数创建对象-内置 3 自定义一个构造函数来创建对象 3.1 构造函数的概念 3.2关于new Object() 3.3 构造函数的执行过程 3.3.1构造函数的返回值 3.3.2 如何判断一个数据是否是复杂数据类型&#xff1f; 3.3.3为什么要理解构造函数的返回值&…

15、24年--信息系统管理——管理要点

1、数据管理 数据管理使指通过规划、控制与提供数据和信息资产的职能,包括开发、执行和监督有关数据的计划、策略、方案、项目、流程、方法和程序,以获取、控制、保护、交付和提高数据和信息资产价值。 DCMM定义了数据战略、数据治理、数据架构、数据应用、数据安全、…

如何官方查询论文分区,中科院及JCR

中科院分区 有一个小程序&#xff1a;中科院文献情报中心分区表 点2023升级版&#xff0c;输入期刊名 大类1区 JCR分区 进入官方网站 Journal Citation Reports 输入要查询的期刊名&#xff0c;点开 拼命往下拉 这就是根据影响因子的排名&#xff0c;在computer science&am…

柱状图中最大的矩形 - LeetCode 热题 73

大家好&#xff01;我是曾续缘&#x1f61b; 今天是《LeetCode 热题 100》系列 发车第 73 天 栈第 5 题 ❤️点赞 &#x1f44d; 收藏 ⭐再看&#xff0c;养成习惯 柱状图中最大的矩形 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xf…