Назад | Перейти на главную страницу

ModSecurity не работает на IIS

Я установил модуль 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.