Установить для mod_security значение discoveryOnly для определенной страницы?

Если mod_security включен для всего веб-сайта, есть ли способ установить для определенных страниц только обнаружение?

Вариант использования заключается в том, что приложение используется для настройки веб-сайтов, и использование CSS или js очень распространено, но очень вероятно, что modsecurity выдаст исключение из правила XSS. Я хотел бы обнаруживать эти исключения, но не блокировать их только на этих страницах. Однако на всех других страницах я хочу, чтобы исключения правил блокировались.

Более подробная информация: приложение на самом деле является приложением IIS, работающим на другом сервере Windows, в то время как mod_security работает в Apache на сервере Linux. haproxy направляет входящие запросы на apache, а apache принимает запрос через modsecurity; если он проходит, он обратно проксирует его обратно в haproxy, который затем передает его в IIS.

== incoming request ==> haproxy ==> apache 
                                      v
                                    mod_security
                                      v
        IIS machine <== haproxy <== mod_proxy

(да, есть веская причина для использования haproxy. У нас есть сотни https-сертификатов, и мы можем указать haproxy на полную их папку, и он выберет правильный на основе запроса https SNI. нашел что-нибудь еще, что может сделать это.)

Таким образом, на стороне apache нет каталога, в котором файл .htaccess имел бы смысл, по крайней мере, на мой крошечный ум.

Пути, которые должны рассматриваться как DetectionOnly, будут соответствовать хосту admin.mysite.com и пути ^/site/[a-zA-Z0-9-]+/Settings$.


person Ross Presser    schedule 27.07.2016    source источник


Ответы (1)


Что-то вроде этого должно работать (не проверено):

SecRule REQUEST_HEADERS:Host "@streq admin.mysite.com" "phase:1,id:1234,chain"
    SecRule REQUEST_URI "^/site/[a-zA-Z0-9-]+/Settings$" "ctl:ruleEngine=DetectionOnly"

Просто добавьте это правило перед всеми остальными и убедитесь, что id уникален (в качестве примера я использовал 1234).

Механизм правил будет сброшен для следующего запроса, так как изменения ctl предназначены только для этого запроса.

person Barry Pollard    schedule 27.07.2016