[mysql]安全加固

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: [mysql]安全加固

前言

因等保安全的要求,需要对MySQL用户密码和登录策略进行安全加固,以满足以下需求:

  • 密码至少8位,包含大小写字母、数字和特殊字符。
  • 当密码登录失败一定次数后锁定账户。
  • 密码90天过期

本文使用的MySQL版本为8.0.33,不同版本可能会有区别。

安装插件

-- 密码复杂度插件
install plugin validate_password soname 'validate_password.so';
-- 登录失败锁定插件
install plugin connection_control soname 'connection_control.so';
-- 查看插件
show plugins;

配置密码复杂度

  1. 查看相关参数
SHOW GLOBAL VARIABLES LIKE '%validate_password%';
参数 说明
validate_password_check_user_name 设置为ON时表示能将密码设置为用户名
validate_password_dictionary_file 检查密码时的字典文件路径
validate_password_length 密码最小长度,默认为8
validate_password_mixed_case_count 大写和小写字母最少数量,默认为1
validate_password_number_count 密码中数字最少数量,默认为1
validate_password_policy 密码强度,默认为MEDIUM,可选LOW、STRONG。STRONG比MEDIUM多配置一个密码字典;LOW只有长度限制
validate_password_special_char_count 特殊字符数量,默认为1
  1. 修改密码长度参数,至少12位
SET GLOBAL validate_password_length=12;
  1. 测试,创建用户
-- 用弱密码测试,应该会提示 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements  
create user 'user10'@'%' identified by '123456';
-- 用11位密码测试,也应该会失败
create user 'user10'@'%' identified by 'kQ8!rG2*qA0';
-- 用12位密码测试,成功
create user 'user10'@'%' identified by 'kQ8!rG2*qA01';
-- 如果用户测试完不使用,最好删除
drop user 'user10'@'%';
  • 卸载插件。如果插件不想用,则可以选择卸载
uninstall  plugin validate_password;

配置登录失败锁定

  1. 查看相关参数
SHOW GLOBAL VARIABLES LIKE '%connection_control%';
参数 说明
connection_control_failed_connections_threshold 登录失败次数,默认为3
connection_control_max_connection_delay 最大延迟登录时间,单位毫秒。当一个新的连接到达MySQL时,如果当前连接数已经超过了最大连接数,且新连接请求延迟时间超过该参数的值,MySQL将拒绝该连接请求。
connection_control_min_connection_delay 最小延迟登录时间,单位毫秒。当一个新的连接到达MySQL时,如果当前连接数已经超过了最大连接数,且新连接请求延迟时间小于该参数的值,MySQL将延迟该连接请求。
  1. 修改connection_control_min_connection_delay参数的值为300000毫秒,即300秒、5分钟
set global connection_control_min_connection_delay=300000;
  1. 测试。使用错误的密码登录测试,错误登录三次后再登录会等待5分钟才能连接。

配置密码过期策略

相关参数为default_password_lifetime,默认值为0。

set global default_password_lifetime=90;

修改该参数只会对新用户有效,对于已经创建的用户需要手动设置密码过期

-- 立即过期
alter user 'user10'@'%' PASSWORD EXPIRE;
-- 90天后过期
alter user 'user10'@'%' PASSWORD EXPIRE INTERVAL 90 DAY;
-- 永不过期
alter user 'user10'@'%' PASSWORD EXPIRE NEVER;

固化配置

以上配置命令在MySQL重启后就会失效,因此需要将配置写到配置文件中。

[mysqld]
default_password_lifetime = 90
plugin-load-add=validate_password.so
validate_password=FORCE
validate_password_length=12
validate_password_check_user_name=OFF
validate_password_mixed_case_count=1
validate_password_number_count=1
validate_password_policy=MEDIUM
validate_password_special_char_count = 1
plugin-load-add=connection_control.so
connection_control=FORCE
connection_control_min_connection_delay=300000
connection_control_failed_connections_threshold=3

参考

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
存储 SQL 安全
MySQL 安全加固配置(等保二级)
数据库安全是等保测评和网络安全中的重要的一项内容,本文介绍一些常见的加固配置。
4893 0
|
NoSQL 安全 MongoDB
MongoDB 未授权访问漏洞利用
MongoDB 未授权访问漏洞利用
2554 0
|
4月前
|
机器学习/深度学习 人工智能 测试技术
HumanOmniV2 比你还懂“社交潜台词”!
如何让AI真正“读懂”人心?本文通过分析相亲对话案例,揭示当前多模态大模型在全局上下文理解和深度逻辑推理上的不足,并介绍全新模型HumanOmniV2的创新机制,如强制性上下文总结和多维度奖励机制,显著提升AI对人类复杂意图的理解能力。
135 1
|
7月前
|
人工智能 自然语言处理 Java
效率飙升!3 款免费 AI 神器,让代码编写快到飞起
在快节奏的软件开发中,效率至关重要。本文推荐三款免费AI工具助力开发者:ChatCode基于自然语言生成高质量代码框架;CodeChecker实时检查语法与风格问题,提升代码规范性;飞算JavaAI通过一键生成完整工程代码,大幅缩短开发周期。这些工具从不同角度优化开发流程,让开发者事半功倍。
|
安全 关系型数据库 MySQL
mysql 安装插件 validate_password
mysql 安装插件 validate_password
863 0
|
弹性计算 Linux 数据安全/隐私保护
【阿里云幻兽帕鲁】搭建 密码 存档 使用 费用 常见问题合集
本文持续更新幻兽帕鲁玩家在阿里云上遇到的问题及解法。
66642 91
【阿里云幻兽帕鲁】搭建 密码 存档 使用 费用 常见问题合集
AttributeError: module 'torchaudio' has no attribute 'io'问题解决
【5月更文挑战第27天】AttributeError: module 'torchaudio' has no attribute 'io'问题解决
256 2
|
Java 关系型数据库 MySQL
基于springboot的数码论坛系统设计与实现
基于springboot的数码论坛系统设计与实现
|
缓存 网络协议 JavaScript
【面试题】前端面试复习6---性能优化
【面试题】前端面试复习6---性能优化
324 1
|
API Python
Python3,Moviepy,一款功能强大且操作简单的视频剪辑神库。
Python3,Moviepy,一款功能强大且操作简单的视频剪辑神库。
709 3