目的
设置密码策略性,以及配置创建可以有效的保障用户认证安全。降低部分威胁风险。
概念
通过validate_password去检测密码的各项策略,通过编辑参数从而达到修改密码策略配置。
定义NO_AUTO_CREATE_USER,可防止GRANT语句在未提供身份验证信息时自动创建用户
用户认证-密码复杂性
说明:密码复杂性包括密码特征,如长度,大小写,长度和字符集。复杂密码有助于缓解字典,暴力破解和其他密码攻击。此建议可防止用户选择容易被猜到的弱密码。
检测:执行以下SQL语句来评估此建议:
SHOW VARIABLES LIKE 'validate_password%';
MySQL默认设置运行结果:
- 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服务
以管理员账户登录,检查密码复杂性:
用户认证-设置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
加固:执行以下操作以修复此设置:
1.打开MySQL配置文件(my.cnf)
2.在[mysqld]区域中找到sql_mode
3.将NO_AUTO_CREATE_USER添加到sql_mode设置