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

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审计、审核全功能

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是组态?什么是工业控制中的组态软件?

随着工业4.0和智能制造的发展,工控软件的应用越来越广泛,它们在提高生产效率、降低能耗和减少人力成本等方面发挥着越来越重要的作用。 什么是工控软件? 工控软件是指用于工业控制系统的软件,主要应用于各种生产过程控制、自动化…

Java中流的概念细分

按流的方向分类: 输入流:数据流向是数据源到程序(以InputStream、Reader结尾的流)。 输出流:数据流向是程序到目的地(以OutputStream、Writer结尾的流)。 按处理的数据单元分类: 字…

在winnas中使用docker desktop遇到的问题及解决方法记录

最近在尝试从群晖转向winnas,一些简单的服务依然计划使用docker来部署。群晖的docker简单易用且稳定,在win上使用docker desktop过程中遇到了不少问题,在此记录一下以供后来人参考。 一、安装docker desktop后启动时遇到无法启动docker引擎 …

构建数字未来:探索Web3在物联网中的新视角

引言 随着Web3时代的来临,物联网技术正迎来一场新的变革。在这个数字化时代,Web3所带来的技术创新将为物联网的发展开辟新的视角。本文将深入探讨Web3在物联网领域的应用,揭示其在构建数字未来中的重要性和影响。 Web3与物联网的融合 区块链…

运用HTML、CSS设计Web网页——“西式甜品网”图例及代码

目录 一、效果展示图 二、设计分析 1.整体效果分析 2.头部header模块效果分析 3.导航及banner模块效果分析 4.分类classify模块效果分析 5.产品展示show模块效果分析 6.版权banquan模块效果分析 三、HTML、CSS代码分模块展示 1. 头部header模块代码 2.导航及bann…

QQ个性网空间日志网站模板源码

QQ个性网空间日志网站模板源码自带后台登录设置,适用于博客、文章、资讯、其他类网站内容使用。模板自带eyoucms内核,原创设计、手工书写DIVCSS,完美兼容IE7、Firefox、Chrome、360浏览器等;主流浏览器;结构容易优化;多终端均可正常预览。由于…

保安维稳,四信以科技构筑高速公路安全智慧防线

近日,广东梅大高速发生严重塌方事故,造成了严重的人员伤亡和财产损失。这一事件在公众心中敲响了安全的警钟,再次引起了公众对于交通设施运营安全性的重点关注。 国务院安委会办公室和国家防灾减灾救灾委员会办公室等主管机构先后印发紧急通知…

FuTalk设计周刊-Vol.053

#AI漫谈 热点捕手 1.Midjourney推出新功能Room 用户可在聊天室中一起创作图像 Midjourney最近推出了一个有趣的新功能——Room,为用户提供了一个协作和社交平台,用户可以一起创建和分享图像,并参与实时聊天。Room促进了用户之间的互动和合作…

Mujava 工具的简单使用

首先下载openjava.jar和mujava.jar,以及自己手写一个mujava.config指向存放mujava的目录,并将这些文件放在mujava目录下。此时,基本的mujava环境就搭建好了。 分别创建src(存放源码文件)、classes(存放源码…

excel poi的titleRows 和 headRows含义

titleRows 这个参数的意思是:excel标题占多少行,而不是第几行headRows 这个参数的意思是:excel表头占几行,而不是第几行(多行的意思是合并的行数) 比如有一个excel如下,1-2行是标题&#xff0c…

webstorm新建vue项目相关问题

前言 这个迭代后端需求偏少,前端code的键盘都起火星子了。来了4个外包支持,1个后端3个前端,还是不够用啊。刚好趁这个机会稍微学习下vue,其实之前环境也配置过了,所以这里就不分享环境配置了,主要分享下新建…

Orangepi Zero2 linux系统摄像头设备文件名固定

文章目录 1. 寻找设备规则2. 使用udev规则修改挂载设备文件名称 问题: 在多次插拔usb摄像头或者在使用中不小心碰到或松了会导致设备文件名称变化,如从/dev/video1和/dev/video2变为/dev/video2和/dev/video3, 所以每次发生变化后都要充型修改代码或者重…

安全访问python字典:避免空键错误的艺术

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言 二、直接访问字典键的问题 三、使用get方法安全访问字典键 四、get方法的实际应…

C语言中的七种常用排序

今天&#xff0c;为大家整理了C语言中几种常用的排序&#xff0c;以及他们在实际中的运用&#xff08;有Bug请在下方评论&#xff09;&#xff1a; 一.桶排序 #include <stdio.h> int main() {int book[1001],i,j,t,n;for(i0;i<1000;i)book[i]0;scanf("%d"…

第八节 条件装配案例讲解

一、条件装配的作用是什么 条件装配是 Spring 框架中一个强大的特性&#xff0c;使得开发者能够创建更加灵活和可维护的应用程序。在 Spring Boot 中&#xff0c;这个特性被大量用于自动配置&#xff0c;极大地简化了基于 Spring 的应用开发。 二、条件装配注解 <dependen…

为什么要用虚拟时钟Virtual clock?

通常RTL设计要求对芯片/module的输入信号进行reg_in打拍处理&#xff0c;对芯片/module的输出也要求做reg_out打拍处理&#xff0c;这是良好的代码习惯&#xff0c;为时序收敛留下足够裕量&#xff0c;也避免顶层例化综合后的子模块时出现模块间IO时序不满足的情况。综合阶段可…

DNF手游攻略:角色培养与技能搭配!游戏辅助!

角色培养和技能搭配是《地下城与勇士》中提升战斗力的关键环节。每个职业都有独特的技能和发展路线&#xff0c;合理的属性加点和技能搭配可以最大化角色的潜力&#xff0c;帮助玩家在各种战斗中立于不败之地。接下来&#xff0c;我们将探讨如何有效地培养角色并搭配技能。 角色…

亿图图示——文本换行

一、点击文本框&#xff0c;选择更多 二、勾选文本换行

数据结构和算法基础(二)

树和二叉树——树的基本概念 树和二叉树——树转二叉树 树和二叉树——查找二叉树&#xff08;二叉排序树&#xff09; 树和二叉树——构造霍夫曼树&#xff08;最优&#xff09; 树和二叉树——线索二叉树 树和二叉树——平衡二叉树 图——基本概念 1、有向图 2、无向图 3、完…

Platformer Project

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