Я установил модуль ModSecurity IIS на виртуальную машину Windows Server 2012. У меня есть простое тестовое приложение, работающее в собственном пуле приложений.
default.aspx - Простая страница с указанием даты и времени.
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'"
Когда я перехожу на сайт (например, http: // локальный? testparam = тест), Мне предоставляется моя тестовая страница вместо 403. В средстве просмотра событий ничего не регистрируется.
Вы редактировали C: \ Windows \ System32 \ inetsrv \ config? Вы должны включить там modsecurity, добавив
<section name="ModSecurity" overrideModeDefault="Allow" allowDefinition="Everywhere" /></sectionGroup>
Также ваши файлы конфигурации никогда не должны КОГДА-ЛИБО быть в вашем wwwroot. Положите его в безопасное место, например:
configFile="C:\Program Files\ModSecurity IIS\modsecurity_iis.conf"
Также обратите внимание, что согласно документации файл должен называться modsecurity_iis.conf в Windows.
Похоже, вы стали жертвой этой проблемы: https://github.com/SpiderLabs/ModSecurity/issues/787
Ответ Броко близок, но не привлекает внимания к самому важному: overrideModeDefault="Allow"
. Если вы проверите свой файл C: \ Windows \ System32 \ inetsrv \ Config \ applicationHost.config, вы, вероятно, увидите
<section name="ModSecurity" overrideModeDefault="Deny" allowDefinition="Everywhere" /></sectionGroup>
Это необходимо изменить на "Разрешить" или добавить <ModSecurity ...>
в файл конфигурации вашего веб-сайта просто отключит ModSecurity.