防护等级决定启用范围
OWASP CRS 是 ModSecurity 等 WAF 引擎上最常用的通用规则集,防护等级(Paranoia Level,PL)决定启用范围:PL1 只跑基础规则,PL2 到 PL4 逐级加入对异常编码、非常规字符、严格协议合规等容易误报但更严格的检查。等级越高拦得越严,误报也越多,绝大多数生产站点从 PL1 起步。
和异常评分的关系
PL 决定跑哪些规则,异常评分决定命中多少条才拦截:CRS 把命中的规则按严重度累加分数,达到阈值才拦(入站默认 5 分)。升 PL 之后,同一个请求可能多命中几条低危规则、更快触达阈值,这就是升等级后误报容易集中爆发的原因。理解这两层机制,才能在升等级前预判影响面。
基本信息
| 规则集 | OWASP CRS,配合 ModSecurity 或兼容引擎 |
|---|---|
| 等级范围 | PL1(最宽松)至 PL4(最严格) |
| 配置位置 | crs-setup.conf 中的 900000 系列 SecAction |
| 默认建议 | 生产站点从 PL1 起步,按业务逐步提升 |
典型使用场景
- 新站点接入 CRS,先用 PL1 观察误报分布
- 支付、登录、后台等高价值业务逐步升到 PL2
- 审计要求证明防护强度可调且有依据
- 升级 CRS 版本后回归确认等级设置未被动过
- 多站点共用一套规则集时,按站点区分等级
配置示例
配置示例
# 设置防护等级为 PL1,写显式比依赖默认值更利于审计
SecAction "id:900000,phase:1,nolog,pass,t:none,setvar:tx.paranoia_level=1"
# 升到 PL2 只改数值,热加载或重启 WAF 后生效
# 变量名与规则 id 以所用 CRS 版本为准等级与适用
| 等级 | 启用范围 | 误报成本 | 适用场景 |
|---|---|---|---|
| PL1 | 基础规则集 | 低 | 大多数生产站点 |
| PL2 | 加入更严格的编码与协议校验 | 中,需要调优 | 高价值业务 |
| PL3 | 进一步加入严格规则 | 高,通常需专人调优 | 高安全要求站点 |
| PL4 | 覆盖面最大,规则最严 | 很高 | 特殊场景,谨慎使用 |
升级防护等级与升级 CRS 版本要分开做:一次只变一个变量,误报出现时才容易归因。
等级越高,日志里记录每条规则的分数贡献就越重要:没有分数明细,调优只能靠猜。
从 PL1 直接跳到 PL3、PL4 会产生大量误报,值班团队疲于加例外,真实攻击反而被噪声淹没。