等保建设:打造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审计、审核全功能

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

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

相关文章

VsCode CMake调试QT无法查看源码问题处理

遇到的问题 当我们在VsCode使用CMake来调试QT程序时,想F11进入到QT源码时,发现进不去,无法查看源码。 原因 这种情况一般都是安装目录下没有pdb文件导致的。 PDB文件:是一个包含调试信息的数据库,它由编译器和链接器…

用UDP写一个回显服务器和一个字典服务器

回显服务器 操作系统提供了一些网络通信的api(socket)。 如: 回显服务器:请求是啥?响应就是啥。 一个正常的服务器要做三件事情: 1. 读取请求并解析。 2. 根据请求计算响应。 3. 把响应写回给客户端。…

【ETAS CP AUTOSAR工具链】ARXML文件详解

本篇文章首先对ARXML这种文件格式做了一个概述,叙述了这种标签语言的基本语法(如果您用HTML做过网页,那么这种格式您一定不会陌生),然后对ARXML文件都会包含的一些基本信息做了详细的解读,最后基于使用ISOL…

Android:使用Kotlin搭建MVP架构模式

一、简介Android MVP架构模式 MVP全称:Model、View、Presenter; View:负责视图部分展示Model:负责数据的请求、解析、过滤等数据层操作。Presenter:View和Model交互的桥梁。对应MVC中的C(controller&#x…

01.爬虫---初识网络爬虫

01.初识网络爬虫 1.什么是网络爬虫2.网络爬虫的类型3.网络爬虫的工作原理4.网络爬虫的应用场景5.网络爬虫的挑战与应对策略6.爬虫的合法性总结 1.什么是网络爬虫 网络爬虫,亦称网络蜘蛛或网络机器人,是一种能够自动地、系统地浏览和收集互联网上信息的程…

路由聚合和VRRP技术

实验拓扑图: 实验需求 1、内网IP地址使用172.16.0.0/16 2、SW1和SW2之间互为备份; 3、VRRP/stp/vlan/eth-trunk均使用; 4、所有pc均通过DHCP获取IP地址; 5、ISP只配置IP地址; 6、所有电脑可以正常访问ISP路由器环…

【学习笔记】Windows GDI绘图(五)图形路径GraphicsPath详解(上)

文章目录 图形路径GraphicsPath填充模式FillMode构造函数GraphicsPath()GraphicsPath(FillMode)GraphicsPath(Point[],Byte[])和GraphicsPath(PointF[], Byte[])GraphicsPath(Point[], Byte[], FillMode)和GraphicsPath(PointF[], Byte[], FillMode)PathPointType 属性FillMode…

[LLM-Agent]万字长文深度解析规划框架:HuggingGPT

HuggingGPT是一个结合了ChatGPT和Hugging Face平台上的各种专家模型,以解决复杂的AI任务,可以认为他是一种结合任务规划和工具调用两种Agent工作流的框架。它的工作流程主要分为以下几个步骤: 任务规划:使用ChatGPT分析用户的请求…

成犬必备!福派斯鲜肉狗粮,亮毛祛泪痕的神奇功效!

对于成犬来说,选择一款合适且高质量的狗粮至关重要。成犬时期的狗狗正处于身体和生理机能逐渐稳定的阶段,因此,需要选择能够满足其日常营养需求、维持健康状态并有助于长寿的狗粮。理想的狗粮应当包含狗狗所需的各种营养物质,如高…

齐护K210系列教程(三十一)_视觉小车

视觉小车 齐护编程小车端程序动作说明联系我们 在经常做小车任务项目时会用的K210的视觉与巡线或其它动作结合,这就关系到要将K210的识别结果传送给小车的主控制器,K210为辅助传感器(视觉采集)。 这节课我们用K210识别图像&#x…

Java 解决 古典问题

1 问题 编写一个Java程序,解决以下问题: 2 方法 再导入java.util包下的Scanner类,构建Scanner对象,以便输入。通过对问题的分析,我们可以得到,当位数为1时,其返回值为1;当位数为2时&…

IDEA 将多个微服务Springboot项目Application启动类添加到services标签,统一启动、关闭服务

IDEA 将多个微服务Springboot项目Application启动类添加到services标签,统一启动、关闭服务 首先在Views > Tool Windows > Services 添加services窗口 点击services窗口,首次需要添加配置类型,我们选择Springboot 默认按照运行状态分…

微软如何打造数字零售力航母系列科普11 - 什么是Microsoft Fabric中的数据工程?

什么是Microsoft Fabric中的数据工程? 目录 1. Lakehouse(湖边小屋) 2. Apache Spark Job Definition (作业定义) 3. Notebook(笔记本) 4. Data Pipeline (数据管道) Microsoft Fabric中的数据工程使用户能够设计、构建和维护基础架构和系统,使其组…

LabVIEW舱段测控系统开发

LabVIEW舱段测控系统开发 在航空技术飞速发展的当下,对于航空器的测控系统的需求日益增加,特别是对舱段测控系统的设计与实现。开发了一款基于LabVIEW开发的舱段测控系统,包括系统设计需求、系统组成、工作原理以及系统实现等方面。 开发了…

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

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

MyBatis实用方案,如何使项目兼容多种数据库

系列文章目录 MyBatis缓存原理 Mybatis plugin 的使用及原理 MyBatisSpringboot 启动到SQL执行全流程 数据库操作不再困难,MyBatis动态Sql标签解析 Mybatis的CachingExecutor与二级缓存 使用MybatisPlus还是MyBaits ,开发者应该如何选择? 巧…

【问题处理】maven一直提示artemis-http-client-1.1.8.jar报错(2024-05-25)

项目使用了视频监控,里面涉及到海康威视的视频监控。 问题: pom在导入maven时,报错“Could not find artifact com.artemis:http-client:jar:1.1.8 ” 原因: 根据平台提供的maven地址,填写进pom文件中,编…

汇编-16位汇编环境搭建

16位汇编环境 在学习16位汇编时,我选择的环境是在VMware中安装Windows XP虚拟机来学习;因为Windows XP提供了兼容的DOS环境,可以直接运行和调试16位汇编程序;在win10,win11环境中原生不支持直接运行 16 位程序&#x…

房地产画册制作成手机在线翻页效果

​随着科技的飞速发展,移动互联网已经深入到人们的日常生活中。在这个数字化的时代,房地产行业也紧跟潮流,将画册制作成手机在线翻页效果,以满足消费者的阅读习惯。 房地产画册制作成手机在线翻页效果,不仅能够满足消费…

mac清理软件推荐免费 mac清理系统数据怎么清理 cleanmymac和腾讯柠檬哪个好

macbook是苹果公司的一款高性能的笔记本电脑,受到了很多用户的喜爱。但是,随着使用时间的增长,macbook的系统也会积累一些垃圾文件,影响其运行速度和空间。那么,macbook系统清理软件推荐有哪些呢?macbook用…