1

ファイルが特定のディレクトリにある場合にのみ、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. ルールを逆に書いてみましたが、役に立ちませんでした。

なぜそれが起こるのですか?

4

1 に答える 1

3

あなたのルールは無意味です。

管理エリアにある場合は拒否し、通過を許可する次のルール (チェーン) を確認してください。それはどれですか?ブロックかパスか?

また、2 つの異なるフェーズ (チェーンの最初のルールのフェーズ 2 と 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'"
于 2016-08-02T20:58:07.767 に答える