Я создаю свои собственные правила безопасности для модов, и у меня есть вопрос о том, влияет ли идентификатор правила на порядок выполнения правил.
Моя текущая настройка:
- Я использую мод-безопасность версии: 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 и т. д.
В связи с вышесказанным у меня вопросы:
- Определяется ли выполнение правил по идентификационному номеру (наименьшее число выполняется первым)?
- 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
Спасибо за ваше время.