前言
环境:MySQL 5.7.26
参考:
Mysql等保2.0测评 - FreeBuf网络安全行业门户
身份鉴别
a) 应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换;
- 登录 mysql 查看是否使用了口令和密码的组合鉴别身份
mysql -h 127.0.0.1 -u root -p

开启了口令密码的鉴别
- 查询用户列表,是否存在相同用户名
select user, host FROM mysql.user;

无相同用户名
- 查看是否存在空口令用户
select user,host,authentication_string,password_lifetime,account_locked from mysql.user;

无空口令用户
- 查看密码复杂度
show variables like 'validate%';

此处未安装 validate password 插件
b) 应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施;
查询是否安装 connection control 插件,此插件会配置登录失败的策略

此时未安装
查询操作超时自动退出功能
show variables like "%timeout%";

这里 wait_timeout 配置为 120s,符合测评要求
c) 当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听;
查询是否采用远程管理,如果本地管理则不适用,远程管理是否启用 SSL
show variables like "%have_ssl%";
show variables like "%have_openssl%";


均未启用
d) 应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现。
对于数据库基本不符合要求
访问控制
a) 应对登录的用户分配账户和权限
查询是否为登录的用户创建了不同账户和权限
select user,host from mysql.user ;
SHOW grants for 'root'@'localhost';


root 拥有所有权限
b) 应重命名或删除默认账户,修改默认账户的默认口令
查看root用户是否被删除或者重命名,增加口令复杂度,避免空口令弱口令出现
c) 应及时删除或停用多余的、过期的账户,避免共享账户的存在
select user,host,authentication_string,password_lifetime,account_locked from mysql.user;

此处可知只有 mysql.session 和 mysql.sys 处于锁定状态
d) 应授予管理用户所需的最小权限,实现管理用户的权限分离
- 是否对用户进行角色划分且只授予账号必须的权限,除root外,任何用户不应该有mysql库user表的存取权限,禁止将file、process、 super权限授予管理员以外的账户
select * from mysql.user;

只有 root 用户才有上述权限
- 查看用户权限表,并验证用户是否具有自身角色外的其他用户的权限
select * from mysql.user where user="admin";
查看用户的

e) 应由授权主体配置访问控制策略,访问控制策略规定主体对客体的访问规则
- 检查用户权限列表
select * from mysql.user;

检查数据库权限列表
select * from mysql.db;
检查用户表权限列表
select * from mysql.tables_priv;

- 检查列权限列管理员
select * from mysql.columns_priv

f) 访问控制的粒度应达到主体为用户级或进程级,客体为文件、数据库表级
检查用户权限列表
select * from mysql.user
检查数据库权限列表
select * from mysql.db
g) 应对重要主体和客体设置安全标记,并控制主体对有安全标记信息资源的访问
MySQL不提供该项功能,访谈管理员,是否采用其他技术手段
安全审计
a) 应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计
查询是否开启日志记录
show global variables like '%general%';

b) 审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息
- 只要启用了审计功能,无论是自带的审计还是插件,在记录的信息上都能满足这个要求。
- 是否采取第三方工具审计,查看审计内容是否符合上述要求
c) 应对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等
- 访谈管理员如何对审计记录进行保护,对审计记录是否定期备份,备份策略是什么,时间大于6个月
- 如果采用第三方设审计产品,满足日志存储的时间要求
- 严格限制审计的访问权限,非授权用户禁止对日志进行操作
d) 应对审计进程进行保护,防止未经授权的中断
MySQL数据库系统大多数默认符合,但是如果采取了第三方工具,则应检查数据库系统,查看未授权用户是否能中断审计进程。
入侵防范
根据GB/T 28448-2019 《信息安全技术 网络安全等级保护测评要求》测评对象范围描述,数据库无该项要求
a) 应遵循最小安装的原则,仅安装需要的组件和应用程序
不适用
b) 应关闭不需要的系统服务、默认共享和高危端口
不适用
c) 应通过设定终端接入方式或网络地址范围对通过网络进行管理的管理终端进行限制
对数据库登录的地址进行限制,根据业务需求设置本地或者指定地址登录
对登录的数据库地址进行限制,配置文件中修改
d) 应提供数据有效性检验功能,保证通过人机接口输入或通过通信接口输入的内容符合系统设定要求
不适用
e) 应能发现可能存在的已知漏洞,并在经过充分测试评估后,及时修补漏洞
- 查询当前补丁版本
show variables where variable_name like "version";

- 访谈管理员是否定期进行漏洞扫描,并对高风险漏洞是否测试评估后进行修复
f) 应能够检测到对重要节点进行入侵的行为,并在发生严重入侵事件时提供报警
不适用
恶意代码防范
应采用免受恶意代码攻击的技术措施或主动免疫可信验证机制及时识别入侵和病毒行为,并将其有效阻断
数据库不适用
可信验证
可基于可信根对计算设备的系统引导程序、系统程序、重要配置参数和应用程序等进行可信验证,并在应用程序的关键执行环节进行动态可信验证,在检测到其可信性受到破坏后进行报警,并将验证结果形成审计记录送至安全管理中心
本地数据库未采用基于可信根对系统进行可信验证
数据完整性
a) 应采用校验技术或密码技术保证重要数据在传输过程中的完整性,包括但不限于鉴别数据、重要
业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等;
本机管理,不适用
远程管理是否开启SSL,确认是否还有其他保证数据传输过程中的完整性措施
b) 应采用校验技术或密码技术保证重要数据在存储过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等。
对数据库配置文件进行一个完整性检测,需要配置文件初始可信状态时的哈希值,然后再根据目前的文件生成一个哈希值, 对比前后的一致性,确认数据是否被篡改过
一般数据库自身不带这种机制,询问管理人员是否使用了第三方软件
数据保密性
a) 应采用密码技术保证重要数据在传输过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等
本机管理,不适用
远程管理有 SCRAM-SHA-256,MD5
若 password 是以明文密码传送给数据库,建议不在生产环境中使用,可能发现传输的密码字段信息
b) 应采用密码技术保证重要数据在存储过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等
MySQL提供的数据加密方案中包括AES加解密方案AES_ENCRYPT AES_DECRYPT,DES加解密方案 DES_ENCRYPT DES_DECRYPT。
show variables like '%encryption%';

数据备份恢复
a) 应提供重要数据的本地数据备份与恢复功能
- 询问数据备份策略(每天/周,全备/增备)
- 是否具备恢复测试记录
b) 应提供异地实时备份功能,利用通信网络将重要数据实时备份至备份场地
- 是否进行异地备份,记录异地备份机房。
- 询问备份策略,(每天/周,全备/增备)备份
c) 应提供重要数据处理系统的热冗余,保证系统的高可用性
如果是云上数据库,是否为高可用版本。
如果线下数据库,看是否部署两台以上服务器。 集群部署、双机热备均可。
剩余信息保护
a) 应保证鉴别信息所在的存储空间被释放或重新分配前得到完全清除
数据库系统内核层默认无法实现剩余信息保护功能需要第三方工具实现
b) 应保证存有敏感数据的存储空间被释放或重新分配前得到完全清除
数据库系统内核层默认无法实现剩余信息保护功能需要第三方工具实现
个人信息保护
a) 应仅采集和保存业务必需的用户个人信息
检查数据库中是否存储个人信息,若有,检查个人信息保护机制和个人信息保护管理制度
个人信息作为数据资源已经单独进行测评,因此该项不重复进行测评
b) 应禁止未授权访问和非法使用用户个人信息
检查个人信息保护机制和个人信息保护管理制度,验证非授权人员是否可以访问个人信息存储的相关组件内容
个人信息作为数据资源已经单独进行测评,因此该项不重复进行测评