本文目录导读:

- 最直接有效的方法:限制尝试频率与次数
- 增加破解成本的智能方法:使用CAPTCHA验证码
- 削弱密码令牌的重要性:启用多因素认证
- 核心基础设施加固:强化服务和系统配置
- 事后响应与监控:及时阻断和溯源
- 针对不同场景的清单
防范暴力破解攻击的核心思路是增加攻击者的尝试成本,并及时发现并阻断恶意行为,以下是一些具体、可操作的措施,您可以根据自己的场景(如网站登录、服务器SSH、数据库等)选择组合使用:
最直接有效的方法:限制尝试频率与次数
这是防御暴力破解的“第一道防线”。
-
账户锁定策略
- 做法:连续输入错误密码达到指定次数(如5次)后,临时锁定该账户(如15分钟)。
- 注意:需设置锁定时间,防止攻击者通过同时攻击多个账户来耗光资源。
- 缺点:可能被攻击者利用,导致合法用户账户被批量锁定(拒绝服务攻击),可通过IP限流等方式辅助缓解。
-
IP地址限制
- 做法:对来自同一个IP地址的连续失败请求进行限速或封禁。
- 应用:在Web服务器(Nginx/Apache)、防火墙(iptables)或应用层实现。
- 工具:
- Fail2ban(Linux):自动监控日志,发现异常IP后动态修改防火墙规则,临时封禁该IP。
- Cloudflare WAF / ModSecurity:可配置速率限制规则。
增加破解成本的智能方法:使用CAPTCHA验证码
为“人机交互”设置门槛。
- 在关键入口使用:登录、注册、重置密码、提交评论等场景。
- 渐进式挑战:仅当特定IP或账户出现低频异常(如连续输错2次密码)时,才弹出验证码,避免每步都校验,影响用户体验。
- 选择难度:推荐使用reCAPTCHA v3(无感验证)或hCaptcha(基于行为分析),而非必须点击图片的“验证码”。
削弱密码令牌的重要性:启用多因素认证
即使密码被暴力破解,MFA也是最后一道“安全锁”。
- 推荐方式:
- TOTP(基于时间的一次性密码):如Google Authenticator、Authy,软件生成,成本低、安全性高。
- 推送验证:如Microsoft Authenticator、Duo Security,用户需在手机上点击“允许/拒绝”。
- 硬件安全密钥:如YubiKey,物理设备,可抵御高级钓鱼攻击。
- 短信/邮件验证码:安全性较低(易被拦截、SIM卡交换攻击),但在无法使用其他方式时可作为备选。
核心基础设施加固:强化服务和系统配置
- 修改默认端口(如SSH默认22端口、RDP默认3389端口),虽然不能防止专业攻击,但能减少自动化扫描的命中率。
- 禁用不必要的服务:如果不需要远程桌面,就彻底禁用RDP;不需要SSH密码登录,就仅允许密钥登录(并禁用密码认证)。
- 使用强密码策略:强制要求密码长度(至少12位以上)、复杂度(大小写、数字、符号)且不包含常见泄露密码(可集成Have I Been Pwned的API)。
- 配置Web应用防火墙:过滤恶意请求,例如阻止包含SQL注入、XSS等特征的payload,这些可能是暴力破解的后续环节。
事后响应与监控:及时阻断和溯源
-
日志记录与分析:
- 记录所有登录尝试(成功/失败),包含时间、IP、用户名、User-Agent。
- 使用SIEM系统(如Elasticsearch/Logstash/Kibana,Wazuh)或安全分析工具设定告警规则。“1小时内同一个IP失败登录次数超过10次”触发告警。
-
双因素可迁移认证(可选):对于高价值账户(如管理员),可以设置必须通过物理设备或唯一手机号才能发起登录请求,进一步限制自动化的暴力尝试。
针对不同场景的清单
| 场景 | 核心措施 | 强烈建议补充措施 |
|---|---|---|
| 用户网站登录 | 账户锁定 + IP限流(Fail2ban) | CAPTCHA验证码 + MFA + 强密码策略 |
| SSH root登录 | 禁用密码登录,仅用SSH密钥 | 修改SSH端口 + Fail2ban监控SSH日志 |
| 数据库(MySQL/PostgreSQL) | 限制连接IP(仅允许白名单IP) | 设置复杂密码 + 定期审计访问日志 |
| API接口认证 | 使用API密钥 + 签名算法 + 请求频率限制 | 引入OAuth 2.0 + 动态密钥轮换 |
最后提醒:没有任何单一措施是绝对安全的。纵深防御是关键——结合“限制频率 + 验证码 + MFA + 服务加固 + 监控告警”多层守护,让攻击者的成本远高于预期收益。