Фильтр ModSecurity#

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

Опциональные параметры:

  • filter_mds

    Тип параметра: группа параметров и их значения.

    По умолчанию: значения группы задаются пользователем.

    Опциональные параметры:

    • enabled

      Вкл./Откл. фильтрация с помощью mds.

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

      enabled: false
      

      Тип параметра: логическое значение:

      • true;

      • false.

      По умолчанию:

      enabled: true
      
    • debug

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

      Тип параметра: логическое значение:

      • true;

      • false.

      По умолчанию:

      debug: false
      
    • config

      Тип параметра: группа параметров и их значения.

      По умолчанию: значения группы задаются пользователем.

      Опциональные параметры:

      • SecRuleEngine

        Вкл./Откл. mds.

        Тип параметра: логическое значение:

        • true;

        • false.

        По умолчанию:

        SecRuleEngine:true
        
      • SecRequestBodyAccess

        В значении параметра определяется, необходимо ли обрабатывать тело запроса.

        Тип параметра: логическое значение:

        • true;

        • false.

        По умолчанию:

        SecRequestBodyAccess:true
        
      • SecPcreMatchLimit

        В значении параметра указывается настройка PCRE. Здесь определяется предел совпадений регулярного выражения, для защиты от DoS PCRE.

        Тип параметра: целочисленное значение.

        По умолчанию:

        SecPcreMatchLimit:1000000
        
      • SecPcreMatchLimitRecursion

        В значении параметра указывается настройка PCRE. Определяется предел рекурсивных возвратов, для защиты от DoS PCRE.

        Тип параметра: целочисленное значение.

        По умолчанию:

        SecPcreMatchLimitRecursion:1000000
        
      • SecResponseBodyAccess

        В значении параметра определяется, следует ли обрабатывать тело ответа.

        Тип параметра: логическое значение:

        • true;

        • false.

        По умолчанию:

        SecResponseBodyAccess:true
        
      • SecResponseBodyMimeType

        В значении параметра указываются типы MIME, проверяемые mds.

        Тип параметра: строковое значение.

        По умолчанию:

        SecResponseBodyMimeType:
        text/plain text/html
        text/xml
        
      • SecStreamOutBodyInspection

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

        Тип параметра: логическое значение:

        • true;

        • false.

        По умолчанию:

        SecStreamOutBodyInspection:
        false
        
      • SecUploadKeepFiles

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

        Тип параметра: Логическое значение:

        • true;

        • false.

        По умолчанию:

        SecUploadKeepFiles:
        true
        
      • SecAuditEngine

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

        Тип параметра: строковое значение.

        По умолчанию:

        SecUploadKeepFiles:
        true
        
      • SecAuditLogRelevantStatus

        В значении параметра указывается статус транзакций, которые будут помечены, как 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:ABIJDEFHZ
        
      • SecAuditLogType

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

        Тип параметра: строковое значение.

        • Syslog;

        • Concurrent;

        • Serial.

        По умолчанию:

        SecAuditLogType:Syslog
        
      • SecAuditSyslogHost

        В значении параметра определяется хост, в syslog которого будут отправлены аудит логи modsecurity.

        Тип параметра: текстовое значение.

        По умолчанию:

        SecAuditSyslogHost:localhost
        
      • SecAuditSyslogPort

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

        Тип параметра: текстовое значение.

        По умолчанию:

        SecAuditSyslogPort:514
        
      • SecAuditSyslogProtocol

        В значении параметра определяется протокол отправки аудит логов.

        Тип параметра: текстовое значение.

        • tcp;

        • udp.

        По умолчанию:

        SecAuditSyslogProtocol:tcp
        
      • SecAuditSyslogConnectTimeout

        В значении параметра определяется таймаут для соединения с host:port для отправки аудит логов. Определяется в секундах. 0 - не установлено.

        Тип параметра: целочисленное значение.

        По умолчанию:

        SecAuditSyslogConnectTimeout:0
        
      • SecArgumentSeparator

        В значении параметра определяется разделитель аргументов по умолчанию.

        Тип параметра: строковое значение.

        По умолчанию:

        SecArgumentSeparator: &
        
      • SecCookieFormat

        В значении параметра определяется версия cookie.

        Тип параметра: целочисленное значение.

        • 0;

        По умолчанию:

        SecCookieFormat: 0
        
      • SecUnicodeMapFile

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

        Тип параметра: строковое значение.

        По умолчанию:

        SecUnicodeMapFile:
        common/rules/modsecurity
        /unicode.mapping 1251
        
      • SecServerSignature

        Подпись сервера, указываемая в заголовке ответа 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/modsecurity
    
    rules:
      - 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