我已经在 ubuntu 22.04 中使用安装了 apache 的 mod 安全模块。
sudo apt-get install libapache2-mod-security2
sudo a2enmod security2
sudo systemctl restart apache2
这将安装安全模块版本 2.9.5 和核心规则集版本 3.3.2。
我设置
SecRuleEngine On
在 /etc/modsecurity/modsecurity.conf 中
并仅保留从核心规则集中启用的两个conf,其余所有conf我已临时移动。
- /usr/share/modsecurity-crs/REQUEST-933-APPLICATION-ATTACK-PHP.conf
- /usr/share/modsecurity-crs/REQUEST-949-BLOCKING-EVALUATION.conf
因为,我的目标是通过观察来一一制定规则,没有任何误报/我的应用程序需要被阻止。
但它并没有阻止请求,而是只是记录在 mod 安全审核日志中。
我不确定我在这里缺少什么,其余的一切都处于默认设置。
我可以根据需要分享更多详细信息。
有人可以帮我弄这个吗?
这就是问题。
您必须在 中设置必要的内容
crs-setup.conf
,或者至少进行审查。那么你还必须了解 CRS 默认情况下是如何工作的——这就是“异常评分模式”——在这里你可以阅读更多内容。
快速总结:大多数 CRS 规则不会终止交易,只是增加异常分数(这是交易分数变量)。如果达到先前设置的阈值(请参阅
crs-setup.conf
),则特定规则会终止该阈值。如果您删除这些配置文件(通常是REQUEST-949-BLOCKING-EVALUATION和RESPONSE-959-BLOCKING-EVALUATION),那么您的事务将永远不会阻塞。
重要的!异常评分模式是默认模式,但您也可以使用传统的“独立”模式。然后您必须修改一些设置
crs-setup.conf
- 请参阅本节。使用独立模式,您不需要添加其他规则,每个触发的规则都会终止事务。
谢谢@airween,
我知道大多数规则实际上并不是拒绝请求/响应,它们只是增加/更新分数,默认模式是“异常评分”模式,我不想将其更改为“自包含模式”。
我想我在我的配置中发现了问题。
第一个conf文件需要
REQUEST-901-INITIALIZATION.conf
初始化那些异常分数变量,我错过了,这就是请求没有被阻止的原因。总的来说,通过加载 crs 的三个conf文件对我有用。