应用 WAF 白名单

目录结构

|-- waf_whitelist/
  |-- waf_whitelist.yaml
  |-- ...

YAML 文件中可以包含一个或多个应用 WAF 白名单配置。

配置说明

每个 WAF 白名单配置是一个包含以下参数的对象:

参数名数据类型是否必选描述
conditionsarray触发白名单的条件列表
rulesarray要忽略的 WAF 规则列表

conditions 配置

可参考 页面规则 - 条件

rules 配置

参数名数据类型是否必选描述
rule_set_namestringWAF 规则集的名称
rule_namesarray要忽略的具体规则名称列表

配置示例

- conditions:
  - var: uri
    op: eq
    val: /hello
  rules:
  - rule_set_name: scanner_detection
    rule_names:
    - '913100'
    - '913110'
  - rule_set_name: protocol_enforcement

此配置定义了两个 WAF 白名单规则,使用规则集名称及规则名称来指定要忽略的规则。

其中的 '913100''913110' 是 ModSecurity 规则的 ID,在 OpenResty Edge 中被用作规则名称,因此需要是字符串类型。当您使用自定义规则集时,可以自行指定规则名称。

使用示例

更新配置到 OpenResty Edge 中:

edge-config https://192.168.1.1 -s -t 2051e780-1897-4ea0-92b4-2c2f0169aa94 -l waf_whitelist -i /root/oredge-configs -d test.com

从 OpenResty Edge 中导出配置:

edge-config -u https://192.168.1.1 -s -t 2051e780-1897-4ea0-92b4-2c2f0169aa94 -E -l waf_whitelist -d test.com

清理 OpenResty Edge 中的配置:

edge-config -u https://192.168.1.1 -s -t 2051e780-1897-4ea0-92b4-2c2f0169aa94 -c -l waf_whitelist -d test.com

示例中均使用 -l waf_whitelist 来指定只操作应用 WAF 白名单相关的配置。

注意事项

  1. 每个白名单规则必须包含 conditionsrules 两个部分。

  2. conditions 中的每个条件必须包含 varopval(或 vals)字段。

  3. rules 中的每个规则必须包含 rule_set_namerule_names 是可选的。

  4. 如果使用 rule_set_name,确保该名称在全局 WAF 规则集中存在。

  5. 如果指定了 rule_names,则只有列出的规则会被忽略;否则,整个规则集都会被忽略。

  6. 在导入配置时,工具会先删除所有现有的 WAF 白名单,然后添加新的白名单规则。

  7. 白名单规则的处理顺序与配置文件中的顺序相反,即最后定义的规则会首先被处理。

  8. 在导出配置时,工具会将规则集 ID 转换为对应的规则集名称,以提高可读性。

  9. 如果应用不存在,工具会在导出时给出警告信息。

  10. WAF 白名单可以帮助减少误报,但过度使用可能会降低安全性,请谨慎配置。

  11. 在处理配置时,工具会自动将规则集名称转换为对应的 ID。