a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换
1)使用如下命令查询账号:
select user, host,password from mysql.user;
#输出用户列表,查者是否存在相同用户名
2)执行如下语句查询是否在空口令用:
select * from mysql.user where length(password)= 0 or password is null;
# 输出结果是否为空
MySQL身份鉴别通过username+host+password来进行登录验证,鉴别因素三者不能同时为空
3)查看用户口今复杂度相关配置:
针对5.6.6之后版本
show variables like 'validate_password%';
validate_password_check_user_name:OFF
validate_password_dictionary_file: 字典文件
validate_password_length:8 密码长度
validate_password_mixed_case_count:1 大小写
validate_password_number_count:1 密码中数据长度
validate_password_policy:1 or MEDIUM
validate_password_special_char_count:1 特殊字符
4) 定期更换
MySQL5.6.6以后在user表中有一个password_last_changed字段,该字段默认为N修改为Y后可以通过定时器任务来进行密码修改。
select password_expired from mysql.user;
#该字段默认为N
b) 应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施
1)登录失败
show variables like '%max_connect_errors%';
# max_connect_errors 是用户输入密码最大错误次数,失败达到最大次数则锁定
show variables like '%timeout%';
# 查看返回值Wait_timeout,这个参数是超时重连的时间,每过N秒MySQL就会重启
c)当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听
这个通过询问看看使用的远程链接方式是什么,查询此连接工具是否具备远程连接加密措施
d)应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现
询问并核查是否采用双因子登录数据库,且其中一种属于密码技术
- 通常情况下都是用户名+口令,且数据库层面实现双因子登录比较困难