等保三级整改-MySQL篇

修改MySQL默认用户名

MySQL默认的管理员用户名是root,需要更改

update mysql.`user` set user = 'myroot' where user = 'root';
flush privileges;

敏感数据存储加密

通常数据库在存储用户的登录密码信息时,会加密存储,但除了密码外,针对身份证、手机号等敏感信息,也需要加密后存储到MySQL数据库中。

加密方法

SecretKey为加密秘钥

INSERT  INTO `tablea`(`classID`, `stuName`) VALUES ('B', HEX(AES_ENCRYPT('张三','SecretKey')));

加密后查询

SELECT  *  FROM tablea WHERE AES_DECRYPT( UNHEX( stuName ), 'SecretKey' ) LIKE  '%张%';

PHP加密方法

SecretKey为加密秘钥

$idcard = '123456';
$idcardMi = bin2hex(base64_decode(openssl_encrypt($idcard,'aes-128-ecb', 'SecretKey')));

PHP解密方法

$idcardMi = 'xxxx';  //密文
$idcardJieMi = openssl_decrypt(base64_encode(hex2bin($idcardMi)), 'aes-128-ecb', 'SecretKey');

MySQL开启SSL连接

参考文章《MySQL开启SSL连接

开启审计

MySQL的审计功能,主要可以记录包括登录、连接、对表的增删改查等对数据库的所有操作,便于责任追溯,问题查找。
根据 MySQL 版本的不同有两种分为企业版和社区版:
A、企业版 MySQL Enterprise Edition(收费)自带AUDIT审计功能。
B、社区版 MySQL Community Server(免费)需要自己下载插件。

MariaDB官网下载对应版本的安装包, 从安装包中获得版本对应的.dll插件(linux系统.so插件),拷贝到到 自己的mysql插件库下,安装插件,开启审计功能,配置my.ini文件。

版本对应

MariaDB 10.0和MariaDB 10.1可以作为MySQL 5.6的有限替代。
MariaDB 10.2可以作为MySQL 5.7的有限替代。
版本对应关系:

下载mariadb,提取审计插件

下载mysql对应版本的mariadb的zip版本,解压后将\lib\plugin\目录下的server_audit.dll文件拷贝至mysql的插件目录(一般是\lib\plugin\,可以通过SHOW GLOBAL VARIABLES LIKE 'plugin_dir';命令查询)

安装插件

打开mysql,执行如下SQL:

INSTALL PLUGIN server_audit SONAME 'server_audit.dll';

开启审计功能

set global server_audit_logging=on;

判断是否开启

用以下查看是否已经开启,开启后ON代表开启,OFF代表没有开启:

show variables like '%audit%';

配置my.ini

把下面内容复制进[msyqld]下

#开启审计功能
server_audit_logging=on
#指定审计日志文件存放路径,这里的路径要注意了,这个文件路径必须经是Mysql权限里
server_audit_file_path =D:\Soft\mysql-5.6.24-win32\oplogs
server_audit_file_rotate_size=20000000
#防止server_audit 插件被卸载,需要在配置文件中添加
server_audit=FORCE_PLUS_PERMANENT

重启

重启数据库。重启后对数据库的操作,就可以查询到相应记录了。

登录失败及账号锁定

从 MySQL8.0.19 开始,管理员可以配置用户当连续登录失败超过阈值时的锁定时间;

#创建用户test_lock连续失败3次后锁定两天
create user 'test_lock'@'%' IDENTIFIED BY RANDOM PASSWORD FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 2;

#修改用户test_lock连续失败2次后锁定3天
alter user 'test_lock'@'%' FAILED_LOGIN_ATTEMPTS 2 PASSWORD_LOCK_TIME 3;

解除锁定的方式

服务器重启;
执行flush privileges;
alter user 'test_lock'@'%' account unlock;

发表评论

邮箱地址不会被公开。 必填项已用*标注