2017-03-22 1 views
0

特定のURIに対して特定のARGを持たないGET/POSTリクエストを評価してブロックしようとしています。チェーンルールでARGを検証できません

次のルールはを検証しません、私は「両方を検証することができますライン

(期待通りに個別に試験した場合、REQUEST_URIとREQUEST_HEADERSが動作)

SecRule REQUEST_URI "(?i:(jwtpoc))" "phase:1,id:999955,block,log,deny,status:508,msg:'IP: %{REMOTE_ADDR} GET/POST test URI',chain" 
SecRule &ARGS:cualquiera "[email protected] 1" "chain" 
SecRule &REQUEST_HEADERS:Referer "@eq 0" 

"!1を@eq" @ EQ1 @ EQ1"""私は、次のいずれかのようSecRuleを書いた場合:!

SecRule &ARGS:cualquiera "@eq 1" "id:999957,phase:2,pass,log,capture,msg:'param cualquiera found: %{MATCHED_VAR}'" 

ルールID 999955はどのようにしてこの目標を達成できますか?

SecRule REQUEST_URI "(?i:(jwtpoc))" "phase:2,id:999955,block,log,deny,status:508,msg:'IP: %{REMOTE_ADDR} GET/POST test URI',chain" 
    SecRule &ARGS:cualquiera "@eq 1" "chain" 
    SecRule &REQUEST_HEADERS:Referer "@eq 0" 

カール--formのcualquiera = ANY http://foo.bar/jwtpoc.showcaller [OK]

[22/Mar/2017:17:23:50 --0400] [foo.bar/sid#1ab39b8][rid#7f518c014e60][/jwtpoc.showcaller][1] Access denied with code 508 (phase 2). Operator EQ matched 0 at REQUEST_HEADERS. [file "/moduleconf/myrules/test/cp_rules.conf"] [line "2"] [id "999955"] [msg "IP: 10.10.10.145 GET/POST test URI"] 

しかし、このいずれかの

:myReferer http://beta.reservhotel.com/win/owa/jwtpoc.showcaller [--referer

カールNOTOK]

をルールSecRule & ARGS:cualquiera "@eq 1" "チェーン"が考慮されておらず、このアクションが

おかげでブロックされていません!

答えて

0

POSTの引数は、フェーズ1では使用できません。そのため、チェーンルール999955をフェーズ2のルールに変更してください。

また、チェーンルールがどのように機能するのか誤解しています。それらはAND引数として機能します。したがって、すべてのルールは一致する必要があります。それはあなたの質問のあなたの最初のルールは、また、cualquiera引数を持っていないブロックjwtpoc要求とも参照者があります。

あなたは2度目の試行で、cualquiera引数テストの部分を削除します。それで、それはcualquiera引数を持ち、また参照先も持たないjwtpoc要求を探します。あなたの最初の例は3つの規則のすべてにマッチしますが、2番目の例はそうではありません(中央の規則が一致しないため)。

cualquiera引数または参照者なしですべてのjwtpoc要求を失敗させたい場合は、このOR文に対して2つのルールを記述する必要があります。このように:

#Rule 9999550 to block jwtpoc requests with a cualquiera argument 
SecRule REQUEST_URI "(?i:(jwtpoc))" "phase:2,id:9999550,block,log,deny,status:508,msg:'IP: %{REMOTE_ADDR} GET/POST test URI',chain" 
    SecRule &ARGS:cualquiera "[email protected] 1" 

#Rule 9999551 to block jwtpoc requests with no referrer 
SecRule REQUEST_URI "(?i:(jwtpoc))" "phase:2,id:9999551,block,log,deny,status:508,msg:'IP: %{REMOTE_ADDR} GET/POST test URI',chain" 
    SecRule &REQUEST_HEADERS:Referer "@eq 0" 
+0

フェーズ1からフェーズ2に変更しましたが、動作は同じです。 –

+0

あなたの質問を編集して、ルールに捕らえられて捕まえられないリクエストの例を挙げられますか?また、デバッグロギングをオンにして、デバッグログに要求が示していることを確認できますか? –

+0

同じルールで#2の例を追加しました.1つは期待通りに実行されていて、もう1つは実行されていません。 –

関連する問題