2016-08-02 30 views
0

Ich möchte den Antwortinhalt nur mit ModSecurity ändern, wenn sich die Datei in einem bestimmten Verzeichnis befindet. Ich implementiert die Regeln wie folgt aus:ModSecurity: Unterbrechungsaktionen können nur durch Kettenstarterregeln festgelegt werden

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'" 

Aber nach dieser Regel zu schreiben, wenn ich apache2 neu starten, modsecurity gibt mir eine Fehlermeldung: ModSecurity: Disruptive actions can only be specified by chain starter rules. Ich habe versucht, die Regeln auch anders herum zu schreiben, aber es hat nicht geholfen.

Irgendeine Idee, warum es passiert?

Antwort

1

Ihre Regel macht keinen Sinn.

Wenn seine im Admin-Bereich es verweigern und auf die nächste Regel (Kette) schauen, wo Sie es passieren lassen! Welches ist es? Blockieren oder weitergeben?

Sie können auch keine Regeln aus zwei verschiedenen Phasen ketten (Phase 2 in der ersten Regel in der Kette und Phase 4 in der zweiten Regel).

ich Sie wahrscheinlich wie diese wollen etwas vorschlagen würde:

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'" 
+0

ich die Art und Weise versucht, mit Ihnen oben gesagt, aber dieses Mal habe ich die folgende Störung erhalte: 'ModSecurity: Ausführung Phasen nur dann angegeben werden können durch Kettenstarterregeln. " – user3678812

+0

Korrigiert, um redundante Phase zu entfernen: 4 von der zweiten Regel. Auch nicht sicher, dass Sie Details Log oder nicht und Nachricht in der zweiten Regel, so dass Sie diese auch entfernen müssen. –