Ubuntu上MySQL如何进行安全加固
小樊
33
2025-12-28 01:09:48
Ubuntu 上 MySQL 安全加固清单
一 基础安全基线
- 更新系统与软件包:执行 sudo apt update && sudo apt upgrade,保持 MySQL 与系统补丁为最新,及时修复已知漏洞。
- 运行安全初始化向导:执行 sudo mysql_secure_installation,按提示完成设置 root 强密码、删除匿名用户、禁止 root 远程登录、删除测试数据库 等基础加固。
- 禁止或限制远程 root:生产环境建议保持 root 仅本地登录;如确需远程管理,创建专用管理账号并严格限制来源 IP。
- 持续更新策略:将 mysql-server 纳入常规升级流程,减少暴露窗口。
二 账户与权限最小化
- 创建专用应用账号并限制来源:避免使用 root 处理业务,按“一个应用一个账号”分配权限;示例:
- 创建账号:CREATE USER ‘app_user’@‘192.168.1.50’ IDENTIFIED BY ‘StrongPass!2024’;
- 最小权限:GRANT SELECT, INSERT, UPDATE ON app_db.* TO ‘app_user’@‘192.168.1.50’;
- 刷新权限:FLUSH PRIVILEGES;
- 避免使用通配符主机:尽量不用 ‘%’,优先明确到 具体 IP 或网段,降低被暴力尝试的风险。
- 禁用高危权限:日常应用账号不要授予 SUPER、FILE、PROCESS 等权限;管理账号仅限内网跳板机或 DBA 主机访问。
- 定期审计与清理:
- 列出账户:SELECT User, Host FROM mysql.user;
- 查看权限:SHOW GRANTS FOR ‘username’@‘host’;
- 回收/删除:REVOKE DELETE ON db.tbl FROM ‘u’@‘h’; DROP USER ‘old’@‘%’;
- 使用角色管理(MySQL 8.0+):按职责创建 角色(如 app_reader/app_writer),统一授权后再分配给用户,便于一致性与审计。
三 网络与加密访问控制
- 绑定地址最小化:编辑 /etc/mysql/mysql.conf.d/mysqld.cnf,将 bind-address 设为 127.0.0.1(仅本机)或 内网 IP(如 192.168.1.100),避免监听 0.0.0.0。
- 防火墙精细化放行:仅允许可信来源访问 3306,示例:sudo ufw allow from 192.168.1.50 to any port 3306;云环境同步配置 安全组/ACL。
- 优先私有网络与隧道:数据库置于 私有子网,通过 跳板机 或 SSH 隧道 访问,减少公网暴露面。
- 启用并强制 SSL/TLS:
- 检查:SHOW VARIABLES LIKE ‘%ssl%’; 确认 have_ssl=YES;
- 强制用户:ALTER USER ‘app_user’@‘192.168.1.50’ REQUIRE SSL;
- 客户端:连接时添加 –ssl-mode=REQUIRED。
四 配置与运行期加固
- 禁用本地文件读取:在 [mysqld] 加入 local-infile=0,降低通过 LOAD DATA INFILE 读取敏感文件的风险。
- 限制连接规模:设置 max_connections(如 2000),防止资源被滥用;结合业务评估与压测合理取值。
- 端口与隐蔽性:仅在确有必要时更改 默认端口 3306,并配合防火墙/安全组做来源限制;不建议仅依赖改端口作为安全措施。
- 日志与审计:启用并妥善管理 错误日志、慢查询日志、二进制日志;按需开启 general_log 做故障排查,避免长期开启影响性能;定期审计登录与权限变更。
- 文件与进程权限:检查 /etc/mysql/、/var/lib/mysql/、/var/log/mysql/ 等目录与文件权限,确保仅 mysql 用户与必要管理员可访问。
五 备份恢复与持续运维
- 定期备份:使用 mysqldump 做逻辑备份,示例:mysqldump -u root -p --single-transaction --routines --triggers --databases your_db > backup.sql;重要数据建议 异地/离线 留存并定期校验可恢复性。
- 变更留痕与回滚:权限调整、账号清理、参数变更均应有 变更记录 与 回滚预案;定期复核 用户列表与权限分配。
- 安全基线与补丁:将 mysql_secure_installation、最小权限检查、SSL 强制、防火墙规则校验纳入 月度/季度 例行巡检。