CRS 是什么
OWASP 核心规则集(CRS)是一套开源的 Web 攻击检测规则,通常与 ModSecurity、Coraza 这类引擎配合使用。它不按「一条规则等于一次拦截」工作,而是采用异常评分:每条命中的规则给本次请求累加分数,累计超过阈值才判定为攻击。这种设计让调优有了空间——可以通过调整规则等级与阈值,在漏报和误报之间找到业务能接受的平衡点。
基本信息
| 适用平台 | ModSecurity、Coraza 等开源引擎上的 WAF 部署 |
|---|---|
| 组成 | 按攻击类型划分的规则文件、异常评分机制、安装与调优配置 |
| 可调项 | 规则等级(偏执等级)、入站与出站阻塞阈值、规则启用与排除 |
| 版本注意 | 大版本升级可能调整规则 ID 与默认阈值,需读变更说明再升级 |
典型使用场景
- 自建 WAF:在 nginx 或 Apache 前挂 ModSecurity 做应用层防护
- 业务上线前的观察模式:先只记录不拦截,统计真实命中分布
- 偏执等级调整:从默认等级起步,根据误报情况逐级调整检测强度
- 定向排除:对已知会产生大量合法「类攻击特征」的接口做规则级排除
- 合规与审计:以规则 ID 记录拦截原因,便于复盘与对外说明
关键配置项
关键配置项
SecRuleEngine On # On 拦截 / DetectionOnly 只记录
SecRequestBodyAccess On # 允许检查请求体,否则 POST 攻击检测不到
SecResponseBodyAccess Off # 出站检查开销大,按需开启
SecDefaultAction "phase:2,log,auditlog,pass"
Include /etc/modsecurity/crs/crs-setup.conf # 阈值与等级在此调整
Include /etc/modsecurity/crs/rules/*.conf # 加载规则文件调优方向对照
| 现象 | 调整方向 | 风险 |
|---|---|---|
| 拦截过多,正常业务受影响 | 提高阻塞阈值或降低检测等级 | 阈值过高会漏掉真实攻击 |
| 攻击流量穿了过去 | 提高检测等级或收紧阈值 | 误报随之上升,需配合例外 |
| 某接口持续误报 | 按规则 ID 做定向排除 | 排除范围过大会形成检测盲区 |
| 升级后行为变化 | 对照变更说明逐项核对 | 默认值调整可能改变拦截结果 |
规则集不是装了就有防护效果:先跑观察模式统计命中情况,再逐步收紧阈值,调整过程要留记录,否则后续没人说得清为什么放过了某类流量。