mysql安全加固-用户认证

目的

设置密码策略性,以及配置创建可以有效的保障用户认证安全。降低部分威胁风险。

概念

通过validate_password去检测密码的各项策略,通过编辑参数从而达到修改密码策略配置。
定义NO_AUTO_CREATE_USER,可防止GRANT语句在未提供身份验证信息时自动创建用户

用户认证-密码复杂性

说明:密码​​复杂性包括密码特征,如长度,大小写,长度和字符集。复杂密码有助于缓解字典,暴力破解和其他密码攻击。此建议可防止用户选择容易被猜到的弱密码。
检测:执行以下SQL语句来评估此建议:

SHOW VARIABLES LIKE 'validate_password%'; 

MySQL默认设置运行结果:

6ebd04cc1fbe9419c2961804e0391f03.png

  • length:密码最小长度,此处为8
  • mixed_case_count:大小写字符长度,至少1个
  • number_count :数字至少1个
  • special_char_count:特殊字符至少1个

为保证密码复杂性:

  • validate_password_length应为14或更多
  • validate_password_mixed_case_count应为1或更多
  • validate_password_number_count应为1或更多
  • validate_password_special_char_count应为1或更多
  • validate_password_policy应为MEDIUM或STRONG

加固:

在/etc/my.cnf里添加:

plugin-load=validate_password.so
 validate-password=FORCE_PLUS_PERMANENT
 validate_password_length=14
 validate_password_mixed_case_count=1
 validate_password_number_count=1
 validate_password_special_char_count=1
 validate_password_policy=MEDIUM 

重启mysql服务
以管理员账户登录,检查密码复杂性:
4946824b598f4b80f959363c86dec6f5.png

用户认证-设置NO_AUTO_CREATE_USER

sql-mode定义了mysql应该支持的sql语法,数据校验等
NO_AUTO_CREATE_USER是sql_mode的一个选项,可防止GRANT语句在未提供身份验证信息时自动创建用户。
空白密码否定了身份验证机制提供的好处。如果没有此设置,管理用户可能会在没有密码的情况下意外创建用户。
检测:执行以下SQL语句来评估此建议:

SELECT @@global.sql_mode;
SELECT @@session.sql_mode;

确保每个结果包含NO_AUTO_CREATE_USER
8d8b6589edefd731ac8944aba6c24e36.png
加固:执行以下操作以修复此设置:

1.打开MySQL配置文件(my.cnf)
2.在[mysqld]区域中找到sql_mode
3.将NO_AUTO_CREATE_USER添加到sql_mode设置

1af37f81acfb44cae25899648b994584.png

添加新评论