mysql如何防止暴力破解_mysql安全防护措施

17次阅读

mysql防暴力破解需多层设防:①启用失败登录限制与账户锁定;②禁用远程root并限定业务账号IP;③强制ssl加密及禁用弱认证插件;④结合fail2ban与日志审计实现系统级防护。

mysql如何防止暴力破解_mysql安全防护措施

MySQL 防暴力破解的核心是限制非法登录尝试、强化认证机制、隐藏服务暴露面,并配合系统级防护。单纯靠密码强度远远不够,必须多层设防。

限制登录失败次数与锁定账户

MySQL 8.0+ 原生支持密码失败计数和账户锁定功能,可直接启用:

  • 创建用户时指定失败限制:CREATE USER ‘appuser’@’%’ IDENTIFIED BY ‘pwd123’ FAILED_LOGIN_ATTEMPTS 3 PASSword_LOCK_TIME 1;
  • 修改已有用户:ALTER USER ‘appuser’@’%’ FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME UNBOUNDED;
  • 查看账户锁定状态:select user, host, password_locking_status FROM mysql.user;

注意:该功能依赖 validate_password 插件已加载,且需确保 mysql.user 表结构包含对应字段(MySQL 8.0.19+ 默认支持)。

禁止远程 root 登录 + 限定可信 IP 访问

root 账户绝不开放远程访问,普通业务账号也应最小化授权范围:

  • 禁用远程 root:delete FROM mysql.user WHERE user=’root’ AND host!=’localhost’; FLUSH PRIVILEGES;
  • 为业务用户绑定具体 IP 或网段:CREATE USER ‘webapp’@’192.168.10.50’ IDENTIFIED BY ‘strong_pwd’;
  • 若使用云服务器,务必在安全组/防火墙层面只放行应用服务器的内网 IP,关闭 3306 端口对公网的暴露。

启用 SSL 加密连接 + 关闭旧协议

防止密码在网络中明文传输,同时阻止低版本弱认证协议被利用:

  • 配置 MySQL 启用 SSL(需提前生成证书):[mysqld] ssl-ca=/path/ca.pem ssl-cert=/path/server-cert.pem ssl-key=/path/server-key.pem
  • 强制客户端使用 SSL 登录:ALTER USER ‘webapp’@’192.168.10.50’ require SSL;
  • 禁用不安全的旧认证插件(如 mysql_native_password 在某些场景下易被降级):SET GLOBAL default_authentication_plugin = ‘caching_sha2_password’;(MySQL 8.0 默认)

结合系统级防护:fail2ban + 登录日志审计

MySQL 自身日志不直接记录失败 IP,需借助系统日志和外部工具增强感知能力:

  • 开启 MySQL 通用查询日志或错误日志(谨慎启用,避免性能影响):[mysqld] log_Error = /var/log/mysql/error.log
  • 配置 fail2ban 监控 MySQL 错误日志,匹配类似 access denied for user 的条目,自动封禁源 IP(需编写 jail.local 规则)
  • 定期检查 SELECT user, host, authentication_string FROM mysql.user; 清理无用账号,禁用空密码或测试账号
text=ZqhQzanResources