
1) 背景:线上业务部署在阿里云ECS + 阿里云WAF + CDN的架构下,遭遇复杂注入链攻击并伴随扫描工具(如sqlmap)探测。
2) 目标:通过分析sqlmap与WAF日志,定位注入链阶段,制定精准规则并降低误报;同时兼顾DDoS防护与CDN缓存策略。
3) 要求:最小化业务中断、控制误杀率在1%以内、将阻断无效流量降低至少60%。
4) 范围:涉及域名层(cdn.example.com)、主机(ECS:ecs.c6.large, 2 vCPU/4GB)、Nginx、阿里云WAF与Anti-DDoS。
5) 输出:规则修改记录、日志样例、调优前后数据对比与服务器配置建议。
1) 环境:操作系统 CentOS 7.9,Nginx 1.20,PHP-FPM 7.4,阿里云WAF(防护策略:阻断+记录),CDN 为阿里云CDN,Anti-DDoS Pro 开启。
2) 日志采集:WAF 日志通过阿里云日志服务(LogService)落地,Nginx access/error 同步到集中日志系统;sqlmap 扫描留存为 WAF 告警与后端请求堆栈。
3) 重要字段:时间、源IP、User-Agent、请求URI、请求体、WAF规则ID、动作(ALLOW/ALERT/BLOCK)。
4) 采样频率:高峰期请求率 1200 qps,WAF 阻断率峰值 28%。
5) 数据保留:30 天快速查询,归档 90 天以便回溯注入链历史。
1) 初步筛选:以 User-Agent、请求URI 特征和短时间内同 IP 高并发为索引抽取可疑流量。
2) sqlmap 命令示例(复现场景):sqlmap -u "http://cdn.example.com/item.php?id=1" --data="q=1" -p id --threads=10 --batch --level=5 --risk=3 --random-agent --tamper=between,space2comment。
3) 日志特征:可见大量带 payload 的请求,如 "UNION SELECT", "' OR 1=1 --" 或 sqlmap 特有注入探测参数(--level/--risk带来的多变注入)。
4) 结合时间轴:分析同一注入链内的探测、注入成功尝试与后续数据外泄行为,定位是否为单次扫描或持续利用。
5) 自动化:使用脚本统计 sqlmap 特征请求占比(示例输出见表格),便于判断是否需要全局策略调整。
1) 日志样例说明:截取 10 分钟内的 WAF 告警,提取关键字段用于规则回归测试。
2) 样例表(居中显示,边框1,内容居中)如下:
| 时间 | 源IP | 请求 | WAF动作 | 规则ID |
|---|---|---|---|---|
| 2026-06-10 12:01 | 203.0.113.45 | /item?id=1' UNION SELECT | BLOCK | 1002001 |
| 2026-06-10 12:03 | 198.51.100.88 | /search?q=1' OR 1=1-- | ALERT | 1002003 |
1) 策略一:从严格阻断到分层检测,先把高误报规则调整为 ALERT,再观察 24-72 小时。
2) 策略二:使用白名单(对可信 IP、内部 API)与参数级白名单减小影响面。
3) 策略三:基于 URI 与 Content-Type 精准匹配规则,避免对静态资源或 JSON 请求误判。
4) 调优前后对比示例:高峰 10 分钟内请求 12000 条,调优前阻断 3200 条(26.7%),调优后阻断 800 条(6.7%),误报率从 4.5% 降至 0.8%。
5) 自动化部署:将规则变更纳入 CI(灰度->回归脚本->全量发布),并设置告警阈值(误杀率>1.5% 自动降级规则)。
1) 案例回顾:某电商站点在双十一前夕遭遇注入链与大规模 sqlmap 扫描,经过日志链路分析与规则精调,阻断了基于 UNION 的攻击并避免大量误杀。
2) 配置示例(Nginx):worker_processes auto; worker_connections 65535; keepalive_timeout 65; client_max_body_size 10m。
3) ECS 建议:实例 ecs.c6.large(2vCPU/4GB)用于中小业务,日志收集可扩展至专用日志节点;开启 Anti-DDoS Pro 保证高并发下的可用性。
4) CDN 配置:对静态资源启用缓存并对 API 路径设置回源直连与 WAF 保护,配合速率限制减少自动化扫描影响。
5) 最佳实践:结合 WAF 日志、Nginx access、后端应用日志及 sqlmap 复现脚本,形成可复用的分析流程并持续迭代规则库。