等保三级:mysql数据库加固思路
本文采用Mysql8.0.31进行加固,具体命令与Mysql5.x版本命令存在差异,但思路无差,可进行参考。
文章目录
常规操作
create user 'root'@'%' identified by '********'; //创建用户
alter user 'root'@'%' identified with mysql_native_password by '********'; //修改密码
rename user 'root'@'%' to 'root'@'192.168.1.1'; //重命名
flush privileges; //刷新权限
grant all privileges on *.* to 'root'@'192.168.1.%'; //赋予权限
revoke all privileges on *.* to 'root'@'%'; //收回权限
select current_user(); //查看当前登录的用户
select current_role(); //查看当前登录的角色
mysqldump -uroot -p mysql>mysql.sql //导出mysql数据库
create database xiaozhou_db; //创建xiaozhou数据库
show databases; //展示所有数据库
drop database xiaohzou_db; //删除数据库
alter user 'root'@'localhost' identified with mysql_native_password by 'xlpszqdbb'; //修改密码
show variables like 'port'; //查看端口
一、身份鉴别
a) 测评内容
应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换
要求:建议身份密码登录,身份标识具有唯一性,身份鉴别信息具有复杂度要求,密码长度最少为8位,密码由数字、字母大小写、特殊符号组成、并设置定期更换,更换时间最长位90天。
1.查看所有用户:
select user,host from mysql.user;
示例如下:

2.查看密码复杂度插件:
select * from mysql.`plugin`;
示例如下:

查看mysql的插件,发现mysql8.0 并没有校验插件,然后查看插件包,发现有这个插件,则对该插件进行安装。

命令如下:
install plugin validate_password soname 'validate_password.so';

3.卸载默认密码复杂度插件
auth_socket.so插件为测试环境,顾我们将其卸载
命令如下:
uninstall plugin auth_socket.so;

4.密码复杂度插件配置
show variables like 'validate%';

+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password_check_user_name | ON |
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | MEDIUM |
| validate_password_special_char_count | 1 |
+--------------------------------------+--------+
- validate_password_check_user_name,ON为打开
- validate_password_dictionary_file用于配置密码的字典文件,当validate_password_policy设置为STRONG时可以配置密码字典文件,字典文件中存在的密码不得使用
- validate_password_length用来设置密码的最小长度,默认值是8最小是0
- validate_password_mixed_case_count当validate_password_policy设置为MEDIUM或者STRONG时,密码中至少同时拥有的小写和大写字母的数量,默认是1最小是0;默认是至少拥有一个小写和一个大写字母。
- validate_password_number_count当validate_password_policy设置为MEDIUM或者STRONG时,密码中至少拥有的数字的个数,默认1最小是0
- validate_password_special_char_count当validate_password_policy设置为MEDIUM或者STRONG时,密码中至少拥有的特殊字符的个数,默认1最小是0
5.密码有效期配置
show global variables like 'default_password_lifetime';

修改命令为:
set global default_password_lifetime = 90;

查看user表的几个关键字段:它们的单位都是天,当password_lifetime 为null时,则代表该用户当前口令的有效期是使用的全局变量,而default_password_lifetime 为0代表有效期永远。
查看密码有效期状态:
select user,host,password_lifetime,password_last_changed from mysql.user;

b) 测评内容
应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施
要求:建议数据库配置登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施,可采取登录失败五次锁定三十分钟;登陆超时设置为30分钟自动退出。
1.查看失败锁定策略:
show variables like "%connection_control%";

空表表示未安装插件,故我们进行插件安装
install plugin connection_control soname "connection_control.so";
install plugin connection_control_failed_login_attempts soname 'connection_control.so';

查看插件状态:
select plugin_name,plugin_status from INFORMATION_SCHEMA.PLUGINS where PLUGIN_NAME LIKE 'connection%';

再次对策略进行查询,发现以下情况
mysql> show variables like "%connection_control%";
+-------------------------------------------------+------------+
| Variable_name | Value |
+-------------------------------------------------+------------+
| connection_control_failed_connections_threshold | 3 |
| connection_control_max_connection_delay | 2147483647 |
| connection_control_min_connection_delay | 1000 |
+-------------

最低0.47元/天 解锁文章
6893

被折叠的 条评论
为什么被折叠?



