6 款免费 WAF 的测试报告
字数 2337 2025-08-10 17:51:49

WAF防护能力测试方法与实践指南

1. 测试背景与目的

在网络安全活动中,Web应用防火墙(WAF)是最基础的安全防护产品之一。本文档旨在提供一套科学、可复现的WAF防护能力测试方法,帮助用户评估不同WAF产品的实际防护效果。

2. 测试指标体系

2.1 核心指标定义

  1. 检出率(Recall)

    • 计算公式:TP / (TP + FN)
    • 反映WAF检测能力的全面性,没有检出即为"漏报"
  2. 误报率(False Positive Rate)

    • 计算公式:FP / (TP + FP)
    • 反映对正常流量的干扰,不靠谱的结果即为"误报"
  3. 准确率(Accuracy)

    • 计算公式:(TP + TN) / (TP + TN + FP + FN)
    • 综合指标,避免漏报和误报顾此失彼
  4. 检测耗时(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请求
  • 分类采集方法:
    1. 简单的通用攻击流量: 部署DVWA靶机,所有通用漏洞样例攻击
    2. 常见的攻击流量: 使用PortSwigger官网提供的所有攻击Payload
    3. 针对性漏洞流量: 部署VulHub靶机,使用默认POC攻击经典漏洞
    4. 攻击对抗流量: 调高DVWA对抗级别(中级和高级),再次攻击

4. 测试环境搭建

4.1 靶机配置

使用Nginx作为后端靶机,配置如下:

location / {
    return 200 'hello WAF!';
    default_type text/plain;
}

特点:无论收到什么请求,均直接返回200

4.2 测试工具

综合使用两款开源WAF测试工具:

  1. gotestwaf: 来自泰国的开源WAF测试工具
  2. 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 结果分析

  1. 雷池社区版

    • 综合表现最佳
    • 检出率最高(74.09%)
    • 误报率最低(8.19%)
    • 准确率最高(99.44%)
    • 性能表现优秀(90%耗时0.73ms)
  2. Coraza和ModSecurity

    • 检出率较高(约70%)
    • 但误报率极高(>90%)
    • 对国内场景适配不佳
    • ModSecurity性能优于Coraza
  3. 其他WAF

    • 检出率普遍较低(<40%)
    • 宝塔WAF误报率相对较低(30%)
    • nginx-lua-waf和SuperWAF性能最佳但检出率低

6. 测试注意事项

  1. 测试样本影响

    • 不同的测试样本可能导致结果差异较大
    • 应根据实际应用场景选择合适的测试样本
  2. 测试方法影响

    • 测试工具和流程会影响最终结果
    • 建议采用标准化测试方法
  3. 结果解读

    • 测试结果仅供参考
    • 不应作为评价产品的唯一标准
    • 需结合具体应用场景评估

7. 开源资源

测试工具和测试数据已开源:

  • 地址: https://gitee.com/kxlxbb/testwaf

8. 结论与建议

  1. 产品选择建议

    • 对于国内用户,雷池社区版是综合性能最佳的选择
    • 国际项目(如ModSecurity)检出率高但误报也高,需谨慎使用
  2. 测试方法建议

    • 建立标准化的测试流程
    • 根据实际业务特点调整样本比例
    • 定期进行测试以跟踪WAF性能变化
  3. 未来工作

    • 扩展测试样本库
    • 增加更多WAF产品的测试
    • 开发更完善的自动化测试工具
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作为后端靶机,配置如下: 特点:无论收到什么请求,均直接返回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产品的测试 开发更完善的自动化测试工具