Так это продолжение этого вопроса: 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"
Почему вы проверяя пост, когда вы хотите, чтобы заблокировать получить запросы?
В secound правило мне нужно добавить "@rx? Что разница betweeen"! @rx и @rx
@rx означает, что за ним следует регулярное выражение. Поскольку я говорю, что это значение по умолчанию, поэтому на самом деле не нужно включать, поскольку @rx будет приниматься, если не предоставлена другая команда @.
! @rx означает, что регулярное выражение должно соответствовать , а не - применять это правило к любому запросу, который не соответствует этому регулярному выражению.
Могу ли я написать это с выражением reg так?
SecRule REQUEST_URI "[email protected] ^(:?\/secure\/test\/bla\/bla\?.+)$" \
"phase:1,id:91,t:none,t:urlDecode,t:lowercase,t:normalizePath,deny,status:403,msg:'403
Access Denied», цепь» SecRule REQUEST_METHOD "@streq пост" "т: нет, т: строчной"
Нет, это говорит, что ничего, что делает не матч первый регулярный выражение, а также сообщение должно быть заблокировано.
Таким образом, запрос POST в/что-либо будет заблокирован И запрос GET на все что-либо не будет заблокирован Это, кажется, точная противоположность т чего ты хочешь! Хотя POST to/secure/test/bla/bla/все равно будет разрешен, так как он не будет соответствовать первому правилу и поэтому будет разрешен.
Я действительно думаю, что вам нужно изучить основы ModSecurity, поскольку вы, очевидно, пытаетесь это понять.
Основной синтаксис правила ModSecurity является:
SecRule \
VARIABLE_TO_CHECK \
VALUE_TO_CHECK_FOR \
ACTION_TO_TAKE_IF_MATCHED \
С \ позволяя вам отделить власть над несколькими Iines для удобства чтения.
VARIABLE_TO_CHECK может быть любым из списка ModSecurity переменных (https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#Variables)
VALUE_TO_CHECK_FOR является регулярное выражение по умолчанию. Хотя может быть изменено, чтобы быть прямым сравнением строк, например. Это будет по сравнению со значением VARIABLE_TO_CHECK, и если он соответствует ACTION_TO_TAKE_IF_MATCHED, будет запущен, если он не соответствует ModSecurity прекратит обработку этого правила для этого запроса и переместит на следующее правило.
ACTION_TO_TAKE_IF_MATCHED - это список действий (https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#Actions). Каждое правило должно иметь идентификатор, а затем обычно либо блокирует запросы , которые соответствуют выше (с использованием deny
), либо запросы белых списков (с использованием allow
).
Так, например:
SecRule \
REQUEST_URI \
"^/secure/test/bla/bla/.*" \
"id:1234,deny"
будет отрицать любые запросы/безопасный/тест/л/л/(GET и POST).
Если вы хотите проверить две переменные, вам нужно связать два разных правила вместе, и в этом случае любые разрушительные действия (например, deny) будут выполняться только в том случае, если полная цепочка соответствует всем правилам, - но смутно первое правило должно указывать конечное действие.
SecRule \
REQUEST_URI \
"^/secure/test/bla/bla/.*" \
"id:1234,deny,chain"
SecRule \
REQUEST_METHOD \
"GET"
Так что это правило запретит любые запросы в любое место, начиная с/безопасными/тестом/л/л/который также запрос GET.
При построении закодированных правил он может быстро запутаться, поэтому предлагаю вам сначала проверить каждое индивидуальное правило, чтобы подтвердить его блокировку по мере необходимости, а затем связать вместе.
Как я уже советовал, я настоятельно рекомендую вам купить и прочитать ModSecurity handbook, чтобы научить вас, как работает ModSecurity.