将 mod_security 规则限制在一个 vhost 上

将 mod_security 规则限制在一个 vhost 上

我使用相同的 apache 安装运行多个域(通过 vhosts)。有些域需要与其他域不同的 mod_security 规则。在单独的 exceptions.conf 文件中,我收集了所有这些规则,并具有以下语法:

<Location "/test">
    SecAuditEngine Off
    SecRuleRemoveById 950134
    SecRuleRemoveById 981265
    SecRuleRemoveById 981289
    SecRuleRemoveById 981244
    SecAuditEngine RelevantOnly     
</Location>

但是此规则将匹配所有域上的所有 /test 文件夹!但我只想将其限制到特定主机。如何在全局 exceptions.conf 文件中将这些规则仅限制到 vhost?

答案1

以下是一些不同的方法:

  • 不要使用全局异常文件,而要将异常放在虚拟主机定义中
  • 如果您想要一个与实际虚拟主机定义分开的异常文件,请不要将其包含在主服务器配置中 - 而是将其包含在虚拟主机内部。
  • 不要使用<Location>,而要使用 SecRule 和ctl:ruleRemoveByID操作。例如:

SecRule SERVER_NAME "somedomain\.com$" "@streq /test/.*" "ctl:ruleRemoveByID=981244"

如果可能的话,第一个将是迄今为止最简单的。

相关内容