本文目录导读:

暴力破解攻击是一种常见的网络安全威胁,攻击者通过自动化工具尝试大量用户名和密码组合来获取系统访问权限,为了有效拦截这种攻击,可以采取以下多层次防御策略:
账户级别的防御
这是最直接、最常用的方法。
-
账户锁定策略
- 做法:当同一个账户在短时间内连续登录失败达到预设次数(如 5 次)后,暂时锁定该账户一段时间(如 15 分钟)。
- 优点:直接阻止对特定账户的爆破。
- 缺点:可能被攻击者利用造成账户“拒绝服务”(恶意锁死他人账户),但安全收益远大于风险。
-
增加登录延迟
- 做法:在每次登录失败后,强制增加一个处理延迟(如 0.5 - 2 秒)。
- 效果:大大降低暴力破解的速度,攻击者在相同时间窗口内能尝试的密码数量锐减。
网络与请求级别的防御
从流量和访问源的角度进行拦截。
-
IP 地址速率限制
- 做法:限制单个 IP 地址在单位时间内的总请求数(包括成功和失败的)。
- 场景:如果某个 IP 在一分钟内发起了超过正常阈值(如 20 次)的登录请求,被视为恶意行为,临时或永久封禁该 IP。
- 注意:需考虑动态 IP(DHCP)或 NAT 环境下用户共用的复杂情况,可搭配验证码使用。
-
地理 IP 白/黑名单
- 做法:如果业务范围明确(例如只服务中国大陆),可以阻止来自高风险或常被攻击地区的 IP。
- 适用:对攻击方 IP 来源有清晰认知时使用,但无法应对国内代理或云服务的攻击。
-
Web 应用防火墙
- 做法:使用商业 WAF 或开源方案(如 ModSecurity、Cloudflare),WAF 可以自动识别并阻断已知的暴力破解攻击模式的 HTTP 请求(如非标准 User-Agent、高频率请求、异常请求头等)。
人机验证与风险检测
在攻击不那么“暴力”或试图绕过 IP 限速时使用。
-
验证码
- 做法:在登录失败达到几次后,要求用户输入图形验证码、滑块验证码或点选验证码。
- 效果:有效区分人类用户和自动化脚本,现代行为验证码体验更好,安全性也更高。
-
登录后的异常行为分析
- 做法:IP 信誉服务或一些安全插件会分析登录请求的各种参数(如请求头、浏览器指纹、Cookie 状态、鼠标/键盘行为模式),如果请求“看起来很假”或缺少人类行为特征,可能会被判定为高风险。
协议与配置层面的加固
从根本上增加攻击难度。
-
使用强密码策略
- 做法:要求密码长度至少 12 位,包含大小写字母、数字和特殊字符,禁止常见弱密码。
- 效果:大幅增加攻击者暴力破解的尝试范围,使其在有限时间内难以成功。
-
启用多因素认证
- 做法:即使密码被攻破,攻击者还需要提供第二因素(如手机验证码、身份验证器 TOTP 码、生物识别)。
- 效果:这是目前最有效的防御方式之一,能彻底瓦解暴力破解的威胁。
-
更改默认端口与登录接口
- 做法:以 SSH 为例,将默认端口 22 改为一个不常用的高位端口(如 22222),对于 Web 应用,避免使用 /admin 或 /login 作为唯一入口(实际中通常仍然需要,但可以隐藏管理后台的入口)。
- 效果:这不是安全措施,是隐蔽措施,能减少大量来自自动化扫描器的低级攻击。
攻击时的主动防御策略
系统实时监控并自动响应。
-
Fail2ban(常用开源工具)
- 做法:实时监控日志文件,当检测到某个 IP 在短时间内出现多次登录失败后,自动修改系统防火墙规则(如 iptables)来封禁该 IP。
- 适用:Linux 服务器上的 SSH、FTP、Web 服务等。
-
hCaptcha / reCAPTCHA v3(无感验证)
- 用法:最新版本的 Google reCAPTCHA 或 hCaptcha 可以在不打断用户的情况下计算“风险分数”(0-1),如果分数低(可能是机器人),则触发验证或阻拦请求,这种方式可以静默拦截很多简单的攻击。
一个推荐的综合防御方案(针对常见 Web 应用和服务器)
- 基础配置:要求强密码、启用 MFA。
- 应用层:使用 Fail2ban 封禁可疑 IP。
- 网络层:配合 WAF(如 ModSecurity)或商业 CDN/WAF(如 Cloudflare、阿里云 WAF)。
- 用户体验:在登录失败 2-3 次后弹出验证码(或使用无感验证)。
- 监控与日志:持续分析登录日志,捕捉异常模式,更新黑名单或规则。
通过以上组合(特别是 账户锁定 + IP 限速 + 验证码 + MFA),你可以有效拦截 99% 以上的自动化暴力破解攻击,同时兼顾正常用户的登录体验。