myguard-labs/vimbadmin-crs-plugin

GitHub: myguard-labs/vimbadmin-crs-plugin

为 ViMbAdmin 邮件管理后台提供 OWASP CRS 误报排除与可选正向安全白名单的即插即用 ModSecurity/Coraza 插件。

Stars: 0 | Forks: 0

# ViMbAdmin OWASP CRS 插件 ![Lint](https://static.pigsec.cn/wp-content/uploads/repos/cas/15/15e9e38379783188cff60c52dc1a4956f07be3c00c7a8bad969dd41a89434ae0.svg) ![Integration Tests](https://static.pigsec.cn/wp-content/uploads/repos/cas/b2/b27cbd7e6f82ca8da922491fd0b8356b1e133b2c5329af310766b92e82aa457b.svg) ![Apache/v2](https://static.pigsec.cn/wp-content/uploads/repos/cas/94/94937bc68f4d8c1b52c850c40d6cfa47cd5d68dce2ef3d9b669af92bce115779.svg) ![NGINX/v3](https://static.pigsec.cn/wp-content/uploads/repos/cas/56/56766f4696c4de88e130ea6a203e2e50bae849624ab9fe51a8bda4845ee07eb9.svg) ![NGINX/Coraza](https://static.pigsec.cn/wp-content/uploads/repos/cas/02/02cf12a942b21880652735722753d3cdec75a452c65929f9c5ce652a6fb7351f.svg) ![Security Corpus](https://static.pigsec.cn/wp-content/uploads/repos/cas/f9/f9c0433d450c4e69a8c5305093c981e8173f8b0937f41c39f8d82354f132fb89.svg) 一个即插即用的 [OWASP CRS](https://coreruleset.org/) 插件,让 Core Rule Set 能够与 **[ViMbAdmin](https://github.com/eilandert/ViMbAdmin)** 完美配合 —— 并且可以选择将管理面板锁定在严格的 allowlist 之内。 它主要做两件事: 1. **误报排除** (`vimbadmin-before.conf`) — 精确的、 host 作用域内的 `ctl:ruleRemoveTargetByTag` 排除项,以确保合法的输入 (带有符号的密码、CSRF token、逗号分隔的 alias `goto` 列表、自由文本描述、`10GB` 样式的配额)不会触发 CRS。 2. **正向安全 / allowlist** (`vimbadmin-after.conf`,**可选启用**) — *允许 ViMbAdmin 实际使用的请求,阻止其他一切*。任何其**名称**不属于该应用实际使用的 request argument 都将被拒绝,任何超出 ViMbAdmin 实际 route map 范围的 path 也将被拒绝。这可以阻止 parameter smuggling、mass-assignment probing,以及无论 payload 如何,都能屏蔽常见的 `/​.env` / `/wp-login.php` 扫描器噪音。 ## 环境要求 - CRS 版本 4.0 或更新 - 兼容 ModSecurity 的 Web Application Firewall ## 安装 将这三个文件复制到你的 CRS `plugins/` 目录中: ``` plugins/vimbadmin-config.conf plugins/vimbadmin-before.conf plugins/vimbadmin-after.conf ``` CRS 会自动加载 `plugins/*-config.conf`,然后是 `*-before.conf`(在规则之前), 最后是 `*-after.conf`(在规则之后)。 ## 配置 编辑 `vimbadmin-config.conf`: | 变量 | 默认值 | 含义 | |---|---|---| | `tx.vimbadmin-plugin_enabled` | `0` | 主开关。**默认关闭** — 该插件会降低 CRS 在 ViMbAdmin 路由上的防御能力,因此必须按 vhost 启用,而不是全局启用。仅在 ViMbAdmin 的 server/location 块中将其设置为 `1`(参见部署上线)。 | | `tx.vimbadmin-plugin_positive_security` | `0` | 在测试通过后,将 allowlist 层开启 (`1`)。 | 作用域完全由按 vhost 启用的标志控制 — **没有 Host gate**。仅在提供 ViMbAdmin 服务的地方启用该插件,例如(Angie / NGINX/Angie + libmodsecurity3): ``` location /vimbadmin/ { modsecurity on; modsecurity_rules ' SecAction "id:9529001,phase:1,nolog,pass,setvar:tx.vimbadmin-plugin_enabled=1" '; # ... } ``` 在 Apache/mod_security2 上,在匹配的 `` / `` 块中设置相同的变量。 ## 部署上线 1. 安装后,仅在 ViMbAdmin 的 vhost/location 中启用该插件 (`setvar:tx.vimbadmin-plugin_enabled=1`)。这些排除项是安全的, 并且绝不会影响同一 CRS 引擎上的其他 vhost。 2. 以 **DetectionOnly** 模式运行 CRS,并设置 `tx.vimbadmin-plugin_positive_security=1`, 然后观察审计日志中 `9529220` / `9529230` 的命中情况 — 这些是 allowlist 中缺失的 arguments 或 paths。将你通过自定义插件添加的所有合法项, 添加到 `vimbadmin-after.conf` 中规则 `9529220` 的内联 allowlist 正则表达式中。 3. 将 CRS 切回阻断模式。 Rule ID 范围:**9,529,000 – 9,529,999**(基础块 9,529,000;在 [CRS 插件注册表](https://github.com/coreruleset/plugin-registry)中可用, 等待正式分配)。 ## 持续集成 每次 push/PR 都会运行六个 GitHub Actions 工作流(每个工作流在上面都有自己的徽章): | 工作流 | 功能说明 | |---|---| | **Lint** | 本地 rule-ID-range (9529000–9529999) / duplicate-ID / `@pmFromFile` / test-reference 检查,然后是官方的 `coreruleset/crs-plugin-test-action` lint。 | | **Integration Tests** | 插件结构检查(无 host gate — 作用域由按 vhost 启用的标志控制、可选 allowlist、条件配置默认值、每条规则上的 `ver:`)。 | | **Apache/v2** | 构建共享的 CRS+插件镜像,并在真实的 Apache httpd + mod_security2 上运行通用的 go-ftw 回归测试 + 安全测试套件(`apache2ctl -t` 检查解析)。 | | **NGINX/v3** | 在 Angie + libmodsecurity3 3.0.14 上使用相同的共享镜像和相同的套件 — 这是一个生产环境的镜像(`angie -t` 检查解析)。 | | **NGINX/Coraza** | 在 nginx + `libnginx-mod-http-coraza` / `libcoraza1` 上使用相同的共享镜像和相同的套件(`nginx -t` 检查解析)。 | | **Security Corpus** | 在 Apache + mod_security2 上运行 [`tests/security/`](tests/security/) 下的对抗性规避和正向安全 payloads,作为一个专注的、确定性的绕过/过度阻断检查关卡。 | 三引擎测试框架位于 [`tests/integration/`](tests/integration/) 下; 所有引擎工作流都在 [`tests/regression/`](tests/regression/) 和 [`tests/security/`](tests/security/) 下运行 go-ftw 测试用例。 ## 禁用插件 取消注释 `plugins/vimbadmin-config.conf` 中的规则 `9529010`,或者直接将 插件文件从 `plugins/` 目录中完全删除。 ## 报告误报 提交一个新的 issue 或 pull request。对于 issue,请包含: - CRS 版本 - ModSecurity/Coraza 版本 - modsec 审计日志 - 导致误报的原因 ## 另请参阅 - ViMbAdmin fork: - 加固版的 FPM pool、Angie vhost 以及 Snuffleupagus ruleset 位于该 仓库的 `contrib/` 目录下。
标签:AppImage, ModSecurity, OWASP CRS, WAF规则, Web应用防火墙, 安全防护, 白名单