等保测评命令——MySQL数据库

依据 GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》第三级”安全计算环境” 条款,结合 MySQL 5.7/8.0 官方文档及等保测评现场实践,给出可直接落地的 测评命令与操作清单

已在 MySQL 5.7.28+ / MySQL 8.0 环境验证通过。


一、身份鉴别(8.1.4.1)

1.1 账户唯一性与密码复杂度

测评命令功能说明达标判据
SELECT user, host FROM mysql.user;检查账户唯一性无同名账户(user+host组合唯一)
SELECT user, host, authentication_string FROM mysql.user WHERE authentication_string='';检查空口令账户无返回行(无空口令)
SHOW VARIABLES LIKE 'validate_password%';查看密码复杂度策略validate_password_length=8validate_password_policy=MEDIUM
SHOW GLOBAL VARIABLES LIKE 'default_password_lifetime';密码有效期≤90天(建议值90

1.2 登录失败处理与会话超时

测评命令功能说明达标判据
SHOW VARIABLES LIKE 'max_connect_errors';登录失败锁定阈值≤10次(建议值5-10
SHOW VARIABLES LIKE 'connection_control%';失败后延迟登录(需插件)connection_control_failed_connections_threshold=5connection_control_min_connection_delay=1000
SHOW VARIABLES LIKE '%timeout%';会话超时时间wait_timeout≤600interactive_timeout≤600(秒)

注:connection_control插件需手动安装:INSTALL PLUGIN connection_control SONAME 'connection_control.so';


1.3 远程管理加密传输

测评命令功能说明达标判据
SHOW VARIABLES LIKE '%have_ssl%';检查SSL支持have_ssl=YES
SHOW GLOBAL VARIABLES LIKE 'require_secure_transport';强制加密通信ON(强制SSL/TLS)

1.4 双因子认证(高风险项)

测评方法:

  • 访谈确认:是否通过堡垒机、操作系统层或第三方工具实现双因子(如Ukey+口令、短信验证码)
  • 技术核查:MySQL原生不支持双因子认证,必须依赖外部集成

判定标准:若仅使用单一口令认证,不符合三级要求


二、访问控制(8.1.4.2)

2.1 账户与权限最小化

测评命令功能说明达标判据
SELECT user, host, account_locked FROM mysql.user;检查默认账户状态重命名或删除root,锁定多余账户(account_locked=Y
SHOW GRANTS FOR 'user'@'host';查看用户权限遵循最小权限原则,禁止非管理员持有ALL PRIVILEGES
SELECT * FROM mysql.db;检查库级权限无越权授权
SELECT * FROM mysql.tables_priv;检查表级权限权限粒度精确到表级

2.2 权限分离与默认账户清理

关键整改命令:

-- 删除匿名账户
DELETEFROM mysql.userWHEREuser='';
FLUSH PRIVILEGES;

-- 重命名root账户(MySQL 8.0)
RENAMEUSER'root'@'localhost'TO'admin'@'localhost';

-- 锁定多余账户
ALTERUSER'test'@'%' ACCOUNT LOCK;

三、安全审计(8.1.4.3)

3.1 审计功能启用与日志保护

测评命令功能说明达标判据
SHOW VARIABLES LIKE 'general_log%';通用查询日志general_log=ON,路径可追溯
SHOW VARIABLES LIKE 'log_bin%';二进制日志(操作审计)log_bin=ON
SHOW VARIABLES LIKE 'log_output';日志存储方式FILE(避免仅TABLE,防止日志被篡改)
SHOW VARIABLES LIKE 'expire_logs_days';日志保留时间≥180天

3.2 审计进程保护

测试方法:

# 使用非审计管理员账户登录,尝试关闭审计(应失败)
mysql -u app_user -p
mysql> SET GLOBAL general_log = OFF;
-- 预期结果:ERROR 1227(42000): Access denied; you need (at least one of) the SUPER privilege(s)for this operation

合规要求:只有SUPER权限用户可修改审计配置,审计员与DBA权限分离


四、入侵防范(8.1.4.4)

4.1 最小化安装与漏洞修复

测评命令功能说明达标判据
SELECT VERSION();查看数据库版本非EOL版本(MySQL 5.7≥5.7.28,或MySQL 8.0+),定期更新补丁
SHOW PLUGINS;检查非必要插件禁用高风险插件(如test_pluginvalidate_password未启用时)

4.2 网络访问控制

测评命令功能说明达标判据
SELECT user, host FROM mysql.user;限制登录IPhost字段非%,仅允许特定IP或网段
SHOW VARIABLES LIKE 'skip_networking';禁用远程访问如仅本地管理,设为ON
SHOW VARIABLES LIKE 'bind_address';监听地址绑定0.0.0.0,仅业务网卡IP

五、恶意代码防范(8.1.4.5)

测评方法达标判据
systemctl is-active clamd(OS层)杀毒软件实时保护开启
freshclam --version(OS层)病毒库更新≤24小时

MySQL无原生命令支持,依赖操作系统层防护


六、高风险项重点核查清单

检查项验证命令/方法整改要求
双因子认证缺失访谈记录 + 登录测试通过堡垒机或OS层实现双因子
SSL未强制启用SHOW GLOBAL VARIABLES LIKE 'require_secure_transport';设为ON
默认账户未清理SELECT user FROM mysql.user WHERE user='root';重命名root或限制登录IP
审计日志未开启SHOW VARIABLES LIKE 'general_log';设为ON并配置日志服务器远程备份
密码复杂度未配置SHOW VARIABLES LIKE 'validate_password%';安装插件并配置MEDIUM策略

七、一键巡检脚本(可直接使用)

#!/bin/bash
# MySQL 等保三级一键巡检脚本
# 适用:MySQL 5.7.28+ / MySQL 8.0+

MYSQL_USER="root"
MYSQL_PASS="your_password"
MYSQL_HOST="localhost"

echo"===== 1 身份鉴别 ====="
mysql -u$MYSQL_USER -p$MYSQL_PASS -h$MYSQL_HOST-e"
SELECT '空口令账户',user,host FROM mysql.user WHERE authentication_string='';
SHOW VARIABLES LIKE 'validate_password%';
SHOW GLOBAL VARIABLES LIKE 'default_password_lifetime';
SHOW VARIABLES LIKE '%timeout%';
SHOW VARIABLES LIKE '%have_ssl%';
SHOW GLOBAL VARIABLES LIKE 'require_secure_transport';
"

echo"===== 2 访问控制 ====="
mysql -u$MYSQL_USER -p$MYSQL_PASS -h$MYSQL_HOST-e"
SELECT user,host,account_locked FROM mysql.user;
SELECT * FROM mysql.db WHERE Db NOT IN ('mysql','sys','information_schema','performance_schema');
"

echo"===== 3 安全审计 ====="
mysql -u$MYSQL_USER -p$MYSQL_PASS -h$MYSQL_HOST-e"
SHOW VARIABLES LIKE 'general_log%';
SHOW VARIABLES LIKE 'log_bin%';
SHOW VARIABLES LIKE 'log_output';
SHOW VARIABLES LIKE 'expire_logs_days';
"

echo"===== 4 入侵防范 ====="
mysql -u$MYSQL_USER -p$MYSQL_PASS -h$MYSQL_HOST-e"
SELECT VERSION();
SHOW VARIABLES LIKE 'skip_networking';
SHOW VARIABLES LIKE 'bind_address';
"

八、测评执行要点

1. 权限要求

  • 系统命令需操作系统root权限
  • 数据库命令需SUPERGRANT OPTION权限
  • 建议创建专用测评账户:GRANT SELECT, SHOW DATABASES, SHOW VIEW ON *.* TO 'auditor'@'localhost';

2. 现场核查重点

  • 密码复杂度:不仅看配置,还需尝试创建弱口令用户验证策略是否生效
  • 审计完整性:抽查general_logbinlog是否包含关键操作(用户变更、权限修改)
  • 权限分离:确认SUPER权限仅DBA持有,业务用户无审计配置权限

3. 高风险项判定

风险项判定标准整改建议
双因子认证缺失仅单一口令认证部署堡垒机或IAM集成
审计未启用general_log=OFF且无第三方审计启用general_log或部署数据库审计系统
审计进程无保护普通用户可SET GLOBAL修改审计回收SUPER权限,实施三权分立
恶意代码无防范OS层无杀毒软件部署ClamAV或商业杀毒软件

九、MySQL 5.7 vs 8.0 差异说明

功能项MySQL 5.7MySQL 8.0
默认认证插件mysql_native_passwordcaching_sha2_password(更安全)
角色管理不支持支持CREATE ROLE,便于三权分立
密码管理仅全局策略支持PASSWORD HISTORYPASSWORD REUSE INTERVAL
审计插件需第三方(如McAfee)支持audit_log官方插件

参考标准:GB/T 22239-2019、GB/T 28448-2019
适用版本:MySQL 5.7.28+、MySQL 8.0+
验证环境:CentOS 7.6 / Ubuntu 20.04 / EulerOS 2.0

声明:来自汪汪虚拟空间,仅代表创作者观点。链接:https://eyangzhen.com/6310.html

汪汪虚拟空间的头像汪汪虚拟空间

相关推荐

添加微信
添加微信
Ai学习群
返回顶部