ModSecurity 无法在 IIS 上运行

ModSecurity 无法在 IIS 上运行

我在 Windows Server 2012 VM 上安装了 ModSecurity IIS 模块。我有一个简单的测试应用程序在其自己的应用程序池上运行。

默认.aspx-- 只是一个显示日期/时间的简单页面。

网页配置

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <ModSecurity enabled="true" configFile="C:\inetpub\wwwroot\modsecurity.conf" />
    </system.webServer>
</configuration>

修改安全配置文件

SecRuleEngine On
SecRule ARGS:testparam "test" "id:1234,deny,status:403,msg:'Our test rule has triggered'"

当我浏览该网站时(例如http://localhost?testparam=test),我看到的是测试页面而不是 403。事件查看器中没有记录任何内容。

答案1

您很可能就是这个问题的受害者:https://github.com/SpiderLabs/ModSecurity/issues/787

Broco 的答案很接近,但它没有引起人们对最重要的部分的注意:overrideModeDefault="Allow"。如果你检查你的 C:\Windows\System32\inetsrv\Config\applicationHost.config 文件,你可能会看到

<section name="ModSecurity" overrideModeDefault="Deny" allowDefinition="Everywhere" /></sectionGroup>

这需要更改为“允许”,否则添加<ModSecurity ...>到您网站的配置文件实际上只会禁用 ModSecurity。

答案2

您是否编辑了 C:\Windows\System32\inetsrv\config?您必须通过添加以下文件来启用 modsecurity:

<section name="ModSecurity" overrideModeDefault="Allow" allowDefinition="Everywhere" /></sectionGroup>

此外,你的配置文件永远不应该曾经位于您的 wwwroot 中。将其放在安全的地方,例如:

configFile="C:\Program Files\ModSecurity IIS\modsecurity_iis.conf"

另请注意,根据文档,该文件在 Windows 上应被称为 modsecurity_iis.conf。

相关内容