Debian MySQL安全加固方法有哪些
导读:Debian 上 MySQL/MariaDB 的安全加固清单 一 基础与账户安全 运行安全初始化向导:执行 sudo mysql_secure_installation,启用或配置 VALIDATE PASSWORD 插件,设置强 roo...
Debian 上 MySQL/MariaDB 的安全加固清单
一 基础与账户安全
- 运行安全初始化向导:执行 sudo mysql_secure_installation,启用或配置 VALIDATE PASSWORD 插件,设置强 root 密码,按提示删除匿名用户、禁止 root 远程登录、移除测试库并刷新权限。完成后使用 mysql -u root -p 验证登录。
- 删除匿名与弱权账户:在 mysql.user 中清理空用户名账户(User=“”),仅保留必要账户;为每个应用创建最小权限的专用账户,避免以 root 直连应用。
- 强化密码策略:启用并选择合适强度的密码校验(低/中/高),对生产账户执行定期轮换。
- 限制本地文件读取:在 [mysqld] 中设置 local-infile=0,降低通过 LOAD_FILE 等导致的本地文件泄露风险。
二 网络与加密
- 限制监听地址:在 [mysqld] 设置 bind-address=127.0.0.1,仅本机访问;若必须远程,改为内网地址并配合防火墙白名单。
- 防火墙与端口治理:使用 ufw/iptables 仅放行必要端口(如 SSH 22、业务 80/443);如确需开放 3306,仅允许受控来源 IP。
- 远程访问替代方案:优先通过 SSH 隧道 访问数据库,避免公网直连 3306。
- 启用传输加密:在 MySQL 中为客户端连接配置 SSL/TLS,防止中间人窃听与数据泄露。
- 变更默认端口:如环境允许,可将 port=3306 改为非常用端口,仅作为“安全通过 obscurity”的辅助手段,不能替代认证与加密。
三 系统与文件安全
- 最小权限运行:确保数据库以 mysql 系统用户运行,数据目录(如 /var/lib/mysql)及配置文件(如 /etc/mysql/)权限最小化,仅 root/mysql 可访问。
- 清理敏感历史:定期清空客户端历史文件 ~/.mysql_history,避免在命令行中直接携带密码(如避免在命令历史中暴露 “-ppassword”)。
- 系统加固配套:保持 Debian 与数据库包更新(如 apt update/upgrade),并启用 ufw/fail2ban 等基础防护。
四 审计监控与备份恢复
- 启用与轮转日志:在 [mysqld] 中配置通用查询日志或错误日志(如 log=/var/log/mysql.log),并结合 logrotate 进行日志轮转与归档,便于审计与取证。
- 持续监控与基线核查:使用 logwatch、Nagios/Zabbix 等监控异常连接与慢查询;定期用 Lynis 做系统安全基线扫描。
- 备份与演练:制定包含全量/增量备份与恢复演练的应急方案,确保可快速回滚与最小化停机。
五 加固实施示例命令
- 安全初始化与密码策略:
- sudo mysql_secure_installation(启用 VALIDATE PASSWORD、设置 root 密码、清理匿名/测试库、禁止 root 远程)
- 仅本地监听与禁用 local_infile:
- 编辑 /etc/mysql/mysql.conf.d/mysqld.cnf 或 /etc/mysql/my.cnf
[mysqld]
bind-address=127.0.0.1
local-infile=0 - sudo systemctl restart mysql
- 编辑 /etc/mysql/mysql.conf.d/mysqld.cnf 或 /etc/mysql/my.cnf
- 创建应用专用账户(最小权限):
- CREATE DATABASE appdb;
CREATE USER ‘appuser’@‘localhost’ IDENTIFIED BY ‘StrongPass!23’;
GRANT SELECT,INSERT,UPDATE,DELETE ON appdb.* TO ‘appuser’@‘localhost’;
FLUSH PRIVILEGES;
- CREATE DATABASE appdb;
- 防火墙仅放行必要端口:
- sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
- sudo ufw allow 22/tcp
- 清理 MySQL 历史:
-
~/.mysql_history
-
- 日志轮转示例(/etc/logrotate.d/mysql):
- /var/log/mysql.log {
daily
rotate 7
missingok
compress
delaycompress
postrotate
systemctl reload mysql > /dev/null 2> & 1 || true
endscript
}
- /var/log/mysql.log {
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian MySQL安全加固方法有哪些
本文地址: https://pptw.com/jishu/787132.html
