ModSecurity: правила выполняются в порядке возрастания идентификатора правила?

Я создаю свои собственные правила безопасности для модов, и у меня есть вопрос о том, влияет ли идентификатор правила на порядок выполнения правил.

Моя текущая настройка:

  • Я использую мод-безопасность версии: 2.6.3-1ubuntu0.2
  • моя конфигурация безопасности мода основана на http://mod-security.svn.sourceforge.net/viewvc/mod-security/m2/trunk/modsecurity.conf-recommended (имеет 5 директив SecRule — идентификаторы: 200000 — 200005)
  • мои правила находятся в отдельном файле /etc/apache2/conf.d/modsecurity-activated-rules.conf и загружаются после конфигурации modsecurity /etc/apache2/conf.d/ modsecurity.conf

Мое правило:

<IfModule mod_security2.c>
# block all GET requests - learning purposes only
SecRule REQUEST_METHOD "^(GET)$" \ 
    "phase:1,t:none,auditlog,block,id:1001,rev:2,tag:HARDENING"
</IfModule>

Отказ от ответственности: это простое правило и, вероятно, не оптимальное, поскольку я все еще учусь. Предложения приветствуются

Итак, мой вопрос пришел ко мне после того, как я проанализировал файл отладки (уровень 9 активирован):

[...]
[4] Recipe: Invoking rule 7f157a85da30; [file "/etc/apache2/conf.d/modsecurity-activated-rules.conf"] [line "11"] [id "1001"] [rev "2"].
[5] Rule 7f157a85da30: SecRule "REQUEST_METHOD" "@rx ^(GET)$" "phase:1,log,t:none,auditlog,block,id:1001,rev:2,tag:HARDENING"
[4] Transformation completed in 4 usec.
[4] Executing operator "rx" with param "^(GET)$" against REQUEST_METHOD.
[9] Target value: "GET"
[6] Ignoring regex captures since "capture" action is not enabled.
[4] Operator completed in 36 usec.
[2] Warning. Pattern match "^(GET)$" at REQUEST_METHOD. [file "/etc/apache2/conf.d/modsecurity-activated-rules.conf"] [line "11"] [id "1001"] [rev "2"] [tag "HARDENING"]
[4] Rule returned 1.[04/Sep/2012:09:30:27 +0000] [107.21.159.51/sid#7f157a854510][rid#7f1573fcf0a0][/poll/13456492248275482/vote/yes][9] Match -> mode NEXT_RULE.
[4] Recipe: Invoking rule 7f157a85e648; [file "/etc/apache2/conf.d/modsecurity.conf"] [line "24"] [id "200000"].
[5] Rule 7f157a85e648: SecRule "REQUEST_HEADERS:Content-Type" "@rx text/xml" "phase:1,auditlog,id:200000,t:none,t:lowercase,pass,nolog,ctl:requestBodyProcessor=XML"
[4] Rule returned 0.
[9] No match, not chained -> mode NEXT_RULE.
[...]

Как показывают строки отладки, мое правило (id:1001) было выполнено первым перед правилом (id:200000), даже если мое правило читается после правил 20000x.

Я думаю, что идентификаторы не имеют большого значения в порядке выполнения правил, поскольку основной набор правил OWASP ModSecurity https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project имеет идентификатор правила от 950000 до 990000, и нет информации о диапазонах идентификаторов правил для конкретных атак: SQLi, XSS и т. д.

В связи с вышесказанным у меня вопросы:

  1. Определяется ли выполнение правил по идентификационному номеру (наименьшее число выполняется первым)?
  2. Is there any documentation defining which rule ID ranges should be used for custom rules? I'm looking for something like:
    • Mod-security main rules: 200.000 - 200.xxx
    • Основной набор правил OWASP ModSecurity: 950.000 - 999.xxx
    • Пользовательские правила: 1.000.000 - 9.xxx.xxx

Спасибо за ваше время.


person Artur Martins    schedule 04.09.2012    source источник


Ответы (3)


ПРАВИЛЬНЫЙ ответ заключается в том, что ModSecurity выполняет правила в том порядке, в котором они определены в вашей конфигурации Apache.

Единственный порядок, который ModSecurity применяется сам по себе, — это порядок Phase:, который гарантирует, что правила будут выполняться по фазам.

Пример:

  1. Сначала выполните все правила из фазы:1 (в том порядке, в котором они прописаны внутри конфига)
  2. Далее выполняем все правила из фазы:2 (в том порядке, в котором они прописаны внутри конфига)
  3. и т.д...
person gryzli    schedule 12.12.2018

  1. #P1# <цитата> #P2# #P3#
  2. Возможно, бизнес-правило определяет идентификаторы throse.

person Wei    schedule 11.09.2012

ModSecurity поддерживает два типа моделей правил: положительную модель безопасности и отрицательную модель безопасности. Отрицательная модель безопасности поддерживает обнаружение и порядок правил на основе подписи, когда вы хотите пропустить правила с помощью ключевого слова skip, skipafter, чтобы избежать ресурсоемкого исправления шаблона на основе регулярных выражений. Во-вторых, порядок правил, основанный на идентификаторе правила, не является абсолютным. он может быть изменен механизмом правил динамически, т. е. правило с фазой 1 всегда будет выполняться первым. Я рекомендую прочитать руководство ModSecurity, это хорошее начало для новичка. Второй тип правила — это положительная модель безопасности, в которой порядок не имеет значения, так как счетчики поддерживаются для обнаружения аномалии, а правило срабатывает, если превышено пороговое значение.

person Ali Ahmad    schedule 17.12.2012