我已经在 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 中
并且只保留核心规则集中启用的两个会议,其余所有会议我都已暂时移动。
- /usr/share/modsecurity-crs/REQUEST-933-APPLICATION-ATTACK-PHP.conf
- /usr/share/modsecurity-crs/REQUEST-949-BLOCKING-EVALUATION.conf
因为,我的目标是通过观察逐一设置规则,没有任何误报/我的应用程序需要被阻止。
但是它并没有阻止请求,而只是将其记录在 mod 安全审计日志中。
我不确定我在这里遗漏了什么,其余一切都处于默认设置。
如果需要,我可以分享更多细节。
有人可以帮我弄这个吗?
答案1
并且只保留核心规则集中启用的两个会议,其余所有会议我都已暂时移动。
这就是问题。
你必须设置必要的事项crs-setup.conf
,或者至少进行审核。
然后你必须还需要了解 CRS 默认的工作方式 - 即“异常评分模式” -这里您可以阅读更多内容。
简要总结:大多数 CRS 规则不会终止交易,只会增加异常分数(这是一个交易分数变量)。如果达到先前设定的阈值(请参阅crs-setup.conf
),则特定规则会终止该交易。
如果你删除这些配置文件(通常请求-949-阻止-评估和响应-959-阻止-评估),那么您的交易就永远不会被阻塞。
重要的!异常评分模式是默认模式,但您也可以使用传统的“自包含”模式。然后您必须修改一些设置crs-setup.conf
- 请参阅这部分。
使用自包含模式时您不需要添加其他规则,每个触发的规则都会终止交易。
答案2
谢谢@airween,
我知道大多数规则实际上并没有拒绝请求/响应,它们只是增加/更新分数,默认模式是“异常评分”模式,我不想将其更改为“自包含模式”。
我认为我已经在我的配置中发现了这个问题。
第一个 conf 文件需要REQUEST-901-INITIALIZATION.conf
初始化那些异常分数变量,我缺少它,这就是为什么请求没有被阻止。
总的来说,通过加载 crs 的三个 conf 文件对我来说是有用的。
- /usr/share/modsecurity-crs/REQUEST-901-INITIALIZATION.conf(负责变量初始化)
- /usr/share/modsecurity-crs/REQUEST-933-APPLICATION-ATTACK-PHP.conf(负责实际规则执行并相应地设置分数)
- /usr/share/modsecurity-crs/REQUEST-949-BLOCKING-EVALUATION.conf(负责根据规则配置设置的分数阻止请求)