等保三级-MySQL 加固

1、身份鉴别

要求:建议身份密码登录,身份标识具有唯一性,身份鉴别信息具有复杂度要求,密码长度最少为8位,密码由数字、字母大小写、特殊符号组成、并设置定期更换,更换时间最长位90天
(1)查看所有用户:

select user,host from mysql.user;

在这里插入图片描述
(2)查看密码复杂度插件

select * from mysql.plugin;

在这里插入图片描述
发现mysql8.0 并没有校验插件,然后查看插件包,发现有这个插件,则对该插件进行安装。

install plugin validate_password soname 'validate_password.so';

在这里插入图片描述
(3)卸载默认密码复杂度插件

uninstall plugin auth_socket.so;

在这里插入图片描述
(4)密码复杂度插件配置

show variables like 'validate%';

在这里插入图片描述
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;

在这里插入图片描述
查看修改结果
在这里插入图片描述
当password_lifetime 为null时,则代表该用户当前口令的有效期是使用的全局变量,而default_password_lifetime 为0代表有效期永远。

(6)查看密码有效期状态

select user,host,password_lifetime,password_last_changed from mysql.user;

在这里插入图片描述

2、测评内容

(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%';

在这里插入图片描述
对策略进行查询

show variables like "%connection_control%";

在这里插入图片描述
加固修改命令

set global connection_control_failed_connections_threshold = 5;
set global connection_control_max_connection_delay = 1800000;
set global connection_control_min_connection_delay = 1800000;

connection_control_failed_connections_threshold:在服务器增加后续连接尝试的延迟之前,允许客户端进行的连续失败连接尝试的次数。
connection_control_min_connection_delay:对于超出阈值的每个连续连接失败,要添加的延迟量。
connection_control_max_connection_delay:要添加的最大延迟。

(2)查看连接超时退出策略

show global variables like '%timeout'; 

在这里插入图片描述
这三个参数
wait_timeout
interactive_timeout
connect_timeout
加固修改命令如下

set global wait_timeout=1800;
set global interactive_timeout=1800;
set global connect_timeout=10;

在这里插入图片描述

3、远程管理测评内容

要求:建议远程管理数据库时建议使用堡垒机+ssh防止鉴别信息在网络传输过程中被窃听
(1)查询ssl是否开启 yes是开启了ssl,disable则表示没有

show variables like "%ssl%";

在这里插入图片描述

(2)开启ssl加密传输

set global have_openssl=yes;
set global have_ssl=yes;

(3)查询是否使用ssl

status

在这里插入图片描述
(4)生成ssl证书

退出数据库,我用的是Linux,所以到Linux命令行界面进行操作
查版本

mysql_ssl_rsa_setup
或
mysqld_ssl_rsa_setup

数据库安装位置

find ./ -name "mysql_ssl_rsa_setup"
find ./ -name "mysqld_ssl_rsa_setup"

在这里插入图片描述
数据库是默认有证书文件,所以执行时没有返回值
在这里插入图片描述
找证书位置

find ./ -name "*.pem"

在这里插入图片描述
在这里插入图片描述
(5)配置ssl证书
修改mysql配置文件,找到my.cnf

[mysqld]
ssl-ca=/var/lib/mysql/ca.pem
ssl-cert=/var/lib/mysql/server-cert.pem
ssl-key=/var/lib/mysql/server-key.pem

[mysql]
ssl-ca=/var/lib/mysql/ca.pem
ssl-cert=/var/lib/mysql/client-cert.pem
ssl-key=/var/lib/mysql/client-key.pem

在这里插入图片描述
重启数据库,然后再登录数据库查看

4、用户测评内容

(1)创建两个测试用户
一个测试用户为密码登录,一个为密码+ssl证书登录

create user 'test'@'%' identified by 'Test@123456';
create user 'testssl'@'%' identified by 'Test@123456' require ssl;

在这里插入图片描述
(2)分别用两个测试用户进行登录
在这里插入图片描述
服务器登录ssl账户进行测试是可以输密码直接进入的,所以我们用远程工具进行连接
在这里插入图片描述
客户端加入秘钥
在这里插入图片描述

5、访问控制测评

应对登录的用户分配账户和权限;
应重命名或删除默认账户,修改默认账户的默认口令
应及时删除或停用多余的、过期的账户,避免共享账户的存在;
应授予管理用户所需的最小权限,实现管理用户的权限分离;
要求:建议建立、操作员、审计员、安全管理员等角色,安全管理为制定安全策略人员、操作员为日常操作用户、审计员只需具有审计日志查看权限;实现用户所需权限最小化,和管理用户权限分离。
(1)创建3个角色
操作员:负责业务层面开发,对应我们开发人员。
审计员:只需对日志具有审查权限
管理员:拥有所有的权限,制定安全策略。

create role 'System','Security','guanliyuan';

(2)分配权限

grant all privileges on *.* to 'System'@'%' with grant option;
grant reload,process,Alter,Create User,Create View,select,show databases,show view,update,file on *.* to 'Security'
@'%';
grant reload,process,insert,select,show,create view,alter,insert,show database,show view, on *.* to 'guanliyuan'@'%';

(3)创建管理员用户

create user 'System'@'%' identified by 'System@123345';
create user 'Security'@'%' identified by 'Security@123345';
create user 'guanliyuan'@'%' identified by 'guanliyuan@123345';

(4)用户加入到角色中

grant 'System' to 'System'@'%';
grant 'Security' to 'Security'@'%';
grant 'guanliyuan' to 'guanliyuan'@'%';

激活各个角色

set global activate_all_roles_on_login=on;

6、安全审计

应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计
要求:建议数据库开启安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计;
(1)查看审计开启情况

show global variables like 'log_timestamps';
show global variables like '%general%';
show global variables like '%log_bin%';
show global variables like '%log_error%';
show global variables like '%slow_query_log%';

在这里插入图片描述
log_timestamps表示记录审计日志的时间是从哪里获取。UTC是全球时间,system是系统当前时间,一般我们用当前时间
general_log表示审计功能是否开启
general_log_file表示审计信息的日志文件
log_bin表示二进制日志
log_bin_basename二进制日志的日志文件
log_error表示错误日志
slow_query_log表示慢日志
slow_query_log_file表示慢日志的日志文件

(2)开启审计功能

set global log_timestamps = SYSTEM;
set global general_log = ON;
set global general_log_file = /var/lib/mysql/general.log;
set global slow_query_log = ON;
set global slow_query_log_file = /var/lib/mysql/slow_query.log;

(3)查看审计文件

cat /var/lib/mysql/general.log
cat /var/lib/mysql/binlog
cat /var/lib/mysql/error.log
cat /var/lib/mysql/slow_query.log

相关推荐

  1. linux-三级脚本(2)

    2024-05-25 23:23:01       27 阅读
  2. linux-三级脚本(1)

    2024-05-25 23:23:01       29 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-25 23:23:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-25 23:23:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-25 23:23:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-25 23:23:01       20 阅读

热门阅读

  1. 【Muduo】网络库框架模型和各模块简介

    2024-05-25 23:23:01       13 阅读
  2. C# 中的 Dictionary<TKey, TValue> 类

    2024-05-25 23:23:01       15 阅读
  3. docker system prune命令详解

    2024-05-25 23:23:01       12 阅读
  4. MySql开源闪回工具MyFlash

    2024-05-25 23:23:01       14 阅读
  5. 使用Python从网站API下载视频并转换为MP4文件

    2024-05-25 23:23:01       10 阅读
  6. Pytorch-03 数据集与数据加载器

    2024-05-25 23:23:01       13 阅读