したがって、これはこの質問の続きです: modsecurity create rule disable GET request
example GET /secure/test/bla/bla/ example
https://bla.bla.com/secure/test/bla/bla?www.test.com
これが何を意味するのかわかりません。より意味のあるものに書き換えることはできますか?URL に別のドメインが含まれると言っていますか?
あなたが与えた例にはいくつか問題があります。たとえば、この部分:
"@streq \/secure\/test\/bla\/bla\?.+"
@streq
つまり、これは単純な文字列比較です。?.+
したがって、正規表現の一部と思われる部分を使用することはできませんか? @streq
正規表現が必要な場合は、それがデフォルトであるため、次のビットを含めないでください。
"\/secure\/test\/bla\/bla\?.+"
また、スラッシュをエスケープする必要はないと思いますが、そうしても害はありません。
また、これがあります:
SecRule REQUEST_METHOD "@streq post" "t:none,t:lowercase"
getリクエストをブロックしたいのに、なぜpostをチェックするのですか?
2 番目のルールでは、「@rx? Whats the difference between "!@rx and @rx" を追加する必要がありますか?
@rx は、後に続くものが正規表現であることを意味します。別の @ コマンドが提供されない限り @rx が想定されるため、これはデフォルトであるため、実際に含める必要はありません。
!@rx は、正規表現が一致しないことを意味します。つまり、この規則は、この正規表現に一致しない要求に適用されます。
これを reg 式で書いてもいいですか?
SecRule REQUEST_URI "!@rx ^(:?\/secure\/test\/bla\/bla\?.+)$" \
"phase:1,id:91,t:none,t:urlDecode,t:lowercase,t:normalizePath,deny,status:403,msg:'403
Access Denied',chain" SecRule REQUEST_METHOD "@streq post" "t:none,t:lowercase"
いいえ。これは、最初の正規表現に一致せず、投稿もブロックする必要があることを示しています。
したがって、/anything への POST リクエストはブロックされます。また、/anything への GET リクエストはブロックされません。これはあなたが望むものとは正反対のようです!ただし、/secure/test/bla/bla/ への POST は、最初のルールに一致しないため通過が許可されるため、引き続き許可されます。
明らかにこれを理解するのに苦労しているので、ModSecurity の基本を学ぶ必要があると本当に思います。
ModSecurity ルールの基本的な構文は次のとおりです。
SecRule \
VARIABLE_TO_CHECK \
VALUE_TO_CHECK_FOR \
ACTION_TO_TAKE_IF_MATCHED \
\ を使用すると、読みやすくするためにルールを複数のラインに分けることができます。
たとえば、次のようになります。
SecRule \
REQUEST_URI \
"^/secure/test/bla/bla/.*" \
"id:1234,deny"
/secure/test/bla/bla/ (GET および POST) へのすべてのリクエストを拒否します。
2 つの変数をチェックしたい場合は、2 つの異なるルールを連鎖させる必要があります。この場合、破壊的なアクション (拒否など) は、完全な連鎖がすべてのルールに一致する場合にのみ発生します。取った。
SecRule \
REQUEST_URI \
"^/secure/test/bla/bla/.*" \
"id:1234,deny,chain"
SecRule \
REQUEST_METHOD \
"GET"
したがって、このルールは、GET 要求でもある /secure/test/bla/bla/ で始まるすべての場所への要求を拒否します。
チェーン ルールを作成するとすぐに混乱する可能性があるため、最初に個々のルールをテストして適切にブロックされることを確認してから、それらをチェーンすることをお勧めします。
前にアドバイスしたように、 ModSecurity ハンドブックを購入して読んで、ModSecurity の仕組みを学ぶことを強くお勧めします。