外观
MariaDB 连接控制
连接控制概述
连接控制是 MariaDB 提供的一项安全功能,用于限制和监控数据库连接,防止暴力破解和连接滥用。通过连接控制插件,可以实现:
- 限制失败连接尝试次数
- 对多次失败连接的用户进行临时锁定
- 监控连接尝试情况
- 防止暴力破解密码攻击
连接控制插件
插件类型
MariaDB 提供了两个连接控制插件:
- connection_control:基本连接控制插件,限制失败连接尝试次数
- connection_control_password_validation:扩展插件,结合密码验证功能
安装插件
安装连接控制插件
sql
INSTALL SONAME 'connection_control';安装密码验证连接控制插件
sql
INSTALL SONAME 'connection_control_password_validation';检查插件状态
sql
SHOW PLUGINS LIKE 'connection_control%';配置连接控制
核心配置参数
| 参数名 | 描述 | 默认值 | 适用版本 |
|---|---|---|---|
connection_control_failed_connections_threshold | 失败连接尝试阈值,超过此值将延迟下一次连接 | 3 | MariaDB 10.1+ |
connection_control_min_connection_delay | 第一次延迟时间(毫秒) | 1000 | MariaDB 10.1+ |
connection_control_max_connection_delay | 最大延迟时间(毫秒) | 2147483647 | MariaDB 10.1+ |
connection_control_delay_growth | 延迟增长因子,每次失败连接后延迟时间乘以此值 | 1 | MariaDB 10.1+ |
connection_control_auto_reset_timeout | 自动重置超时时间(秒),超过此时间后重置失败计数 | 0(不自动重置) | MariaDB 10.4+ |
配置示例
在 my.cnf 或 my.ini 文件中添加以下配置:
ini
[mysqld]
# 连接控制配置
plugin-load-add = connection_control.so
connection_control = FORCE
connection_control_failed_connections_threshold = 5
connection_control_min_connection_delay = 2000
connection_control_max_connection_delay = 30000
connection_control_delay_growth = 2
connection_control_auto_reset_timeout = 300动态修改配置
可以通过 SET GLOBAL 语句动态修改连接控制配置:
sql
SET GLOBAL connection_control_failed_connections_threshold = 5;
SET GLOBAL connection_control_min_connection_delay = 2000;使用连接控制
监控连接控制状态
查看连接控制配置
sql
SHOW VARIABLES LIKE 'connection_control%';查看连接控制状态
sql
SHOW GLOBAL STATUS LIKE 'Connection_control%';查看失败连接尝试记录
sql
SELECT * FROM information_schema.connection_control_failed_attempts;手动重置失败计数
对于特定用户,可以手动重置其失败连接计数:
sql
-- MariaDB 10.4+ 支持
RESET GLOBAL connection_control_failed_attempts;防暴力破解策略
基本策略
- 设置合理的阈值:根据实际情况调整
connection_control_failed_connections_threshold参数 - 递增延迟:使用
connection_control_delay_growth参数实现递增延迟 - 自动重置:设置
connection_control_auto_reset_timeout自动重置失败计数 - 结合防火墙:在数据库层面和网络层面同时实施连接限制
高级策略
结合 Fail2ban
可以结合 Fail2ban 工具实现更强大的防暴力破解功能:
- 安装 Fail2ban
- 配置 Fail2ban 监控 MariaDB 错误日志
- 设置 Fail2ban 规则,禁止多次失败连接的 IP
Fail2ban 配置示例
创建 /etc/fail2ban/filter.d/mariadb.conf 文件:
ini
[Definition]
failregex = ^\s*\d+\d+ \d+:\d+:\d+ \S+ \[Warning\] Access denied for user '[^']+'@'\S+' (using password: (YES|NO))?\s*
ignoreregex =在 /etc/fail2ban/jail.d/mariadb.conf 中添加:
ini
[mariadb]
enabled = true
filter = mariadb
logpath = /var/log/mysql/error.log
maxretry = 3
bantime = 3600
findtime = 600连接控制最佳实践
生产环境配置建议
| 参数名 | 建议值 | 说明 |
|---|---|---|
connection_control_failed_connections_threshold | 3-5 | 平衡安全性和可用性 |
connection_control_min_connection_delay | 1000-3000 | 初始延迟 1-3 秒 |
connection_control_max_connection_delay | 30000-60000 | 最大延迟 30-60 秒 |
connection_control_delay_growth | 2-3 | 每次失败延迟翻倍或三倍 |
connection_control_auto_reset_timeout | 300-600 | 5-10 分钟后自动重置 |
监控建议
- 定期检查连接控制状态:监控
Connection_control_delay_generated状态变量 - 查看失败连接记录:定期查询
information_schema.connection_control_failed_attempts表 - 设置告警:当失败连接次数超过阈值时触发告警
- 分析连接模式:识别异常连接模式,调整配置策略
性能考虑
- 连接控制插件会增加一定的性能开销,尤其是在大量失败连接尝试时
- 合理设置阈值,避免不必要的延迟
- 定期清理失败连接记录,减少内存占用
常见问题
如何启用连接控制插件?
使用 INSTALL SONAME 'connection_control' 命令安装插件,然后在配置文件中添加相应配置。
连接控制插件会影响正常连接吗?
正常连接不受影响,只有失败连接尝试会触发延迟机制。
如何查看当前的连接控制配置?
使用 SHOW VARIABLES LIKE 'connection_control%' 命令查看当前配置。
如何手动重置失败连接计数?
在 MariaDB 10.4+ 版本中,可以使用 RESET GLOBAL connection_control_failed_attempts 命令重置所有用户的失败计数。
连接控制插件支持哪些版本?
连接控制插件从 MariaDB 10.1 版本开始支持,部分高级功能(如 connection_control_auto_reset_timeout)在 MariaDB 10.4+ 版本中支持。
如何结合防火墙实现更强大的连接控制?
可以在防火墙层面设置 IP 白名单,只允许特定 IP 访问数据库端口,同时在数据库层面启用连接控制插件。
故障排除
插件安装失败
症状:执行 INSTALL SONAME 'connection_control' 命令失败
解决方法:
- 检查 MariaDB 版本是否支持连接控制插件
- 检查插件文件是否存在于插件目录中
- 查看错误日志,了解具体失败原因
连接延迟不生效
症状:多次失败连接后没有出现延迟
解决方法:
- 检查插件是否已正确安装和启用
- 检查连接控制配置参数是否正确设置
- 查看
Connection_control_delay_generated状态变量,确认延迟是否已生成
连接被锁定无法恢复
症状:用户被锁定后无法恢复连接
解决方法:
- 等待
connection_control_auto_reset_timeout时间后自动恢复 - 手动重置失败连接计数
- 临时修改
connection_control_failed_connections_threshold参数
结论
连接控制是 MariaDB 重要的安全功能,通过合理配置连接控制插件,可以有效防止暴力破解和连接滥用。在生产环境中,建议结合防火墙、Fail2ban 等工具,实施多层次的连接安全策略。
定期监控连接控制状态,分析连接模式,调整配置参数,是确保连接控制功能有效运行的关键。通过综合运用连接控制和其他安全措施,可以显著提高 MariaDB 数据库的安全性。
