记录一下那天晚上的排查过程。为了不误伤蜘蛛,WAF 里加了一条 UA 含 bingbot 就放行的规则。一周后日志里 bingbot 的请求量涨到 20 万次,反查来源全是家宽地址,源站 CPU 被打满,正常用户开始超时。
刚开始盯着「伪造请求带随机参数 每次都是新地址」,折腾了半个多小时,排掉了。
把日志和配置对完,能解释这个现象的基本就这几处。只校验 UA 字符串 没有验证来源地址。也可能是放行规则排在频率限制之前 限流完全失效。
少数情况下是日志里没有记录真实来源 事后无法回溯。
先按 UA 统计请求量并看来源分布
grep -i bingbot access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head
再往下对可疑地址做反向解析
for ip in $(cat suspicious.txt); do dig +short -x $ip; done
随后把放行改成 IP 段白名单
geo $bing_bot { default 0; 157.55.39.0/24 1; 207.46.13.0/24 1; }
给伪造 UA 的请求单独限速
limit_req zone=bot burst=20 nodelay;
怎么算真的好了,看的是同一批现象。bingbot 的请求量回到正常区间,伪造来源的请求被限速或拒绝。
补一句。UA 是可以随手改的字符串,任何放行规则都要绑定来源地址或反向解析结果。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。
