等保2.0:MySQL数据库测评
身份鉴别
身份鉴别A:应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换。
测评方法:
1)执行mysql -u root -p命令,查看是否提示输入口令鉴别用户身份。
mysql -u root -p
2)查询user表,应不存在相同的用户名。
mysql>  SELECT user,host FROM mysql.user;
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| mysql.session | localhost |
| mysql.sys    | localhost |      =====> 不存在相同的用户名
| root          | localhost |
+---------------+-----------+
3 rows in set (0.00 sec)
3)查看口令复杂度配置信息:
SHOW VARIABLES LIKE 'validate%';
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password_check_user_name    | OFF  |
| validate_password_dictionary_file    ||密码策略文件,策略为STRONG 才需要
| validate_password_length            | 3    |密码最少长度
| validate_password_mixed_case_count  | 0    |大小写字符长度
| validate_password_number_count      | 0    |数字最少个数
| validate_password_policy            | LOW  |修改口令策略
| validate_password_special_char_count | 1    |特殊字符最少个数
+--------------------------------------+-------+
7 rows in set (0.00 sec)
身份鉴别B:应检查数据库系统,查看是否已配置了鉴别失败处理功能,并设置了非法登录次数的限制值,对超过限制值的登录终止其鉴别会话或临时封闭帐号。查看是否设置网络登录连接超时,并自动退出。
测评方法:
1)询问管理员是否采取其他手段配置数据库登录失败处理功能。(若MySQL 数据库采用第三方管理软件,第三方管理软件也要设置登录失败锁定次数)2)数据库管理系统本地配置:
主要看这两个参数有没有设置:max_connect_errors、 Wait_timeout 。
mysql> SHOW VARIABLES LIKE 'max_connect_errors'; =====> 查看登录失败策略+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| max_connect_errors | 100  |
+--------------------+-------+
1 row in set (0.00 sec)
mysql> SHOW VARIABLES LIKE '%timeout%';        =====> 查看登录链接超时自动退出策略
+-----------------------------+----------+
| Variable_name              | Value    |
+-----------------------------+----------+
| connect_timeout            | 10      |
| delayed_insert_timeout      | 300      |
| have_statement_timeout      | YES      |
| innodb_flush_log_at_timeout | 1        |
| innodb_lock_wait_timeout    | 50      |
| innodb_rollback_on_timeout  | OFF      |
| interactive_timeout        | 28800    |
| lock_wait_timeout          | 31536000 |
| net_read_timeout            | 30      |
| net_write_timeout          | 60      |
| rpl_stop_slave_timeout      | 31536000 |
| slave_net_timeout          | 60      |
| wait_timeout                | 28800    |
+-----------------------------+----------+
13 rows in set (0.00 sec)
身份鉴别C:当进行远程管理时,应采取必要措施、防止鉴别信息在网络传输过程中被窃听。
测评方法:
1)看远程管理数据库时是否采用SSL(使用SSL:符合)。
mysql> SHOW VARIABLES LIKE '%have_ssl%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_ssl      | YES  |
+---------------+-------+
1 row in set (0.00 sec)
如果value为disabled说明此功能没有激活
2)本地管理,本条N/A
身份鉴别D:应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现。测评方法:
MySQL不能集成其他身份鉴别措施,应通过对操作系统层面实现双因素,访谈系统管理员,是否采用其他技术手段实现双因素身份认证,是否采用了两种或两种以上组合的鉴别技术,如口令、数字证书Ukey. 令牌、指纹等,是否有一种鉴别方法使用密码技术。
访问控制
访问控制A:应对登录的用户分配账户和权限。
测评方法:
使用命令查看,是否为登录的用户创建了不同账户和权限。
mysql> SELECT user,host FROM mysql.user;
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| mysql.session | localhost |
| mysql.sys    | localhost |
| root          | localhost |
+---------------+-----------+
3 rows in set (0.00 sec)
mysql> SHOW grants for 'root'@'localhost';  =====> 查看root账户权限
+---------------------------------------------------------------------+ | Grants for root@localhost                                          |
+---------------------------------------------------------------------+ | GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION | | GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRA
NT OPTION        | +---------------------------------------------------------------------+ 2 rows in set (0.00 sec)
访问控制B:应重命名或删除默认账户,修改默认账户的默认口令。
测评方法:
1)执行命令,输出结果查看root用户是否被重命名或被删除。
mysql> SELECT user,host FROM mysql.user;
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| mysql.session | localhost |
| mysql.sys    | localhost |
| root          | localhost |
+---------------+-----------+
3 rows in set (0.00 sec)
2)若root账户未被删除,是否更改其默认口令,避免空口令或弱口令。
访问控制C:应及时删除或停用多余的、过期的账户,避免共享账户的存在。测评方法:
1)查看并询问,是否存在无关账户,以下账户是否存在多余过期账户,若是多余过期的账户查看账户是否被禁用。
mysql> select user, host FROM mysql.user;
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| mysql.session | localhost |
| mysql.sys    | localhost |
| root          | localhost |
+---------------+-----------+
3 rows in set (0.00 sec)
2)询问管理员们是否使用各自账号登录系统,确定不存在共享账户。
访问控制D:应授予管理用户所需的最小权限,实现管理用户的权限分离
测评方法:
1)是否对用户进行角划分且只授予账号必须的权限
如除root外,任何用户不应该有mysql库user表的存取权限,禁止将
fil、.process、super权限授予管理员以外的账户。
2)查看权限表,并验证用户是否具有自身角外的其他用户的权限。
访问控制E:应由授权主体配置访问控制策略,访问控制策略规定主体对客体的访问规则。
测评方法:
1)访谈管理员是否制定了访问控制策略。
安装mysql失败2)执行命令查看用户权限列:
mysql>SELECT*FROM mysql.user\G
***************************1.row***************************
Host:localhost
User:root
Select_priv:Y