CasWAF 与 ModSecurity 对比
ModSecurity 不是装好就能点开用的产品。它是一个 WAF 引擎 libmodsecurity,由Web服务器加载:服务器还要你自己选,规则要自己写或导入,证书要自己管,请求被拦了还要找地方看。CasWAF 是另一种形态:一个程序同时是代理、防火墙和管理界面,跑的是 ModSecurity 自己的 SecLang 规则,引擎换成了 Coraza。
一览
| CasWAF | ModSecurity | |
|---|---|---|
| 是什么 | 反向代理、防火墙和管理界面,一个程序 | 由Web服务器加载的 WAF 引擎 |
| 许可证 | Apache-2.0 | Apache-2.0 |
| 用什么写的 | Go,规则跑在 Coraza 上 | C++,另有 Apache、Nginx、IIS 的连接器 |
| 规则跑在哪 | 网关进程里,Coraza 上 | Web服务器里,通过连接器 |
| 站点和证书 | 在管理界面里,按域名用 Let’s Encrypt | 交给Web服务器和 Certbot 之类 |
| 管理界面和记录 | 自带,有看板和告警 | 没有,日志送到哪里就在哪里看 |
| 单点登录 | Casdoor,管理界面和受保护站点共用 | 没有用户的概念 |
CasWAF 不一样的地方
引擎周围的部分都带了
站点、跳转、证书、请求记录、看板和告警都在同一个程序里。用 ModSecurity 时这些要自己从Web服务器、Certbot、日志采集和日志查看工具里拼出来。
同一种规则语言,只放在一个地方
SecRule 写在管理界面的规则里,和写在 ModSecurity 配置里一样,由 Coraza 执行。已经会写的规则可以照用,省掉外面那层服务器配置。
多节点一个库
每个网关节点读同样的站点、证书和规则,在一台机器上加的规则在所有机器上生效。用 ModSecurity 时每台服务器的配置各管各的。
登录不用另外做
管理界面用 Casdoor 做多因素认证、LDAP、SAML 和第三方登录,同一个登录可以保护任何站点。ModSecurity 没有用户的概念。
Windows 是一等目标
CasWAF 在 Windows 和 Linux 上都是单个可执行文件。ModSecurity 在 Windows 上只有 IIS 连接器,路窄得多。
ModSecurity 领先的地方
语言是它定义的
SecLang 来自 ModSecurity v3,以及更早的 v2 Apache 模块。新的指令和操作符先出现在那里,Coraza 是照着实现这门语言,而不是定义它。
指令支持更全
Coraza 覆盖了真实规则集用到的指令和操作符,但不等于每一条都支持。一套很大、很特别的 ModSecurity 配置,行为要测过才能确认一致。
能嵌进 Apache 和 IIS
v2 模块跑在 Apache 进程里,还有 IIS 连接器。CasWAF 始终是挡在应用前面的代理,部署形态不同。
二十年的检验
ModSecurity 被审计、被部署、被打穿的时间长得多,OWASP Core Rule Set 也是为它写和调的。这段历史本身就有价值。
怎么选
- 已经在跑 Nginx 或 Apache,只要那个引擎:ModSecurity 加 Core Rule Set。
- 想把代理、证书、规则、记录和管理界面放在一起:CasWAF。
- 有一套信得过的 ModSecurity 规则:CasWAF 用 Coraza 跑 SecLang,但先测一遍。
- 防火墙必须在 Apache 或 IIS 进程里:ModSecurity。