本文将从三个方面讲述ModSecurity v2版本与v3版本的主要区别。
最新结论(20220114):请勿在Nginx使用ModSecurity V2版本,V2版本与Nginx存在兼容问题,且目前官方团队明确表示不会进行修复。
一、实现机制不同
ModSecurity在最初设计的时候,它只是Apache的一个扩展模块,随着时间的推移、用户量的增加,为了满足用户的需求,该项目增加了对Nginx以及IIS的支持,但由于其本身是Apache的一个模块,因此在编译以及运行时,都离不开Apache这个主体,意思就是,即便是在Nginx上使用ModSecurity,但仍需先安装Apache。以上为ModSecurity v2版本的实现机制。
为了满足日益增长的对额外平台支持的需求,因此ModSecurity团队决定删除其对Apache的依赖,使其更加独立于平台,ModSecurity v3版本由此诞生,同时取了一个新名字:Libmodsecurity。ModSecurity v3版本可以不依赖WEB服务进行独立安装,但是如果需要与WEB服务进行联动工作时,则需要安装对应的Connector(连接器),如Nginx需要安装ModSecurity-nginx connector,Apache需要安装ModSecurity-apache connector。
二、配置指令/参数的支持程度不同
ModSecurity v2目前本人能查到的最早的一个版本是v2.1.0-rc7,发布时间是2007年3月7日,截止到该文章发布时间(2020年4月1日),最新的一个版本是v2.9.3,发布时间是2018年12月6日,也就是说,ModSecurity v2的版本迭代至少经历了11年。
ModSecurity v3最早的一个版本是v3.0.0-rc1,发布时间是2017年8月28日,截止到该文章发布时间(2020年4月1日),最新的一个版本是v3.0.4,发布时间是2020年1月10日,也就是说,ModSecurity v3的版本迭代目前只经历了两年半的时间。
由于迭代时间的差异,以及实现机制的不同,ModSecurity v2的一些配置指令以及参数,在ModSecurity v3上并不支持,想了解详情可点击此处访问ModSecurity中文手册,手册中对应的配置指令/参数,如出现“libModSecurity支持:否/TBI/TBD”,即表示该配置指令/参数目前并不被ModSecurity v3所支持。
三、支持的WEB服务不同
ModSecurity v2版本目前支持Apache、Nginx、IIS;
ModSecurity v3版本目前支持Nginx、Apache,但由于ModSecurity v3与Apache的连接器目前仍处于测试阶段,因此如果生产环境的WEB服务为Apache,仍建议使用ModSecurity v2版本。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。