Подтвердить что ты не робот

Ложные срабатывания mod_security

Я получаю много ложных срабатываний [??] после настройки mod_security. Я запускаю его только в обнаружении, так что никаких проблем пока нет, но эти фильтры начнут блокировать запросы, когда мне это нужно, чтобы начать жить.

Боюсь, что я не понимаю на 100%, что такое значение этих фильтров, я получаю 100 из них почти в каждом домене, и все запросы выглядят законными.

Request Missing a User Agent Header
Request Missing an Accept Header

Что лучше всего делать здесь? Должен ли я отключить эти фильтры? Могу ли я установить уровень серьезности ниже, чтобы запросы не блокировались?

Вот полная запись

[22/Nov/2011:21:32:37 --0500] u6t6IX8AAAEAAHSiwYMAAAAG 72.47.232.216 38543 72.47.232.216 80
--5fcb9215-B--
GET /Assets/XHTML/mainMenu.html HTTP/1.0
Host: www.domain.com
Content-type: text/html
Cookie: pdgcomm-babble=413300:451807c5d49b8f61024afdd94e57bdc3; __utma=100306584.1343043347.1321115981.1321478968.1321851203.4; __utmz=100306584.1321115981.1.1.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=XXXXXXXX%20clip%20ons

--5fcb9215-F--
HTTP/1.1 200 OK
Last-Modified: Wed, 23 Nov 2011 02:01:02 GMT
ETag: "21e2a7a-816d"
Accept-Ranges: bytes
Content-Length: 33133
Vary: Accept-Encoding
Connection: close
Content-Type: text/html

--5fcb9215-H--
Message: Operator EQ matched 0 at REQUEST_HEADERS. [file "/etc/httpd/modsecurity_crs/base_rules/modsecurity_crs_21_protocol_anomalies.conf"] [line "47"] [id "960015"] [rev "2.2.1"] [msg "Request Missing an Accept Header"] [severity "CRITICAL"] [tag "PROTOCOL_VIOLATION/MISSING_HEADER_ACCEPT"] [tag "WASCTC/WASC-21"] [tag "OWASP_TOP_10/A7"] [tag "PCI/6.5.10"]
Message: Operator EQ matched 0 at REQUEST_HEADERS. [file "/etc/httpd/modsecurity_crs/base_rules/modsecurity_crs_21_protocol_anomalies.conf"] [line "66"] [id "960009"] [rev "2.2.1"] [msg "Request Missing a User Agent Header"] [severity "NOTICE"] [tag "PROTOCOL_VIOLATION/MISSING_HEADER_UA"] [tag "WASCTC/WASC-21"] [tag "OWASP_TOP_10/A7"] [tag "PCI/6.5.10"]
Message: Warning. Operator LT matched 5 at TX:inbound_anomaly_score. [file "/etc/httpd/modsecurity_crs/base_rules/modsecurity_crs_60_correlation.conf"] [line "33"] [id "981203"] [msg "Inbound Anomaly Score (Total Inbound Score: 4, SQLi=5, XSS=): Request Missing a User Agent Header"]
Stopwatch: 1322015557122593 24656 (- - -)
Stopwatch2: 1322015557122593 24656; combined=23703, p1=214, p2=23251, p3=2, p4=67, p5=168, sr=88, sw=1, l=0, gc=0
Producer: ModSecurity for Apache/2.6.1 (http://www.modsecurity.org/); core ruleset/2.2.1.
Server: Apache/2.2.3 (CentOS)
4b9b3361

Ответ 1

Если вы посмотрите в разделе H записи журнала аудита, которую вы указали на линии Продюсер, вы увидите, что используете OWASP ModSecurity Core Rule Set (CRS) v2.2.1. В этом случае я предлагаю вам просмотреть информацию о документации на странице проекта -

https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project#tab=Documentation

В частности, вы должны просмотреть эти два сообщения в блоге, которые я сделал -

Сообщение в блоге # 1 полезно, чтобы вы поняли, какой "режим работы" вы используете для CRS. Посмотрев на свой журнал аудита, кажется, что вы работаете в режиме подсчета аномалий. Вот где правила делают обнаружение, но решение о блокировке выполняется отдельно, проверяя общую оценку аномалии в файле modsecurity_crs_49_inbound_blocking.conf.

Сообщение в блоге # 2 полезно, чтобы вы могли точно определить, как вы хотите обрабатывать эти два правила. Если вы считаете, что это не важно для вас, то я бы предложил вам использовать директиву SecRuleRemoveById для отключения этих правил из вашего собственного файла modsecurity_crs_60_exceptions.conf. Теперь, когда он стоит, эти два предупреждения генерируют только входящий аномальный балл 4 - который ниже порогового значения по умолчанию 5, установленного в файле modsecurity_crs_10_config.conf, поэтому он не блокируется.

Посмотрев пример вашего журнала аудита, в то время как этот запрос генерировал предупреждения, транзакция не была заблокирована. Если бы это было так, данные сообщения в разделе H были бы указаны "Доступ запрещен...".

Что касается этих правил, они предназначены для обозначения запросов, которые не генерируются из стандартных веб-браузеров (IE, Chrome, Firefox и т.д.), поскольку все эти браузеры отправят как User-Agent, так и Accept запрашивает заголовки по спецификации HTTP RFC.

Один последний комментарий - я бы предположил, что вы используете официальный почтовый список OWASP ModSecurity CRS для этих типов вопросов - https://lists.owasp.org/mailman/listinfo/owasp-modsecurity-core-rule-set

Вы также можете искать архивы, которые для ответов.

Cheers, Райан Барнетт Руководитель проекта ModSecurity OWASP ModSecurity CRS Project Lead

Ответ 2

Это не ложные срабатывания. В заголовках ваших запросов отсутствуют заголовки User-Agent и Accept. Обычно они отправляются из сканеров или ручных инструментов.