
Ich habe das ModSecurity IIS-Modul auf einer Windows Server 2012-VM installiert. Ich habe eine einfache Testanwendung, die in ihrem eigenen App-Pool ausgeführt wird.
Standardmäßig.aspx– Nur eine einfache Seite, die Datum/Uhrzeit ausgibt.
web.config
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<ModSecurity enabled="true" configFile="C:\inetpub\wwwroot\modsecurity.conf" />
</system.webServer>
</configuration>
modsecurity.conf
SecRuleEngine On
SecRule ARGS:testparam "test" "id:1234,deny,status:403,msg:'Our test rule has triggered'"
Wenn ich die Site aufrufe (z. B.http://localhost?testparam=test), wird mir statt einer 403-Meldung meine Testseite angezeigt. In der Ereignisanzeige wird nichts protokolliert.
Antwort1
Es ist wahrscheinlich, dass Sie von diesem Problem betroffen sind:https://github.com/SpiderLabs/ModSecurity/issues/787
Brocos Antwort ist nah dran, aber sie lenkt die Aufmerksamkeit nicht auf den wichtigsten Teil: overrideModeDefault="Allow"
. Wenn Sie Ihre Datei C:\Windows\System32\inetsrv\Config\applicationHost.config überprüfen, werden Sie wahrscheinlich sehen
<section name="ModSecurity" overrideModeDefault="Deny" allowDefinition="Everywhere" /></sectionGroup>
Dies muss auf „Zulassen“ geändert werden. Andernfalls <ModSecurity ...>
wird durch das Hinzufügen zur Konfigurationsdatei Ihrer Website im Wesentlichen nur ModSecurity deaktiviert.
Antwort2
Hast du C:\Windows\System32\inetsrv\config bearbeitet? Dort musst du Modsecurity aktivieren, indem du
<section name="ModSecurity" overrideModeDefault="Allow" allowDefinition="Everywhere" /></sectionGroup>
Auch Ihre Konfigurationsdateien sollten niemalsIMMERmuss in Ihrem wwwroot sein. Legen Sie es an einen sicheren Ort, z. B.:
configFile="C:\Program Files\ModSecurity IIS\modsecurity_iis.conf"
Beachten Sie auch, dass die Datei unter Windows gemäß Dokumentation „modsecurity_iis.conf“ heißen sollte.