
Я установил модуль ModSecurity IIS на виртуальную машину Windows Server 2012. У меня есть простое тестовое приложение, работающее в собственном пуле приложений.
по умолчанию.aspx-- Просто простая страница, которая выдает дату/время.
веб-конфигурация
<?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://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.