买一个网站服务器多少钱,深圳龙岗房价2023最新价格,网站建站如何做seo,免费wordpress空间导览
前言Q#xff1a;如何保障MySQL数据库身份鉴别的有效性一、有效性检查 1. 用户唯一2. 启用密码验证3. 是否存在空口令用户4. 是否启用口令复杂度校验5. 是否设置口令的有效期6. 是否限制登录失败尝试次数7. 是否设置#xff08;超过尝试次数#xff09;锁定的最小时长…导览
前言Q如何保障MySQL数据库身份鉴别的有效性一、有效性检查 1. 用户唯一2. 启用密码验证3. 是否存在空口令用户4. 是否启用口令复杂度校验5. 是否设置口令的有效期6. 是否限制登录失败尝试次数7. 是否设置超过尝试次数锁定的最小时长8. 是否设置保持登录的有效期 二、应对方案 1. 空口令问题2. 口令复杂度 2.1 安装插件2.2 参数解释 2.2.1 validate_password_policy2.2.2 配套参数 2.3 调整参数 3. 口令有效期4. 设置登录失败处理 4.1 安装插件4.2 参数解释4.3 调整参数 5. 设置登录保持时间 结语精彩回放
前言
MySQL的身份鉴别是数据库安全的核心命题之一。在每日“拧螺丝”的工作中我们的开发人员可能会忽略这个问题。正因如此博主以这个契机向大家做一次专题介绍。看过此文相信你能够“上应付得了等保下对得起公司”。 Q如何保障MySQL数据库身份鉴别的有效性 提示本文示例均已MySQL5.7为例通过root用户执行相关命令。 如何保障MySQL数据库身份鉴别有很多手段进行识别。博主通过SQL的方式进行逐一介绍。
一、有效性检查
1. 用户唯一
检查授权的用户是否唯一
SELECT USER, HOST FROM mysql.user;2. 启用密码验证
检查PLUGIN是否包含*_password
-- mysql_native_password身份验证插件
SELECT USER, HOST, PLUGIN FROM mysql.user;3. 是否存在空口令用户
检查authentication_string是否存在空值
-- authentication_string加密后密码即执行password()后的值
SELECT USER, HOST, PLUGIN, authentication_string FROM mysql.user;4. 是否启用口令复杂度校验
检查validate_password插件是否已启用
-- 如果为空证明未启用该插件
SHOW VARIABLES LIKE validate%;5. 是否设置口令的有效期
-- 默认0永不过期
SHOW VARIABLES LIKE %default_password_lifetime%;6. 是否限制登录失败尝试次数
-- 如为空代表未设置可无限尝试
SHOW VARIABLES LIKE %connection-control-failed-connections-threshold%;7. 是否设置超过尝试次数锁定的最小时长
-- 如为空代表未设置永不锁定
SHOW VARIABLES LIKE %connection-control-min-connection-delay%;8. 是否设置保持登录的有效期
-- 默认0代表永不退出登录
SHOW VARIABLES LIKE %wait_timeout%;二、应对方案
针对第一部分的有效性检查中涉及不满足的配置项我们可以通过以下措施加以弥补。
1. 空口令问题
如存在空口令可通过root执行以下命令
alter user [USER][HOST] identified by [PASSWORD];2. 口令复杂度
如未启用口令复杂度可能会遇到暴力破解因此建议设置相关项。
2.1 安装插件
MySQL默认预留了口令复杂度插件validate_password。我们只需要通过root用户安装即可
INSTALL PLUGIN validate_password SONAME validate_password.so;查看是否安装成功如看到以下记录代表成功
SHOW VARIABLES LIKE validate%;2.2 参数解释
为加深各位盆友的理解博主对返回的参数加以说明。
2.2.1 validate_password_policy
MySQL的密码策略包含以下3种 LOW 或 0 代表密码必须满足指定长度。 MEDIUM 或 1默认 代表密码必须至少包含1个大写字母、1个小写字母、1个数字和1个特殊字符。 STRONG 或 2 在满足MEDIUM的基础上不允许存储在字典文件dictionary file中。
2.2.2 配套参数
参数名称
用途
validate_password_length
定义密码长度默认8位适用于LOW 策略。
validate_password_mixed_case_count
定义大、小写字母的个数默认1适用于非LOW策略。
validate_password_number_count
定义数字的个数默认1适用于非LOW策略。
validate_password_special_char_count
定义特殊字符的个数默认1适用于非LOW策略。
2.3 调整参数
掌握了参数特征后我们可以按需调整相关参数的值以满足安全需要执行命令如下
--必须以root身份执行且拥有super权限。
set global [具体参数名称][VALUE];3. 口令有效期
如满足口令定期更换的安全要求时必须设置口令的有效期
-- 必须以root身份执行设置有效期为90天
set global default_password_lifetime90;4. 设置登录失败处理
假如要求你限制登录失败的次数以及失败次数达到上限后锁定用户你该怎么办先不急且听博主分解。
4.1 安装插件
满足上述要求需要安装MySQL自带的插件connection_control命令如下
-- 必须以root身份执行
INSTALL PLUGIN CONNECTION_CONTROL SONAME connection_control.so;
INSTALL PLUGIN CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS SONAME connection_control.so;4.2 参数解释
参数名称
用途
connection_control_failed_connections_threshold
登录失败尝试次数默认3如0代表不限制。
connection_control_max_connection_delay
登录失败次数满后再次响应的最大延迟时间毫秒建议默认
connection_control_min_connection_delay
登录失败次数满后再次响应的最小延迟时间毫秒。
4.3 调整参数
掌握了参数特征后我们同样可以按需调整相关参数的值执行命令如下
--必须以root身份执行且拥有super权限。
set global [具体参数名称][VALUE];5. 设置登录保持时间
设置保持登录的有效期过期自动退出登录状态
-- 必须以root身份执行设置保持登录的有效期为1800秒
set global wait_timeout1800;结语
本文通过案例介绍的方式针对MySQL不同的安全场景制定差异化的解决办法。当然完成该过程离不开MySQL自带的插件或访问控制能力。 走过的、路过的盆友们点点赞收收藏并加以指导以备不时之需哈~ 精彩回放 MySQL系列之数据授权privilege MySQL系列之如何在Linux只安装客户端 MySQL系列之如何正确的使用窗口函数基于8.0版本 MySQL系列之数据导入导出 MySQL系列之索引入门上 MySQL系列之索引入门下