2022能力验证MySQL数据库的测评条款共有9条,考察的有身份鉴别、访问控制、安全审计、数据保密性 四个大点,这期就对这些条款测评要点以及预设问题进行分析。
首先我们先确定MySQL数据库安装在哪,毕竟要连接登录查看嘛,确定其安装在Linux服务器上后,可通过跳板机的HeidiSQL 连接工具进行远程管理。
输入对应的IP地址以及账号口令,我们成功登录对应数据库
接着我们就来看看当时具体的测评结果记录是一个什么情况。
老规矩,咱们先看看官方给出的结果描述
首先身份鉴别a)条款,我们等保要测的就是用户登录的鉴别信息是否具有复杂度且是否定期更换,这是我们正常做等保时候的思路,但是能力验证一般常考的是让你去寻找是否有绕过正常登录的方式,好比Linux操作系统的pam模块身份验证绕过(可看我之前的Linux主机能力验证文章)。
那么测评mysql数据库的时候,我们第一个要去看的就是它的配置文件,确认是否可以绕过身份验证。我们先了解一下,如何不输入密码即可登录mysql的方法。
在配置文件(Linux系统一般为 /etc/my.cnf)中添加如下字段:
在[mysqld]下添加 skip-grant-tables
此时的用户为
知道有这种方式后,我们再来看看现场截图情况:
查看配置文件cat /etc/my.cnf 发现并无对应参数
第一步确认了没问题,那么我们就放心了,按照我们的步骤来查,先确定有哪些账户,并查看是否存在空口令账户(authentication_string 值为空的)。
select user,host,authentication_string from mysql.user;
确定没有什么问题,接着查看口令复杂度策略是否设置
show variables like 'validate_password%';
我们再看密码复杂度要求校验的时候最开始要看的参数为validate_password_policy
这个参数用于控制validate_password的验证策略0=low 1=MEDIUM 2=strong。
这种情况下只要密码达到validate_password_length指定的长度后就行。
综上所述,如果validate_password_policy=0(MEDIUM)时,你后续配置的大小写个数、字符数等等,均不生效,生效的仅有密码长度。
validate_password_length: 密码长度的最小值(这个值最小要是4)。
validate_password_number_count: 密码中数字的最小个数。
validate_password_mixed_case_count: 大小写字母(同时)的最小个数。
validate_password_special_char_count: 特殊字符的最小个数。
validate_password_dictionary_file: 字典文件
所以上述配置强制密码策略要求为:密码至少包含大小写字母、数字、特殊字符至少1个,密码长度不小于10。
再看是否有密码最大使用期限设置,查看default_password_lifetime 参数
show global variables like 'default_password_lifetime';
另外千万别忘了去对照关键资产的安全策略,由于长度和更换周期有问题,所以该条部分符合
另外,一般现场测评查看用户密码是否定期更改,还可以查看各用户最后一次修改密码的时间,这样对照会更准确
select user,host,password_lifitime from mysql.user;
接着看身份鉴别b),查看MySQL的登录失败处理功能
show variables like 'connection_control%';