
我已在 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=測試),我看到的是我的測試頁面而不是 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。