ModSecurity: разрушительные действия могут быть указаны только в правилах запуска цепи.

Я хочу изменить содержимое ответа с помощью ModSecurity, только если файл находится в определенном каталоге. Я реализовал такие правила:

SecRule REQUEST_URI "@contains /admin/" "phase:2,chain,t:none,t:urlDecode,t:lowercase,t:normalizePath,deny,log"

SecRule STREAM_OUTPUT_BODY "@rsub s/test/replaced_string/" "phase:4,t:none,log,pass,msg:'String replaced'"

Но после написания этого правила, когда я перезапускаю apache2, modsecurity выдает мне ошибку: ModSecurity: Disruptive actions can only be specified by chain starter rules. Я пробовал писать правила и наоборот, но это не помогло.

Любая идея, почему это происходит?


person user3678812    schedule 02.08.2016    source источник


Ответы (1)


Ваше правило не имеет смысла.

Если он находится в админке, откажитесь от него и посмотрите на следующее правило (цепочку), где вы разрешаете ему проходить! Что он? Заблокировать или пройти?

Также нельзя объединять правила из двух разных фаз (этап 2 в первом правиле в цепочке и этап 4 во втором правиле).

Я бы посоветовал вам, вероятно, захотеть что-то вроде этого:

SecRule REQUEST_URI "@contains /admin/" "phase:4,chain,t:none,t:urlDecode,t:lowercase,t:normalizePath,pass,log"
    SecRule STREAM_OUTPUT_BODY "@rsub s/test/replaced_string/" "t:none,log,msg:'String replaced'"
person Barry Pollard    schedule 02.08.2016
comment
Я пытался использовать способ, который вы сказали выше, но на этот раз я получаю следующую ошибку: ModSecurity: Execution phases can only be specified by chain starter rules. - person user3678812; 07.08.2016
comment
Исправлено удаление избыточной фазы:4 из второго правила. Также не уверен, что вы можете регистрировать особенности или нет, и сообщение во втором правиле, поэтому вам, возможно, придется удалить и их. - person Barry Pollard; 07.08.2016