6 款免费 WAF 的测试报告
字数 2337 2025-08-10 17:51:49
WAF防护能力测试方法与实践指南
1. 测试背景与目的
在网络安全活动中,Web应用防火墙(WAF)是最基础的安全防护产品之一。本文档旨在提供一套科学、可复现的WAF防护能力测试方法,帮助用户评估不同WAF产品的实际防护效果。
2. 测试指标体系
2.1 核心指标定义
-
检出率(Recall)
- 计算公式:TP / (TP + FN)
- 反映WAF检测能力的全面性,没有检出即为"漏报"
-
误报率(False Positive Rate)
- 计算公式:FP / (TP + FP)
- 反映对正常流量的干扰,不靠谱的结果即为"误报"
-
准确率(Accuracy)
- 计算公式:(TP + TN) / (TP + TN + FP + FN)
- 综合指标,避免漏报和误报顾此失彼
-
检测耗时(Performance)
- 反映WAF性能,耗时越大则性能越差
- 采用"90%的平均耗时"和"99%的平均耗时"两个指标
2.2 统计分类定义
- TP(True Positive): 将攻击样本拦截的数量
- TN(True Negative): 将正常样本放行正确的数量
- FN(False Negative): 将攻击样本放行的数量("漏报")
- FP(False Positive): 将正常请求拦截的数量("误报")
3. 测试样本准备
3.1 样本比例
根据互联网暴露服务的经验,正常流量和攻击流量的比例约为100:1
3.2 白样本(正常流量)
- 来源: 实际浏览行为(微博、知乎、B站、各种论坛)
- 数量: 60,707个HTTP请求
- 大小: 2.7GB
- 采集工具: Burp Suite作为代理抓包
3.3 黑样本(攻击流量)
- 总数量: 600个HTTP请求
- 分类采集方法:
- 简单的通用攻击流量: 部署DVWA靶机,所有通用漏洞样例攻击
- 常见的攻击流量: 使用PortSwigger官网提供的所有攻击Payload
- 针对性漏洞流量: 部署VulHub靶机,使用默认POC攻击经典漏洞
- 攻击对抗流量: 调高DVWA对抗级别(中级和高级),再次攻击
4. 测试环境搭建
4.1 靶机配置
使用Nginx作为后端靶机,配置如下:
location / {
return 200 'hello WAF!';
default_type text/plain;
}
特点:无论收到什么请求,均直接返回200
4.2 测试工具
综合使用两款开源WAF测试工具:
- gotestwaf: 来自泰国的开源WAF测试工具
- blazehttp: 来自长亭的开源WAF测试工具
工具需求:
- 解析Burp的导出结果
- 按HTTP协议重新组包
- 删除Cookie Header(考虑数据开源)
- 修改Host Header字段,让靶机能够正常接收流量
- 根据请求是否返回200判断是否被WAF拦截
- 对黑白样本混合后均匀发包
- 自动计算测试指标
5. 测试执行与结果分析
5.1 测试原则
- 所有WAF均使用初始配置,不做任何调整
- 测试结果基于33669个样本(白样本+黑样本)
5.2 测试结果对比
| WAF名称 | 检出率 | 误报率 | 准确率 | 90%耗时(ms) | 99%耗时(ms) |
|---|---|---|---|---|---|
| 雷池社区版 | 74.09% | 8.19% | 99.44% | 0.73 | 0.89 |
| Coraza | 70.26% | 92.77% | 84.10% | 3.09 | 5.10 |
| ModSecurity | 69.57% | 94.86% | 77.56% | 1.36 | 1.71 |
| 宝塔WAF | 38.96% | 30.00% | 98.67% | 0.53 | 0.66 |
| nginx-lua-waf | 37.04% | 69.04% | 97.51% | 0.41 | 0.49 |
| SuperWAF | 24.00% | 25.00% | 98.57% | 0.34 | 0.41 |
5.3 结果分析
-
雷池社区版
- 综合表现最佳
- 检出率最高(74.09%)
- 误报率最低(8.19%)
- 准确率最高(99.44%)
- 性能表现优秀(90%耗时0.73ms)
-
Coraza和ModSecurity
- 检出率较高(约70%)
- 但误报率极高(>90%)
- 对国内场景适配不佳
- ModSecurity性能优于Coraza
-
其他WAF
- 检出率普遍较低(<40%)
- 宝塔WAF误报率相对较低(30%)
- nginx-lua-waf和SuperWAF性能最佳但检出率低
6. 测试注意事项
-
测试样本影响
- 不同的测试样本可能导致结果差异较大
- 应根据实际应用场景选择合适的测试样本
-
测试方法影响
- 测试工具和流程会影响最终结果
- 建议采用标准化测试方法
-
结果解读
- 测试结果仅供参考
- 不应作为评价产品的唯一标准
- 需结合具体应用场景评估
7. 开源资源
测试工具和测试数据已开源:
- 地址: https://gitee.com/kxlxbb/testwaf
8. 结论与建议
-
产品选择建议
- 对于国内用户,雷池社区版是综合性能最佳的选择
- 国际项目(如ModSecurity)检出率高但误报也高,需谨慎使用
-
测试方法建议
- 建立标准化的测试流程
- 根据实际业务特点调整样本比例
- 定期进行测试以跟踪WAF性能变化
-
未来工作
- 扩展测试样本库
- 增加更多WAF产品的测试
- 开发更完善的自动化测试工具