推荐组合是mysql-audit插件+OpenSCAP(配合CIS MySQL Benchmark)+定制化SQL检查脚本,其中OpenSCAP支持定时运行、生成HTML报告、对接cron,适合自动化。

MySQL 自动化安全扫描该用什么工具
没有官方内置的“定期漏洞扫描”功能,mysql 本身不提供类似 nmap 或 nessus 的主动漏洞探测能力。真正能落地的方案是:用外部安全审计工具连接 MySQL 实例,基于已知 CVE、配置基线和权限模型做检查。
推荐组合:mysql-audit(插件式日志审计) + OpenSCAP(配合 CIS MySQL Benchmark) + 定制化 SELECT 检查脚本。其中 OpenSCAP 支持定时运行、生成 HTML 报告、对接 cron,适合自动化。
-
mysql-audit插件只记录行为,不评估风险,需搭配规则引擎(如auditd或 ELK)才能识别异常模式 -
OpenSCAP的mysql57-cis或mysql80-cisprofile 覆盖弱密码、匿名用户、过度授权等 60+ 项,但要求 MySQL 启用performance_schema - 纯 SQL 扫描脚本轻量,适合 CI/CD 集成,例如检查
SELECT user, host FROM mysql.user WHERE authentication_string = ''是否存在空密码账户
如何让扫描任务真正“定期”执行而不失效
靠人工登录服务器跑一遍 oscap 命令毫无意义。关键在两点:权限稳定、连接可靠。
- MySQL 账户必须有
SELECT权限访问mysql.user、mysql.db、performance_schema,且不能依赖 socket 连接——oscap只支持 TCP 连接,得配--host=127.0.0.1 --port=3306,而非--socket=/var/run/mysqld/mysqld.sock - cron 里避免使用
~/.my.cnf,因为 cron 环境不加载 shell profile;应显式传参:--user=root --password=xxx,或改用MYSQL_PWD环境变量(注意权限:该文件不能被 group/o 读) - 扫描结果需落盘并带时间戳,例如:
oscap xccdf eval ... > /var/log/mysql-scan-$(date +\%F-\%H).html,否则每天覆盖,无法追溯变化
常见误报和漏报场景有哪些
工具不是万能的,CIS benchmark 和 CVE 匹配都依赖 MySQL 版本号和实际配置状态,稍有偏差就失真。
- 误报:
OpenSCAP认为skip_networking=ON是安全项,但若你用的是容器内网通信(如 Docker bridge),关掉网络反而导致应用连不上 —— 此时“合规”等于“不可用” - 漏报:MySQL 8.0 默认启用
caching_sha2_password,但oscap不检查密码加密强度,需额外用SELECT plugin FROM mysql.user WHERE user='root'辅助判断 - 版本错位:给 MySQL 5.7 装
mysql80-cisprofile,会把合法配置(如default_authentication_plugin)当成违规项
一条能直接粘贴运行的最小化扫描命令
以下命令可在 MySQL 5.7/8.0 上直接运行(假设 root 密码为 pass123,监听在 3306):
oscap xccdf eval \ --profile xccdf_org.ssgproject.content_profile_cis \ --results-arf /tmp/mysql-arf.xml \ --report /var/log/mysql-scan-$(date +\%F-\%H).html \ --oval-results \ --fetch-remote-resources \ /usr/share/xml/scap/ssg/content/ssg-mysql-ds.xml \ --mysql-host 127.0.0.1 \ --mysql-port 3306 \ --mysql-user root \ --mysql-password pass123
注意:/usr/share/xml/scap/ssg/content/ssg-mysql-ds.xml 路径因系统而异,CentOS/RHEL 用 yum install scap-security-guide 安装,Ubuntu/Debian 对应包是 scap-security-guide,但路径可能是 /usr/share/xml/scap/ssg/content/ssg-ubuntu2004-ds.xml 并不自带 MySQL profile —— 这点最容易卡住,别跳过验证步骤。


















