Фильтр 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.
По умолчанию:
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/xmlSecStreamOutBodyInspection
Вкл./Откл. проверка потока данных исходящего запроса в перераспределяемом буфере. По соображениям безопасности поток, все еще, буферизируется.
Тип параметра: логическое значение:
true;
false.
По умолчанию:
SecStreamOutBodyInspection: falseSecUploadKeepFiles
Вкл./Откл. хранение файлов, при передаче которых произошла блокировка.
Тип параметра: Логическое значение:
true;
false.
По умолчанию:
SecUploadKeepFiles: trueSecAuditEngine
Вкл./Откл. аудит логов.
Тип параметра: строковое значение.
По умолчанию:
SecUploadKeepFiles: trueSecAuditLogRelevantStatus
В значении параметра указывается статус транзакций, которые будут помечены, как 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: &SecCookieFormat
В значении параметра определяется версия cookie.
Тип параметра: целочисленное значение.
0;
По умолчанию:
SecCookieFormat: 0SecUnicodeMapFile
В значении параметра указывается путь к файлу, используемому для трансформации urlDecodeUni, и кодировка.
Тип параметра: строковое значение.
По умолчанию:
SecUnicodeMapFile: common/rules/modsecurity /unicode.mapping 1251SecServerSignature
Подпись сервера, указываемая в заголовке ответа Server.
Тип параметра: строковое значение.
По умолчанию: значение задается пользователем.
(2.2) SecUseTransformCache
Вкл./Откл. возможности кэширования в mds трансформаций.
Тип параметра: логическое значение:
true;
false.
По умолчанию:
SecUseTransformCache:false(2.3) SecRequestTimeout
Таймаут обработки тела запроса в секундах, подробнее - в разделе "Таймауты обработки тела сообщений ModSecurity".
Тип параметра: целочисленное значение.
По умолчанию: значение задается пользователем. По умолчанию таймаут не используется.
(2.3) SecResponseTimeout
Таймаут обработки тела ответа в секундах, подробнее - в разделе "Таймауты обработки тела сообщений ModSecurity".
Тип параметра: целочисленное значение.
По умолчанию: значение задается пользователем. По умолчанию таймаут не используется.
(2.3) SecPassSlowRequest
Если true, то запрос, по которому сработал таймаут обработки, не блокируется, а пропускается далее.
Не рекомендуется значение true.
Тип параметра: логическое значение:
true;
false.
По умолчанию:
SecPassSlowRequest: false(2.3) SecPassSlowResponse
Если true, то ответ, по которому сработал таймаут обработки, не блокируется, а пропускается далее.
Не рекомендуется значение true.
Тип параметра: логическое значение:
true;
false.
По умолчанию:
SecPassSlowResponse: false(2.3) SecLogFullBodyOnTimeout
По умолчанию в переменные 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.
По умолчанию: значения последовательности задаются пользователем.
custom_rules
В значении параметра указывается последовательность пользовательских правил. В отличие от директивы rules, которая подключает готовые наборы системных правил, директива custom_rules позволяет подключать пользовательские правила, которые должны быть расположены вместе с остальными custom'ными ресурсами:
/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
SecServerSignature: mds_server
rules:
- base
- owasp-crs
- comodo
custom_rules:
- ufs_rules/rules.conf