mysql安全加固配置文档(完结)
4. MySQL 权限安全配置
4.1. 确保只有管理员账号有所有数据库的访问权限
- 建议理由
- 除了管理员账号,其他用户没必要有所有数据库的访问权限。过高的权限会导致安全问题。
- 检查方法
- SELECT user, host FROM MySQL.user WHERE (Select_priv = 'Y') OR (Insert_priv = 'Y') OR (Update_priv = 'Y') OR (Delete_priv = 'Y') OR (Create_priv = 'Y') OR (Drop_priv = 'Y');
- SELECT user, host FROM MySQL.db WHERE db = 'MySQL' AND ((Select_priv = 'Y') OR (Insert_priv = 'Y') OR (Update_priv = 'Y') OR (Delete_priv = 'Y') 45 | Page OR (Create_priv = 'Y') OR (Drop_priv = 'Y'));
- 如果返回的都是管理员账号说明安全,否则需要对用户清除权限
- 修复建议
- 清除非管理员账号的过高部分权限
4.2. 非管理员账号file_priv不应该设置成Y
- 建议理由
- file_priv权限允许MySQL用户对磁盘进行读写操作。黑客很可能利用这一点盗取数据库中敏感数据。
- 检查方法
- select user, host from MySQL.user where File_priv = 'Y';
- 如果返回的都是管理员账号,否则需要对用户清除权限
- 修复建议
- REVOKE FILE ON *.* FROM '<user>’;
4.3. 非管理员账号process_priv不应该设置成Y
- 建议理由
- process_priv权限允许委托账号查看当前正在执行的sql语句。使用超越当前用户权限的权利。可以被攻击者所利用。
- 检查方法
- select user, host from MySQL.user where Process_priv = 'Y';
- 如果返回的都是管理员账号则是安全的,否则需要对用户清除权限
- 修复建议
- REVOKE PROCESS ON *.* FROM '<user>’;
4.4. 非管理员账号super_priv不应该设置成Y
- 建议理由
- super_priv权限允许委托账号执行任意语句,非管理员不应该具备该权限。
- 检查方法
- select user, host from MySQL.user where Super_priv = 'Y';
- 如果返回的都是管理员账号则是安全的,否则需要对用户清除权限
- 修复建议
- REVOKE SUPER ON *.* FROM '<user>’;
4.5. 非管理员账号shutdown_priv不应该设置成Y
- 建议理由
- shutdown_priv权限允许委托账号关闭数据库,会造成一定安全隐患。
- 检查方法
- SELECT user, host FROM MySQL.user WHERE Shutdown_priv = 'Y';
- 如果返回的都是管理员账号则是安全的,否则需要对用户清除权限
- 修复建议
- REVOKE SHUTDOWN ON *.* FROM '<user>’;
4.6. 非管理员账号create_user_priv不应该设置成Y
- 建议理由
- create_user_priv权限允许委托账号创建任意用户,会造成一定安全隐患。
- 检查方法
- SELECT user, host FROM MySQL.user WHERE Create_user_priv = 'Y';
- 如果返回的都是管理员账号则是安全的,否则需要对用户清除权限
- 修复建议
- REVOKE CREATE USER ON *.* FROM '<user>’;
4.7. 非管理员账号grant_priv不应该设置成Y
- 建议理由
- Grant_priv权限允许委托账号对其他用户赋权,可能会被黑客利用造成一定安全隐患。
- 检查方法
- SELECT user, host FROM MySQL.user WHERE Grant_priv = 'Y';
- 如果返回的都是管理员账号则是安全的,否则需要对用户清除权限
- 修复建议
- REVOKE Grant ON *.* FROM '<user>’;
4.8. 非管理员账号reload_priv不应该设置成Y
- 建议理由
- reload_priv权限可以对本地文件进行操作,可能会被黑客利用造成一定安全隐患。
- 检查方法
- SELECT user, host FROM MySQL.user WHERE reload_priv = 'Y';
- 如果返回的都是管理员账号则是安全的,否则需要对用户清除权限
- 修复建议
- REVOKE reload ON *.* FROM '<user>’;
4.9. 非管理员账号repl_slave_priv不应该设置成Y
- 建议理由
- repl_slave_priv用于从主服务器上获得更新的数据。黑客很可能利用这一点盗取数据库中敏感数据。
- 检查方法
- select user, host from MySQL.user where repl_slave_priv = 'Y';
- 如果返回的都是管理员账号,否则需要对用户清除权限
- 修复建议
- REVOKE repl_slave ON *.* FROM '<user>’;
4.10. 确保DML/DDL权限只在特定用户手上
- 建议理由
- 限制用户有INSERT,SELECT,UPDATE,DELETE,DROP,CREATE和ALTER权限。这些权限都会导致数据泄密等。
- 检查方法
- SELECT User,Host,Db FROM MySQL.db WHERE Select_priv='Y' OR Insert_priv='Y' OR Update_priv='Y' OR Delete_priv='Y' OR Create_priv='Y' OR Drop_priv='Y' OR Alter_priv='Y';
- 如果返回的都是管理员账号,否则需要对用户清除权限
- 修复建议
- REVOKE SELECT ON . FROM ; REVOKE INSERT ON . FROM ; REVOKE UPDATE ON . FROM ; REVOKE DELETE ON . FROM ; REVOKE CREATE ON . FROM ; REVOKE DROP ON . FROM ; REVOKE ALTER ON . FROM ;
5. 审计和日志安全配置
5.1. 确保log_error日志启动
- 建议理由
- 启用错误日志有可能会增加检测到针对MySQL的恶意攻击行为机会。为日后安全检查提供更多线索和证据。
- 检查方法
- SHOW variables LIKE 'log_error';
- 如果返回是空否,则存在安全问题需要修复
- 修复建议
- 打开MySQL配置文件把log_error配置到一个有效路径
5.2. 确保日志文件在非系统分区
- 建议理由
- 操作系统上有明确的系统分区和非系统分区。如果日志文件在系统分区,会提高整个系统因为磁盘空间用尽发生拒绝服务的几率。
- 检查方法
- 进入数据库执行下列语句
- SELECT @@global.log_bin_basename;
- df –h <上面的地址返回值> 如果发现结果中存在/ /var /usr 说明数据文件在系统分区建议换区
- 进入数据库执行下列语句
- 修复建议:打开MySQL配置文件
- 将log_bin设置成非系统分区路径
5.3. 确保log_raw被设置成off
- 建议理由
- 语句中的密码在写入一般查询日志时会被服务器重写,不会以明文方式记录。但如果log-raw被设置成ture,则会记成明文。
- 检查方法
- 打开数据库配置文件
- 确定log_raw被设置成off
- 如果是off是安全的,但如果是on则需要修复
- 修复建议:打开MySQL配置文件
- log_raw = OFF
5.4. 确保log_warnings被设置成2
- 建议理由
- log_warnings适用于决定日志中记录的内容的。默认是1随着级别的调整会记录更多信息。调整到2有助于通过日志追查安全问题。
- 检查方法
- 通过sql读取信息
- SHOW GLOBAL VARIABLES LIKE 'log_warnings';
- 如果返回值是1需要调整到2
- 通过sql读取信息
- 修复建议:打开MySQL配置文件
- log_warnings = 2
6. 身份认证安全配置
6.1. 确保密码不在全局变量中
- 建议理由
- MySQL配置文件(客户端部分)允许设置用户名和密码。使用密码参数可能会对用户的机密性造成负面影响。
- 检查方法
- 打开数据库配置文件
- 检查用户名和密码参数
- 如果是空的是安全的,但如果不是空的则需要修复
- 修复建议:打开MySQL配置文件
- 清理参数内容
6.2. 确保sql_mode中含有NO_AUTO_CREATE_USER
- 建议理由
- NO_AUTO_CREATE_USER是sql_mode的一个选项,可以阻止grant语句在特定情况下自动创建用户。给数据库带来安全隐患。
- 检查方法
- SELECT @@session.sql_mode;
- 如果返回值包含NO_AUTO_CREATE_USER是安全的,但如果不包含则需要修复
- 修复建议:打开MySQL配置文件
- 在sql_mode 中添加参数NO_AUTO_CREATE_USER
6.3. 确保没有用户使用空密码
- 建议理由
- 如果密码被设置成空密码,入侵者只要知道密码和主机允许列表,就可以绕过身份验证随意登录数据库。进行违规操作。
- 检查方法
- SELECT User,host FROM MySQL.user WHERE authentication_string='';
- 没有行数返回说明安全,否则需要配置
- 修复建议:给空白密码的账号配上密码
- SET PASSWORD FOR @'' = ''<user>@;<host>’ = ‘<clear password>’
6.4. 确保default_password_lifetimes少于或等于90天
- 建议理由
- 密码需要定期更换,才有意义,也才能更有效的防止黑客破解。
- 检查方法
- SHOW VARIABLES LIKE 'default_password_lifetime';
- 看返回值和90的关系如果大于90就需要修复
- 修复建议:设置全局变量
- SET GLOBAL default_password_lifetime=90
6.5. 确保用户不允许所有ip访问
- 建议理由
- 某一数据库用户支持所有ip访问,一旦账号密码泄露,数据库就变得很不安全。
- 检查方法
- SELECT user, host FROM MySQL.user WHERE host = '%';
- 结果集为空说明不存在问题,否则需要修复
- 修复建议
- 删除该用户会或通过alter删除 %,指定特定ip
6.6. 确保无匿名帐户存在
- 建议理由
- 匿名用户是空的,也没有密码。安全性很差,任意人员都可以利用匿名用户访问数据库。
- 检查方法
- SELECT user,host FROM MySQL.user WHERE user = '';
- 结果集为空说明不存在问题,否则需要修复
- 修复建议:删除匿名用户。
7. 网络安全配置
7.1. 确保have_ssl设置成yes
- 建议理由
- 所有网络请求必须走SSL/TLS访问数据库。杜绝网络劫持和网络拦截
- 检查方法
- SHOW variables WHERE variable_name = 'have_ssl';
- 返回yes不存在问题,否则需要修复
- 修复建议:开启ssh。
7.2. 确保ssl_type是 'ANY', 'X509', or 'SPECIFIED'
- 建议理由
- 所有网络请求必须走SSL/TLS访问数据库。SSL提供多种算法,其中一些算法安全性并不高不能帮助用户杜绝网络劫持和网络拦截。建议设置ssl_type为高安全类型的加密算法。但这其中有一个隐患,如果客户端使用较低加密算法,会由于算法无法匹配导致链接失败。
- 检查方法
- SELECT user, host, ssl_type FROM MySQL.user WHERE NOT HOST IN ('::1', '127.0.0.1', 'localhost');
- 确保每个用户返回的ssl_type等于ANY, X509, or SPECIFIED
- 修复建议:使用GRANT语句来使用要求的SSL
- GRANT USAGE ON *.* TO 'my_user'@'app1.example.com' REQUIRE SSL;
8. 复制数据传输中的安全配置
8.1. 确保MASTER_SSL_VERIFY_SERVER_CERT设置成yes或1
- 建议理由
- 在使用SSL时,证书验证对于验证正在进行连接的一方很重要。 在这种情况下,从属(客户端)应该在继续连接之前验证主服务器的证书以验证主服务器。MASTER_SSL_VERIFY_SERVER_CERT主要是用于检查证书,确保证书的合法性。
- 检查方法
- select ssl_verify_server_cert from MySQL.slave_master_info;
- ssl_verify_server_cert返回是1,否则需要修复
- 修复建议:修改MASTER_SSL_VERIFY_SERVER_CERT配置。
- STOP SLAVE;
- CHANGE MASTER TO MASTER_SSL_VERIFY_SERVER_CERT=1;
- START SLAVE;
8.2. 确保master_info_repository设置成table
- 建议理由
- master_info_repository设置成table.客户端使用的密码存储在表中。相较于文件系统表中更为安全。
- 检查方法
- SHOW GLOBAL VARIABLES LIKE 'master_info_repository';
- master_info_repository返回是table,否则需要修复
- 修复建议:打开配置文件
- master_info_repository=TABLE
相关文章:
mysql安全加固配置文档(完结)
4. MySQL 权限安全配置 4.1. 确保只有管理员账号有所有数据库的访问权限 建议理由 除了管理员账号,其他用户没必要有所有数据库的访问权限。过高的权限会导致安全问题。检查方法 SELECT user, host FROM MySQL.user WHERE (Select_priv Y) OR (Insert_priv Y) …...
CAPL函数在实现AES加密算法时遇到的各种问题(c++中符号的含义,AES算法中padding的问题等)
本来打算把AES算法的代码移植到CAPL中的,文章:https://blog.csdn.net/qq_28205153/article/details/55798628?spm=1001.2014.3001.5506里有非常详细的代码。但是一来太麻烦,二来没必要,因为CAPL提供了Security安全相关的函数: 这里面就提供了AES加密算法的接口函数,使用…...
二叉排序树(二叉查找树)基本操作_20230417
二叉排序树(二叉查找树)基本操作_20230417 前言 二叉排序树首先是一颗二叉树,它不同于常规二叉树的地方在于,如果左子树不为空,那么左子树上所有结点的值都不大于根节点的值,如果右子树不为空,…...
实现服务器版本的表白墙
目录 初始前端代码 网页初始效果 一、确定接口 二、编写代码 2.1 创建项目七步走 1、创建Maven项目 2、引入依赖 3、构建目录 4、编写代码 5、打包、部署 编辑 7、验证代码 三、具体的代码逻辑 3.1 服务器——两个服务接口 3.2 前端页面的代码 3.2.1 前端存档…...
TensorFlow 2 和 Keras 高级深度学习:6~10
原文:Advanced Deep Learning with TensorFlow 2 and Keras 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的形象&#x…...
unity,制作一个环状滑动条
介绍 unity,制作一个环状滑动条 方法 1.导入png图片素材2.新建一个滑动条,两者图片都设置为图片3.调节slider的参数4.调节backgroud的参数5.fill area、fill的参数同上。 得到两个叠加的圆环。6.设置fill的背景颜色为红色7.设置fill填充方式࿰…...
2023-04-17 算法面试中常见的树和递归问题
二叉树和递归 0 LeetCode297 二叉树的序列化和反序列化 序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据…...
3分钟通过日志定位bug,这个技能测试人必须会
♥ 前 言 软件开发中通过日志记录程序的运行情况是一个开发的好习惯,对于错误排查和系统运维都有很大帮助。 Python 标准库自带了强大的 logging 日志模块,在各种 python 模块中得到广泛应用。 一、简单使用 1. 入门小案例 import logging logging.ba…...
【论文总结】V-Shuttle:可扩展和语义感知的 Hypervisor 虚拟设备模糊测试
介绍 这是来自2021 CCS的一篇论文,作者有GaoningPan, Xingwei Lin, Xuhong Zhang, Yongkang Jia, Shouling Ji, Chunming Wu, Xinlei Ying, Jiashui Wang, Yanjun Wu。该论文提出V-shuttle的新框架来执行管控程序的模糊测试,该框架执行可扩展和语义感知…...
一篇文章让你搞懂TypeScript中的typeof()、keyof()是什么意思
TypeScript中的typeof()、keyof()是什么意思? 知识回调(不懂就看这儿!)场景复现核心干货👇👇👇举例引入字面量类型(literal types&…...
【机会约束、鲁棒优化】机会约束和鲁棒优化研究优化【ccDCOPF】研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
4月想跳槽的同学,没有更好的选择,可以去美团
在美团干了半年,说一下自己的感受,美团是一家福利中等,工资待遇中上,高层管理团队强大,加班强度一般,技术不错,办公环境一般,工作氛围中上,部门差距之间工作体验差距巨大…...
从输入url到页面展现(一)从浏览器解析url开始
前端面试有一道很考验人的问题,那就是:请你说一下从用户从输入url到页面展现的过程是怎样的?在接下来的一段时间呢,狗哥会从这一问题出发,开始剖析这个过程,希望可以让更多的小伙伴掌握到这个过程ÿ…...
购物 · 礼物
标题 前言必学场景词汇及用法书店花店玩具店讨价还价情境常用单词书店花店玩具店前言 加油 必学场景词汇及用法 书店 1.book store / book shop 书店 I browsed through the book store, but I didn’t find the book I was looking for. 我把书店里的书浏览了一番,但是没…...
可视化图表API格式要求有哪些?Sugar BI详细代码示例(2)
Sugar BI中的每个图表可以对应一个数据 API,用户浏览报表时,选定一定的过滤条件,点击「查询」按钮将会通过 API 拉取相应的数据;前面说过,为了确保用户数据的安全性,Sugar BI上的所有数据请求都在Sugar BI的…...
153. 寻找旋转排序数组中的最小值
已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums [0,1,2,4,5,6,7] 在变化后可能得到: 若旋转 4 次,则可以得到 [4,5,6,7,0,1,2] 若旋转 7 次࿰…...
Linux 文件描述符
Linux 文件描述符 Linux 中一切皆文件,比如 C 源文件、视频文件、Shell脚本、可执行文件等,就连键盘、显示器、鼠标等硬件设备也都是文件。 一个 Linux 进程可以打开成百上千个文件,为了表示和区分已经打开的文件,Linux 会给每个…...
第17章_反射机制
第17章_反射机制 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 本章专题与脉络 1. 反射(Reflection)的概念 1.1 反射的出现背景 Java程序中,所有的对象都有两种类型:编…...
使用VBA小程序提高资产清查效率
资产清查是一件相当烦人的工作,去年使用LayUIPHPMS SQL Server 2014写了一个资产清查的程序,可惜写完了,LayUI已经停止更新了,就没有再完善下去,数据也没有更新,等于就废了。 今年又要进行资产清查…...
JavaSE学习进阶day07_02 异常
第三章 异常 3.1 异常概念 异常,就是不正常的意思。在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是: 异常 :指的是程序在执行过程中,出现的非正常的情况࿰…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
