Назад | Перейти на главную страницу

Сообщается о дублировании журналов аномалий ModSecurity вместо отдельных

Я второй раз настраиваю ModSecurity с помощью набора правил OWASP. Раньше я использовал версию 2.2.5 набора правил, а теперь на другом сервере 2.2.9.

Я пытаюсь настроить обнаружение аномалий, поэтому отключил error.log ведение журнала на предмет отсутствия аномалий.

Кажется, что все работает, однако, когда порог аномалии превышен, я получаю много записей журнала для одной аномалии. Раньше это была всего одна запись в журнале, и несколько кажутся чрезмерными.

Я запускаю простую атаку XSS и error.log показывает следующее:

[Fri Jul 01 09:25:09.234394 2016] [:error] [pid 17771:tid 139978059269888] [client 81.102.141.69] ModSecurity: Warning. Pattern match "(?i)(<script[^>]*>[\\\\s\\\\S]*?<\\\\/script[^>]*>|<script[^>]*>[\\\\s\\\\S]*?<\\\\/script[[\\\\s\\\\S]]*[\\\\s\\\\S]|<script[^>]*>[\\\\s\\\\S]*?<\\\\/script[\\\\s]*[\\\\s]|<script[^>]*>[\\\\s\\\\S]*?<\\\\/script|<script[^>]*>[\\\\s\\\\S]*?)" at ARGS:p. [file "/etc/apache2/modsecurity-crs/activated_rules/modsecurity_crs_41_xss_attacks.conf"] [line "14"] [id "973336"] [rev "1"] [msg "XSS Filter - Category 1: Script Tag Vector"] [data "Matched Data: <script>alert('simple-xss-test')</script> found within ARGS:p: <script>alert('simple-xss-test')</script>"] [severity "CRITICAL"] [ver "OWASP_CRS/2.2.9"] [maturity "1"] [accuracy "8"] [tag "OWASP_CRS/WEB_ATTACK/XSS"] [tag "WASCTC/WASC-8"] [tag "WASCTC/WASC-22"] [tag "OWASP_TOP_10/A2"] [tag "OWASP_AppSensor/IE1"] [tag "PCI/6.5.1"] [hostname "domain.co.uk"] [uri "/robots.txt"] [unique_id "V3Yo5dRurOYAAEVrxjEAAADJ"]
[Fri Jul 01 09:25:09.235629 2016] [:error] [pid 17771:tid 139978059269888] [client 81.102.141.69] ModSecurity: Warning. Pattern match "(.*)" at TX:950109-OWASP_CRS/PROTOCOL_VIOLATION/EVASION-ARGS:p. [file "/etc/apache2/modsecurity-crs/activated_rules/modsecurity_crs_49_inbound_blocking.conf"] [line "26"] [id "981176"] [msg "Inbound Anomaly Score Exceeded (Total Score: 39, SQLi=14, XSS=12): Last Matched Message: XSS Attack Detected"] [data "Last Matched Data: %3Cscript%3Ealert(%27simple-xss-test%27)%3C/script%3E"] [hostname "domain.co.uk"] [uri "/robots.txt"] [unique_id "V3Yo5dRurOYAAEVrxjEAAADJ"]
[Fri Jul 01 09:25:09.235701 2016] [:error] [pid 17771:tid 139978059269888] [client 81.102.141.69] ModSecurity: Warning. Pattern match "(.*)" at TX:960024-OWASP_CRS/WEB_ATTACK/COMMAND_INJECTION-ARGS:p. [file "/etc/apache2/modsecurity-crs/activated_rules/modsecurity_crs_49_inbound_blocking.conf"] [line "26"] [id "981176"] [msg "Inbound Anomaly Score Exceeded (Total Score: 39, SQLi=14, XSS=12): Last Matched Message: XSS Attack Detected"] [data "Last Matched Data: ')</"] [hostname "domain.co.uk"] [uri "/robots.txt"] [unique_id "V3Yo5dRurOYAAEVrxjEAAADJ"]
[Fri Jul 01 09:25:09.235767 2016] [:error] [pid 17771:tid 139978059269888] [client 81.102.141.69] ModSecurity: Warning. Pattern match "(.*)" at TX:950901-OWASP_CRS/WEB_ATTACK/SQL_INJECTION-ARGS:p. [file "/etc/apache2/modsecurity-crs/activated_rules/modsecurity_crs_49_inbound_blocking.conf"] [line "26"] [id "981176"] [msg "Inbound Anomaly Score Exceeded (Total Score: 39, SQLi=14, XSS=12): Last Matched Message: XSS Attack Detected"] [data "Last Matched Data: script>alert"] [hostname "domain.co.uk"] [uri "/robots.txt"] [unique_id "V3Yo5dRurOYAAEVrxjEAAADJ"]
[Fri Jul 01 09:25:09.235834 2016] [:error] [pid 17771:tid 139978059269888] [client 81.102.141.69] ModSecurity: Warning. Pattern match "(.*)" at TX:981173-OWASP_CRS/WEB_ATTACK/RESTRICTED_SQLI_CHARS-ARGS:p. [file "/etc/apache2/modsecurity-crs/activated_rules/modsecurity_crs_49_inbound_blocking.conf"] [line "26"] [id "981176"] [msg "Inbound Anomaly Score Exceeded (Total Score: 39, SQLi=14, XSS=12): Last Matched Message: XSS Attack Detected"] [data "Last Matched Data: <script>alert('"] [hostname "domain.co.uk"] [uri "/robots.txt"] [unique_id "V3Yo5dRurOYAAEVrxjEAAADJ"]
[Fri Jul 01 09:25:09.235900 2016] [:error] [pid 17771:tid 139978059269888] [client 81.102.141.69] ModSecurity: Warning. Pattern match "(.*)" at TX:981243-Detects classic SQL injection probings 2/2-OWASP_CRS/WEB_ATTACK/SQLI-ARGS:p. [file "/etc/apache2/modsecurity-crs/activated_rules/modsecurity_crs_49_inbound_blocking.conf"] [line "26"] [id "981176"] [msg "Inbound Anomaly Score Exceeded (Total Score: 39, SQLi=14, XSS=12): Last Matched Message: XSS Attack Detected"] [data "Last Matched Data: >alert('s"] [hostname "domain.co.uk"] [uri "/robots.txt"] [unique_id "V3Yo5dRurOYAAEVrxjEAAADJ"]
[Fri Jul 01 09:25:09.236009 2016] [:error] [pid 17771:tid 139978059269888] [client 81.102.141.69] ModSecurity: Warning. Pattern match "(.*)" at TX:973336-OWASP_CRS/WEB_ATTACK/XSS-ARGS:p. [file "/etc/apache2/modsecurity-crs/activated_rules/modsecurity_crs_49_inbound_blocking.conf"] [line "26"] [id "981176"] [msg "Inbound Anomaly Score Exceeded (Total Score: 39, SQLi=14, XSS=12): Last Matched Message: XSS Attack Detected"] [data "Last Matched Data: <script>alert('simple-xss-test')</script>"] [hostname "domain.co.uk"] [uri "/robots.txt"] [unique_id "V3Yo5dRurOYAAEVrxjEAAADJ"]
[Fri Jul 01 09:25:09.236075 2016] [:error] [pid 17771:tid 139978059269888] [client 81.102.141.69] ModSecurity: Warning. Pattern match "(.*)" at TX:973307-OWASP_CRS/WEB_ATTACK/XSS-ARGS:p. [file "/etc/apache2/modsecurity-crs/activated_rules/modsecurity_crs_49_inbound_blocking.conf"] [line "26"] [id "981176"] [msg "Inbound Anomaly Score Exceeded (Total Score: 39, SQLi=14, XSS=12): Last Matched Message: XSS Attack Detected"] [data "Last Matched Data: alert("] [hostname "domain.co.uk"] [uri "/robots.txt"] [unique_id "V3Yo5dRurOYAAEVrxjEAAADJ"]
[Fri Jul 01 09:25:09.236367 2016] [:error] [pid 17771:tid 139978059269888] [client 81.102.141.69] ModSecurity: Warning. Operator GE matched 15 at TX:inbound_anomaly_score. [file "/etc/apache2/modsecurity-crs/activated_rules/modsecurity_crs_60_correlation.conf"] [line "37"] [id "981204"] [msg "Inbound Anomaly Score Exceeded (Total Inbound Score: 39, SQLi=14, XSS=12): XSS Attack Detected"] [hostname "domain.co.uk"] [uri "/robots.txt"] [unique_id "V3Yo5dRurOYAAEVrxjEAAADJ"]

Кажется, что происходит то, что правило № 981176 (которое, как я понимаю, выполняет блокировку) регистрирует каждое совпадение против атаки, а не просто создает одну запись в журнале для аномалии. Как видите, каждая строка содержит одинаковые unique_id

Я сравнил старый набор правил 2.2.5 с 2.29 и не вижу разницы, которая может вызвать это.

В идеале я хотел бы получать одну единственную запись в журнале, когда аномалия превышает пороговое значение, чтобы я мог исследовать modsec_audit.log. Насколько я понимаю, он должен так себя вести.

Есть идеи, как уменьшить это до одной записи в журнале, как раньше?

Спасибо

Это должно быть установлено путем изменения SecDefaultAction, определенного в файле modsecurity_crs_10_setup.conf. Значение по умолчанию указано ниже (кроме изменения с deny к pass для оценки аномалий) и будет записывать все как в журнал ошибок, так и в журнал аудита:

SecDefaultAction "phase:1,pass,log"
SecDefaultAction "phase:2,pass,log"

Чтобы просто зарегистрировать это в журнале аудита, используйте следующее:

SecDefaultAction "phase:1,pass,nolog,auditlog"
SecDefaultAction "phase:2,pass,nolog,auditlog"

Это то, что установлено?

Вы можете быть немного сбиты с толку относительно того, как это прекратит регистрацию основных правил, но не сводного правила (где проверяется оценка аномалии). Ключ в том, что обычные правила (например, 960024) не определяют ведение журнала, а просто блокируют на основе значений по умолчанию, поэтому зависят от этих значений по умолчанию:

"phase:2,capture,t:none,t:urlDecodeUni,block,id:'960024'...etc.

В то время как правила, которые проверяют оценки аномалий (например, 981176), явно "регистрируют" и "отклоняют", поэтому значения по умолчанию не требуются, чтобы указать ему это сделать:

"chain,phase:2,id:'981176',t:none,deny,log

Вот почему изменение значения по умолчанию означает, что основные правила не регистрируются в журнале ошибок, а сводные правила аномалий регистрируются.

Таким образом, это должно устранить первое предупреждение, которое вы неправильно получаете для правила 973336, поскольку оно не должно было регистрироваться.

Однако я не понимаю, почему вы получаете несколько предупреждений для правила 981176 - по одному для каждого правила. Мне это кажется неправильным, так как он должен просто регистрироваться один раз для последнего предупреждения.

Однако до версии 2.9.1 ModSecurity использовала собственное ведение журнала ошибок, а не стандартное ведение журнала Apache. так что, возможно, стоит попробовать это снова после обновления ModSecurity до 2.9.1. Смотрите эту ошибку для более подробной информации: https://github.com/SpiderLabs/ModSecurity/pull/840

В качестве альтернативы, если это не сработает, попробуйте написать по электронной почте owasp-modsecurity-core-rule-set@lists.owasp.org. и спросить там, поскольку они могут лучше понять, как должно работать журналирование оценки аномалий (я сам не использую его, если честно). Видеть https://lists.owasp.org/mailman/listinfo/owasp-modsecurity-core-rule-set для получения более подробной информации об этом списке рассылки.