您好,欢迎来到星星旅游。
搜索
您的当前位置:首页等保三级-MySQL 加固

等保三级-MySQL 加固

来源:星星旅游

1、身份鉴别

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

select user,host from mysql.user;

select * from mysql.plugin;

install plugin validate_password soname 'validate_password.so';

uninstall plugin auth_socket.so;

show variables like 'validate%';

(5)密码有效期配置

show global variables like 'default_password_lifetime';
修改命令
set global default_password_lifetime = 90;

(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

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- stra.cn 版权所有 赣ICP备2024042791号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务