Фильтр ModSecurity#
Фильтр ModSecurity позволяет проверить исходящий и входящий трафик на наличие угроз (например, sql-injection), содержащихся в методе, заголовках, теле и др. Использование mds в SOWA описано в отдельном разделе. Фильтр ModSecurity представляет собой группу параметров.
Опциональные параметры:
filter_mdsТип параметра: группа параметров и их значения.
По умолчанию: значения группы задаются пользователем.
Опциональные параметры:
enabledВкл./Откл. фильтрация с помощью mds.
Для параметров последовательностей
allowed_queriesиtransformations, фильтрация mds будет отключена в случае:enabled: falseТип параметра: логическое значение:
true;
false.
По умолчанию:
enabled: truedebugВ значении параметра устанавливается уровень логирования записей в журналы событий.
Тип параметра: логическое значение:
true;
false.
По умолчанию:
debug: falseconfigТип параметра: группа параметров и их значения.
По умолчанию: значения группы задаются пользователем.
Опциональные параметры:
SecRuleEngineВкл./Откл. mds.
Тип параметра: строковое значение
true;
false;
DetectionOnly - правила обрабатываются, но действия не предпринимаются.
По умолчанию:
SecRuleEngine:trueSecRequestBodyAccessВ значении параметра определяется, необходимо ли обрабатывать тело запроса.
Тип параметра: логическое значение:
true;
false.
По умолчанию:
SecRequestBodyAccess:trueSecPcreMatchLimitВ значении параметра указывается настройка PCRE. Здесь определяется предел совпадений регулярного выражения, для защиты от DoS PCRE.
Тип параметра: целочисленное значение.
По умолчанию:
SecPcreMatchLimit:1000000SecPcreMatchLimitRecursionВ значении параметра указывается настройка PCRE. Определяется предел рекурсивных возвратов, для защиты от DoS PCRE.
Тип параметра: целочисленное значение.
По умолчанию:
SecPcreMatchLimitRecursion:1000000SecResponseBodyAccessВ значении параметра определяется, следует ли обрабатывать тело ответа.
Тип параметра: логическое значение:
true;
false.
По умолчанию:
SecResponseBodyAccess:trueSecResponseBodyMimeTypeВ значении параметра указываются типы MIME, проверяемые mds.
Тип параметра: строковое значение.
По умолчанию:
SecResponseBodyMimeType: text/plain text/html text/xml application/json application/xml(deprecated)
SecStreamOutBodyInspectionНе рекомендовано к использованию. Параметр будет удален в ближайших релизах.
Вкл./Откл. проверка потока данных исходящего запроса в перераспределяемом буфере. По соображениям безопасности поток все еще буферизируется.
Тип параметра: логическое значение:
true;
false.
По умолчанию:
SecStreamOutBodyInspection: falseSecUploadKeepFilesВкл./Откл. хранение файлов, при передаче которых произошла блокировка.
Тип параметра: Логическое значение:
true;
false.
По умолчанию:
SecUploadKeepFiles: trueSecAuditEngineВкл./Откл. аудит логов.
Тип параметра: строковое значение.
On - все транзакции логируются;
Off - транзакции не логируются;
RelevantOnly - логируются только те транзакции, которые вызывают предупреждение или ошибку, или имеют актуальный код-статус (определенный директивой SecAuditLogRelevantStatus).
По умолчанию:
SecAuditEngine: RelevantOnlySecAuditLogRelevantStatusВ значении параметра указывается статус транзакций, которые будут помечены, как relevant.
Тип параметра: строковое значение.
По умолчанию:
SecAuditLogRelevantStatus: ^(?:5|4(?!04))SecAuditLogPartsВ значении параметра определяется, какие части транзакции будут записаны в аудит лог. Не рекомендуется менять настройки по умолчанию, если нет уверенности в результате.
Элементы запроса
B: Заголовки запроса. Содержит все заголовки в посланном клиентом запросе.
C: Тело запроса (присутствует только в том случае, если тело запроса существует, и ModSecurity настроен на его перехват. Для этого необходимо, чтобы SecRequestBodyAccess был включен).
D: Зарезервировано для промежуточных заголовков ответа; еще не реализовано.
I: Содержит аналогичную информацию как С (тело запроса), кроме тех случаев, когда используется кодирование multipart/form-data (в случае содержания любых закодированных файлов в запросе типа POST).
J: Содержит информацию о файлах, загруженных с использованием кодирования multipart/form-data.
Элементы ответа
E: Тело промежуточного ответа. Тело промежуточного ответа совпадает с фактическим телом ответа, если только ModSecurity не перехватывает тело промежуточного ответа, и в этом случае фактическое тело ответа будет содержать сообщение об ошибке (либо сообщение об ошибке Apache (по умолчанию), либо страницу ErrorDocument). Примечание: информация присутствует только в том случае, если ModSecurity настроен на перехват тел ответов и если механизм аудит лога настроен на его запись.
F: Заголовки окончательного ответа (исключая заголовки Date и Server, которые всегда добавляются Apache на поздней стадии доставки контента).
G: Зарезервировано для фактического тела ответа; еще не реализовано.
H: Содержит информацию о том, был ли запрос разрешен или запрещен, а также с каким кодом состояния HTTP он был запрещен. Также содержит идентификатор сервера.
Специальные элементы
A: Граница, которая показывает начало регистрации событий. Содержит время и дату события, IP-адреса клиента и сервера. Также содержит уникальный идентификатор регистрации события, который облегчает нахождение запроса в файлах системного журнала Apache. Данный параметр обязателен и будет включен, даже если он не определен пользователем.
K: Список всех правил, соответствующих событиям, соотнесенных к правилам. Каждое правило включает любые списки действия по умолчанию. Поддерживается с v2.5.0.
Z: Граница, которая показывает конец регистрации событий. Данный параметр обязателен и будет включен, даже если он не определен пользователем.
Тип параметра: строковое значение.
По умолчанию:
SecAuditLogParts: ABIJDEFHZSecAuditLogTypeВ значении параметра определяется механизм, используемый при записи аудит логов.
Тип параметра: строковое значение.
Syslog;
Concurrent;
Serial.
По умолчанию:
SecAuditLogType: SyslogSecAuditSyslogHostВ значении параметра определяется хост, в syslog которого будут отправлены аудит логи modsecurity.
Тип параметра: текстовое значение.
По умолчанию:
SecAuditSyslogHost:localhostSecAuditSyslogPortВ значении параметра определяется порт, используемый для отправки в syslog.
Тип параметра: текстовое значение.
По умолчанию:
SecAuditSyslogPort:514SecAuditSyslogProtocolВ значении параметра определяется протокол отправки аудит логов.
Тип параметра: текстовое значение.
tcp;
udp.
По умолчанию:
SecAuditSyslogProtocol:tcpSecAuditSyslogConnectTimeoutВ значении параметра определяется таймаут для соединения с host:port для отправки аудит логов. Определяется в секундах. 0 - не установлено.
Тип параметра: целочисленное значение.
По умолчанию:
SecAuditSyslogConnectTimeout:0SecArgumentSeparatorВ значении параметра определяется разделитель аргументов по умолчанию.
Тип параметра: строковое значение.
По умолчанию:
SecArgumentSeparator: &(deprecated)
SecCookieFormatВ значении параметра определяется версия cookie.
Тип параметра: целочисленное значение.
0;
По умолчанию:
SecCookieFormat: 0SecUnicodeMapFileВ значении параметра указывается путь к файлу, используемому для трансформации urlDecodeUni, и кодировка.
Тип параметра: строковое значение.
По умолчанию:
SecUnicodeMapFile: common/rules/modsecurity /unicode.mapping 1251SecUseTransformCacheВкл./Откл. возможности кэширования в mds трансформаций.
Тип параметра: логическое значение:
true;
false.
По умолчанию:
SecUseTransformCache:falseSecRequestTimeoutТаймаут обработки тела запроса в секундах, подробнее - в разделе «Таймауты обработки тела сообщений ModSecurity».
Тип параметра: целочисленное значение.
По умолчанию: значение задается пользователем. По умолчанию таймаут не используется.
SecResponseTimeoutТаймаут обработки тела ответа в секундах, подробнее - в разделе «Таймауты обработки тела сообщений ModSecurity».
Тип параметра: целочисленное значение.
По умолчанию: значение задается пользователем. По умолчанию таймаут не используется.
SecPassSlowRequestЕсли true, то запрос, по которому сработал таймаут обработки, не блокируется, а пропускается далее.
Не рекомендуется значение true.
Тип параметра: логическое значение:
true;
false.
По умолчанию:
SecPassSlowRequest: falseSecPassSlowResponseЕсли true, то ответ, по которому сработал таймаут обработки, не блокируется, а пропускается далее.
Не рекомендуется значение true.
Тип параметра: логическое значение:
true;
false.
По умолчанию:
SecPassSlowResponse: falseSecLogFullBodyOnTimeoutПо умолчанию в переменные request|response_timeout_error_msg, доступные для использования в логе, записывается только первые 200 символов тела сообщения.
При включении данной директивы в переменные будет записываться полное тело сообщения.
Тип параметра: логическое значение:
true;
false.
По умолчанию:
SecLogFullBodyOnTimeout: false
rules
В значении параметра указывается последовательность стандартных групп правил. Группы правил поставляются вместе с дистрибутивом. После конфигурирования профиля, если в профиле используются правила mds, расположение правил будет следующим:
/sowa/*profile_name*/common/rules/modsecurityrules: - base - owasp-crs - comodoТип параметра: последовательность строковых значений:
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*или, если требуется переиспользовать правила в нескольких профилях, в общей директории для правил - в таком случае ожидается указание относительного пути до директории с правилами, содержащей конфигурационный файл rules.conf/sowa/profile_storage/common/rules/./sowa/profile_storage/custom/*profile_name*custom_rules: - user_rule1 - user_rule2Примечание
При подключении по абсолютному пути нужно помнить про наличие прав на чтение для пользовательских правил.
Тип параметра: последовательность строковых значений.
По умолчанию: значения последовательности задаются пользователем.
Пример использования фильтра 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