Skip to content
本页内容由 AI 辅助生成与翻译,如有不当之处,欢迎协助改进。 在 GitHub 上编辑

规则引擎

PRX-WAF 使用声明式的 YAML 规则引擎来检测和拦截 Web 攻击。规则描述了要检查什么、如何匹配以及采取什么动作。引擎在 16 个顺序检测阶段中对每个传入请求逐一评估所有启用的规则。

规则工作原理

每条规则由四个核心组件构成:

  1. 字段(Field) —— 检查请求的哪个部分(路径、查询参数、请求体、请求头等)
  2. 操作符(Operator) —— 如何进行匹配(正则、包含、SQL 注入检测等)
  3. 值(Value) —— 要匹配的模式或阈值
  4. 动作(Action) —— 匹配时采取的操作(拦截、记录、放行)
yaml
- id: "CUSTOM-001"
  name: "Block admin path from external IPs"
  category: "access-control"
  severity: "high"
  field: "path"
  operator: "regex"
  value: "(?i)^/admin"
  action: "block"

规则来源

PRX-WAF 内置 398 条规则,分为四个类别:

来源文件数规则数说明
OWASP CRS21310OWASP ModSecurity Core Rule Set v4(转换为 YAML)
ModSecurity446社区规则:IP 信誉、DoS、数据泄露
CVE 补丁739针对 Log4Shell、Spring4Shell、MOVEit 等的虚拟补丁
自定义13应用特定规则的示例模板

此外,PRX-WAF 还包含 10+ 个编译到二进制中的内置检测器:

  • SQL 注入(libinjection + 正则)
  • 跨站脚本(libinjection + 正则)
  • 远程代码执行 / 命令注入
  • 本地/远程文件包含
  • 服务端请求伪造(SSRF)
  • 路径/目录遍历
  • 扫描器检测(Nmap、Nikto 等)
  • Bot 检测(恶意爬虫、AI 爬虫、无头浏览器)
  • 协议违规检测
  • 敏感词检测(Aho-Corasick 多模式匹配)

规则格式

PRX-WAF 支持三种规则文件格式:

格式扩展名说明
YAML.yaml.ymlPRX-WAF 原生格式(推荐)
ModSecurity.confSecRule 指令(基础子集:ARGS、REQUEST_HEADERS、REQUEST_URI、REQUEST_BODY)
JSON.json规则对象的 JSON 数组

完整模式参考请查看 YAML 语法

偏执级别

每条规则声明一个偏执级别(1-4),控制匹配的激进程度。级别越高,捕获的攻击越多,但误报风险也越高。

级别名称说明误报风险
1默认高置信度规则,生产环境安全极低
2推荐更广覆盖范围,轻微误报风险
3激进广泛启发式检测,需要调优中等
4最大所有规则,包括推测性模式

TIP

生产环境从偏执级别 1 开始。监控日志,调优排除项,然后逐步启用更高级别。

热重载

PRX-WAF 监控 rules/ 目录的文件变化,当文件被创建、修改或删除时自动重载规则。变更在配置的防抖窗口内生效(默认:500ms)。

也可以手动触发重载:

bash
# 通过 CLI
prx-waf rules reload

# 通过 SIGHUP(仅 Unix)
kill -HUP $(pgrep prx-waf)

规则重载是原子性的 —— 旧规则集继续处理流量,直到新规则集完全编译就绪。

目录结构

rules/
├── owasp-crs/          # OWASP CRS v4(21 个文件,310 条规则)
│   ├── sqli.yaml       # SQL 注入(CRS 942xxx)
│   ├── xss.yaml        # 跨站脚本(CRS 941xxx)
│   ├── rce.yaml        # 远程代码执行(CRS 932xxx)
│   └── ...
├── modsecurity/        # ModSecurity 社区规则
├── cve-patches/        # CVE 虚拟补丁(Log4Shell、Spring4Shell 等)
├── custom/             # 你的应用特定规则
└── tools/              # 规则验证和同步工具

下一步

Released under the Apache-2.0 License.