一、身份鉴别
a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换;
注:MySQL数据库对于用户的标识和其它数据库有些不一样,不仅仅是用户名,而是username + host。MySQL从5.7以上开始,密码字段不是password,而是authentication_string。要满足密码复杂度必须在my.ini配置文件中安装plugin-load-add=validate_password.dll(Windows/Linux为plugin-load-add=validate_password.so)插件。
查看版本[lc1] :select version();
1)尝试登录数据库,执行mysql -u root -p(linux下)查看是否提示输入口令鉴别用户身份。
2)使用如下命令查询账号select user, host FROM mysql.user 结果输出用户列表,查者是否存在相同用户名。结果默认不存在同名用户。
将第一个删除就符合了。
3)执行如下语句查询是否在空口令用户:select * from mysql.user where length(password)= 0 or password is null或者select user,authentication_string from user;(mysql 5.7以上识别第二条命令)通过查看不存在空口令用户。
select user ,host,authentication_string from mysql.user where authentication_string is null;
4)执行如下语句查看用户口今复杂度相关配置:show variables like 'validate%';下面我提前配置过,配置合理。默认情况下未配置,为空。
validate_password_policy:密码安全策略,默认MEDIUM策略
validate_password_dictionary_file:密码策略文件,策略为STRONG才需要
validate_password_length:密码最少长度
validate_password_mixed_case_count:大小写字符长度,至少1个
validate_password_number_count :数字至少1个
validate_password_special_char_count:特殊字符至少1个
b) 应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施;
1)MySQL数据库采用第三方管理软件,且第三方管理软件设置登录失败锁定次数;
登录失败功能也需要mysql安装connection_control.dll或者connection_control.so插件才能实现
Show plugins;
mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS
FROM INFORMATION_SCHEMA.PLUGINS
WHERE PLUGIN_NAME LIKE 'connection%';
show variables like '%connection_control%';
select plugin_name,plugin_status from information_schema,plugins where plugin_name like ‘connection%’;
1)询问管理员是否采取其他手段配置数据库登录失败处理功能。
2)执行show variables like '%timeout%';或核查my.cnf或者my.ini文件,应设置如下参数: