攻击流量监控的难点,不是把所有异常都标成攻击,而是判断异常是否真正影响服务、哪些请求值得优先处理。单看带宽峰值容易漏掉低速应用层攻击,单看请求数量又可能把促销、爬虫或接口重试误判为入侵。更可靠的做法,是把流量、连接、请求和业务结果放在同一套判断框架中。
一、先建立分层流量基线
不要用一个固定阈值覆盖所有时间段和所有接口。建议至少分别记录入口带宽、每秒请求数、并发连接数、响应状态码、请求耗时和后端连接池使用率,并按小时、工作日与周末建立基线。
可执行步骤
- 使用Prometheus采集网关、负载均衡器和主机指标,保留至少数周的历史数据。
- 按域名、端口、请求方法、URI路径和来源网络划分维度,避免不同业务互相稀释。
- 为每个维度计算中位数和高分位区间。高分位是指一段时间内较高但仍属常态的数值,通常比平均值更能抵御偶发尖峰。
- 将发布、批处理、直播或大型活动等特殊时段单独标注,避免基线被异常业务行为污染。
例如,接口平时每分钟只有少量请求,但某个夜间任务会持续几分钟,此时应把任务窗口作为已知事件,而不是简单提高全天告警阈值。
二、把网络层、协议层和应用层分开看
提升攻击流量监控精度的关键之一,是区分“流量变大”和“服务变坏”。网络层可以关注吞吐、丢包和连接状态;协议层可以观察TLS握手失败、短连接比例和重传;应用层则要检查HTTP状态码、请求路径、响应时间及后端错误。
| 观察对象 | 适合发现的问题 | 主要限制 |
|---|---|---|
| 带宽与数据包 | 入口拥塞、异常流量突增 | 难以判断请求是否有效 |
| 连接与握手 | 连接耗尽、协议交互异常 | 正常客户端网络质量也会影响结果 |
| 请求与响应 | 高频接口滥用、错误率上升 | 需要保留结构化访问日志 |
部署Nginx或Envoy时,应将状态码、上游响应时间、请求体大小和限流结果写入结构化日志。对加密流量,不必为了监控而记录明文内容,可以使用连接元数据、服务端日志和采样后的请求特征进行判断。
三、用行为分析替代单一来源封禁
来源IP并不总能代表真实用户。移动网络、企业出口和云服务可能共用地址;反过来,攻击者也可能频繁更换来源。因此,行为分析应同时观察请求间隔、URI访问顺序、User-Agent一致性、Cookie完成率、失败比例和会话持续时间。
可为请求建立轻量评分:短时间内重复访问不存在的路径、持续触发认证失败、请求间隔高度规律、同时伴随高错误率时,提高风险分;完成正常页面跳转、携带有效会话并产生合理响应时降低风险分。评分适合用于二次验证、限速或人工复核,不宜直接作为永久封禁依据。
四、把告警阈值改成动态策略
固定规则如“每秒超过某个数量就告警”,在不同接口上误报率通常较高。更实用的方式是设置基线偏离、增长速度和影响结果三个条件。例如,某接口请求量在短窗口内明显高于同一时段基线,同时错误率和延迟持续上升,才提升为高优先级事件。

建议的分级方式
- 观察级:单项指标偏离基线,持续时间较短,仅记录并增加采样。
- 预警级:流量与连接、错误率等两类指标同时异常,通知值班人员检查来源和接口。
- 处置级:异常持续并造成延迟、错误或资源耗尽,可执行限速、挑战验证或临时规则。
阈值应保留冷却时间和恢复条件。告警解除后不要立即删除证据,建议继续保存相关日志一段时间,以便判断是否存在间歇性攻击。
五、用关联分析和复盘校准结果
攻击流量监控若只展示一张实时曲线,往往难以支持处置。应把Prometheus指标、Nginx访问日志、WAF事件、主机资源和发布记录按统一时间戳关联。Grafana适合展示趋势,Zeek或Suricata可补充网络会话和协议层信息,但具体部署仍要结合镜像流量、性能开销与数据合规要求。
- 为每次事件记录开始时间、受影响服务、异常指标、采取动作和恢复时间。
- 抽取正常请求与异常请求样本,对比来源分布、路径、方法、状态码和响应耗时。
- 检查哪些告警没有产生实际影响,哪些低等级事件后来演变成服务故障。
- 据此调整采集维度、阈值、白名单和处置流程,并在测试环境验证后再上线。
如果条件允许,可用历史日志做离线回放,观察新规则对误报、漏报和告警数量的影响。不要只追求告警越少越好;过度收紧规则可能让真正的攻击被正常业务噪声掩盖。
常见问题
攻击流量监控需要保存完整请求内容吗?
通常不需要。优先保存时间、路径、方法、状态码、响应耗时和必要的哈希特征;是否保存正文应根据排障价值、隐私和合规要求决定。
阈值多久调整一次比较合适?
稳定业务可按月复核,发布频繁或流量变化明显的业务可按周检查。发生重大活动或架构调整后,应立即重新评估基线。
如何减少正常爬虫带来的误报?
不要只按User-Agent放行。应结合访问路径、频率、robots规则、反向解析结果、响应行为和业务允许范围综合判断。
小团队最先应该改哪一项?
先补齐结构化日志和分层基线,再做动态告警。数据维度不足时,直接引入复杂评分模型通常难以解释,也不利于快速处置。
总的来看,准确的攻击流量监控依赖完整数据、合理分层和持续复盘。先识别业务正常波动,再结合行为和服务影响做判断,才能在减少误报的同时尽早发现真正需要处理的异常。


