2016-08-02 5 views
0

ファイルが特定のディレクトリにある場合のみ、ModSecurityを使用して応答内容を変更します。私はこのようなルールを実装:ModSecurity: Disruptive actions can only be specified by chain starter rulesModSecurity:チェーンスタータールールでのみ破壊的な操作を指定することができます

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のは私にエラーを与える

。私は他の方法でもルールを書こうとしましたが、それは助けにはなりませんでした。

なぜ起こるのか?

答えて

1

あなたのルールは理にかなっていません。

もし管理者がそれを拒否し、それが通過する次のルール(チェーン)を見たら!どちらですか?ブロックまたはパス?

また、2つの異なるフェーズ(チェーンの最初のルールのフェーズ2と2番目のルールのフェーズ4)からルールを連鎖することはできません。

私はおそらくこのような何かをしたいあなたにお勧めしたい

: `ModSecurityは:実行フェーズにのみ指定することができ、私はあなたが上で言った方法が、私は次のエラーを取得しています。この時間を使ってみました

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

チェーンスタータールールによって。 – user3678812

+0

冗長フェーズを削除するように修正:2番目のルールから4。また、あなたが具体的にログするかどうか、また第2のルールでメッセージを送ることができるかどうか確信が持てないので、それらも削除する必要があります。 –

関連する問題