温馨提示×

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 强制、防火墙规则校验纳入 月度/季度 例行巡检。

0