Фильтр ModSecurity#

Фильтр ModSecurity позволяет проверить исходящий и входящий трафик на наличие угроз (например, sql-injection), содержащихся в методе, заголовках, теле и др. Использование mds в SOWA описано в отдельном разделе. Фильтр ModSecurity представляет собой группу параметров.

filter_mds - параметры#

Название

Обязательность

Описание

Возможные значения

Значение по умолчанию

enabled

Опциональный

Вкл./Откл. фильтрация с помощью mds. Для параметров последовательностей allowed_queries и transformations, фильтрация mds будет отключена в случае enabled: false

true, false

true

debug

Опциональный

Уровень логирования записей в журналы событий

true, false

false

config

Опциональный

Настройки ModSecurity

Параметры, описанные в разделе «filter_mds - config»

—

rules

Опциональный

Последовательность стандартных групп правил, поставляемых вместе с дистрибутивом. После конфигурирования профиля, если в профиле используются правила mds, расположение правил будет следующим: /sowa/*profile_name*/common/rules/modsecurity

Последовательность строковых значений: base, owasp-crs, comodo, sowa-mq, sowa-http, sowa-ws, sowa-ufs, sowa-kafka, sowa-http-reversed

—

custom_rules

Опциональный

Последовательность пользовательских правил. В отличие от директивы rules, которая подключает готовые наборы системных правил, директива custom_rules позволяет подключать пользовательские правила, которые могут быть расположены вместе с остальными ресурсами профиля /sowa/profile_storage/custom/*profile_name* или, если требуется переиспользовать правила в нескольких профилях, в общей директории для правил /sowa/profile_storage/common/rules/

Последовательность строковых значений

—

Примечание

При подключении по абсолютному пути нужно помнить про наличие прав на чтение для пользовательских правил.

filter_mds - config#

Название

Обязательность

Описание

Возможные значения

Значение по умолчанию

SecRuleEngine

Опциональный

Вкл./Откл. mds

true, false, DetectionOnly — правила обрабатываются, но действия не предпринимаются

true

SecRequestBodyAccess

Опциональный

Необходимо ли обрабатывать тело запроса

true, false

true

SecPcreMatchLimit

Опциональный

Настройка PCRE. Предел совпадений регулярного выражения, для защиты от DoS PCRE

Целочисленное значение

1000000

SecPcreMatchLimitRecursion

Опциональный

Настройка PCRE. Предел рекурсивных возвратов, для защиты от DoS PCRE

Целочисленное значение

1000000

SecResponseBodyAccess

Опциональный

Следует ли обрабатывать тело ответа

true, false

true

SecResponseBodyMimeType

Опциональный

Типы MIME, проверяемые mds

Строковое значение

text/plain text/html text/xml application/json application/xml

SecStreamOutBodyInspection (deprecated)

Опциональный

Не рекомендовано к использованию. Параметр будет удален в ближайших релизах. Вкл./Откл. проверка потока данных исходящего запроса в перераспределяемом буфере. По соображениям безопасности поток все еще буферизируется

true, false

false

SecUploadKeepFiles

Опциональный

Вкл./Откл. хранение файлов, при передаче которых произошла блокировка

true, false

true

SecAuditEngine

Опциональный

Вкл./Откл. аудит логов

On — все транзакции логируются; Off — транзакции не логируются; RelevantOnly — логируются только те транзакции, которые вызывают предупреждение или ошибку, или имеют актуальный код-статус (определенный директивой SecAuditLogRelevantStatus)

RelevantOnly

SecAuditLogRelevantStatus

Опциональный

Статус транзакций, которые будут помечены как relevant

Строковое значение

^(?:5|4(?!04))

SecAuditLogParts

Опциональный

Какие части транзакции будут записаны в аудит лог. Не рекомендуется менять настройки по умолчанию, если нет уверенности в результате. Элементы запроса: B — заголовки запроса; C — тело запроса; D — зарезервировано для промежуточных заголовков ответа; I — аналогично C, кроме multipart/form-data; J — информация о загруженных файлах multipart/form-data. Элементы ответа: E — тело промежуточного ответа; F — заголовки окончательного ответа; G — зарезервировано для фактического тела ответа; H — информация о разрешении/блокировке запроса. Специальные элементы: A — начало регистрации событий; K — список всех правил, соответствующих событиям (с v2.5.0); Z — конец регистрации событий

Строковое значение

ABIJDEFHZ

SecAuditLogType

Опциональный

Механизм, используемый при записи аудит логов

Syslog, Concurrent, Serial

Syslog

SecAuditSyslogHost

Опциональный

Хост, в syslog которого будут отправлены аудит логи modsecurity

Текстовое значение

localhost

SecAuditSyslogPort

Опциональный

Порт, используемый для отправки в syslog

Текстовое значение

514

SecAuditSyslogProtocol

Опциональный

Протокол отправки аудит логов

tcp, udp

tcp

SecAuditSyslogConnectTimeout

Опциональный

Таймаут для соединения с host:port для отправки аудит логов (в секундах). 0 — не установлено

Целочисленное значение

0

SecArgumentSeparator

Опциональный

Разделитель аргументов по умолчанию

Строковое значение

&

SecCookieFormat (deprecated)

Опциональный

Версия cookie

0, 1

0

SecUnicodeMapFile

Опциональный

Путь к файлу, используемому для трансформации urlDecodeUni, и кодировка

Строковое значение

common/rules/modsecurity/unicode.mapping 1251

SecUseTransformCache

Опциональный

Вкл./Откл. возможности кэширования в mds трансформаций

true, false

false

SecRequestTimeout

Опциональный

Таймаут обработки тела запроса в секундах (подробнее в разделе «Таймауты обработки тела сообщений ModSecurity»)

Целочисленное значение

не используется

SecResponseTimeout

Опциональный

Таймаут обработки тела ответа в секундах (подробнее в разделе «Таймауты обработки тела сообщений ModSecurity»)

Целочисленное значение

не используется

SecPassSlowRequest

Опциональный

Если true, то запрос, по которому сработал таймаут обработки, не блокируется, а пропускается далее. Не рекомендуется значение true

true, false

false

SecPassSlowResponse

Опциональный

Если true, то ответ, по которому сработал таймаут обработки, не блокируется, а пропускается далее. Не рекомендуется значение true

true, false

false

SecLogFullBodyOnTimeout

Опциональный

По умолчанию в переменные request|response_timeout_error_msg, доступные для использования в логе, записываются только первые 200 символов тела сообщения. При включении данной директивы в переменные будет записываться полное тело сообщения

true, false

false

Пример использования фильтра mds:

filters:
  filter_mds:
    enabled: true
    debug: true
    config:
      SecRuleEngine: true
      SecRequestBodyAccess: true
      SecPcreMatchLimit: 1000000
      SecPcreMatchLimitRecursion: 1000000
      SecResponseBodyAccess: true
      SecResponseBodyMimeType: text/plain text/html text/xml
      SecStreamOutBodyInspection: true
      SecUploadKeepFiles: RelevantOnly
      SecAuditEngine: RelevantOnly
      SecAuditLogRelevantStatus: "^(?:5|4(?!04))"
      SecAuditLogParts: ABIJDEFHZ
      SecAuditLogType: Concurrent
      SecArgumentSeparator: "&"
      SecCookieFormat: 0
      SecUnicodeMapFile: common/rules/modsecurity/unicode.mapping 20127
    rules:
      - base
      - owasp-crs
      - comodo
    custom_rules:
      - ufs_rules/rules.conf