实时行为分析识别暴力扫描的核心是建模正常访问模式并用动态基线比对异常,通过请求节奏、参数变异度、会话连续性、路径跳跃性、响应敏感度5类字段多维交叉判断快扫与慢扫。

实时行为分析识别暴力扫描,核心是把“正常访问模式”建模出来,再用动态基线去比对异常偏离。它不是靠单一阈值堵截,而是通过多维行为特征交叉判断,既能拦住快扫(如每秒上百次登录尝试),也能揪出慢扫(如每分钟3次、持续数小时的试探)。
关键行为维度要采集
只看IP或账号失败次数远远不够。真实攻击常分散在多个账户、不同设备、跨时段进行。必须同时采集以下5类基础字段:
- 请求节奏:单IP/单用户相邻请求的时间间隔分布(是否呈现均匀、高频、无随机性)
- 参数变异度:URL路径、查询参数、JSON body中关键字段(如username、password、token)的变化频率与熵值
- 会话连续性:是否频繁切换User-Agent、Accept-Language、TLS指纹,或同一IP突然出现大量不同设备标识
- 路径跳跃性:非爬虫式访问(如/login → /api/v1/user → /admin/config) vs 攻击式遍历(如/login → /login → /login?user=a → /login?user=b)
- 响应敏感度:HTTP状态码分布(如大量401/403但极少200)、响应体长度方差(爆破时响应往往高度一致)
轻量级实时建模方法
不需要上机器学习平台也能落地。用Redis+滑动窗口+简单统计即可实现首期效果:
- 对每个
ip + path组合,维护一个10分钟滑动窗口内的请求时间戳队列,计算标准差——低于50ms说明节奏高度机械 - 对每个
username,记录最近10次请求中password字段的MD5前4位变化次数,≥8次即触发“密码字典试探”标记 - 对
/login类接口,统计每分钟内不同User-Agent数量,超过5个且其中3个含“python-requests”“curl”等特征词,加权风险+1 - 所有标记达到阈值(如综合分≥3)的请求,自动打标
risk:brute,交由网关层限流或跳转验证码
与现有防护联动策略
行为分析不是独立模块,必须嵌入已有链路才能生效:
- 在WAF反向代理层注入行为评分,高风险请求不直接拦截,而是降权:返回HTTP 429并附带
X-RateLimit-Reset: 300,同时将该IP加入FastAPI的slowapi限流白名单,后续请求强制走JWT校验 - 当检测到某IP在5分钟内对3个以上不同账号发起登录,且响应码90%为401,则同步调用风控系统,临时冻结该IP关联的设备指纹(Device ID)24小时
- 对已登录用户访问敏感接口(如/password/reset),行为模型需切换维度——重点监测其是否在短时间内高频访问其他用户ID路径(如/user/123 → /user/124 → /user/125),这是典型的横向越权扫描
避免误伤的实操要点
真实业务里,爬虫、监控探针、前端重试逻辑都会产生类似暴力特征。必须设置豁免机制:
- 明确放行内部网段(如10.0.0.0/8)、健康检查路径(如
/healthz)、CDN回源UA - 对首次访问的新用户,前3次请求不参与行为评分,仅做日志记录用于基线学习
- 允许按业务线配置宽松度:后台管理接口可设更严阈值,而公开API文档页允许更高频访问











