ICAPFileChecker#

Действие ICAPFileChecker предназначено для проверки объекта на содержание вирусов по ICAP протоколу.

Для включения режима ByPass необходимо указать таймаут на всю транзакцию (параметр icap_transaction_timeout), а также поведение при его достижении (блокировать/пропускать) (параметр icap_unavailable_action).

Важно!

Включение режима ByPass может привести к потенциальным уязвимостям и снижению уровня кибербезопасности системы и требует подтверждения со стороны эксперта кибербезопасности. В случае срабатывания режима рекомендуется реализовать антивирусную проверку на уровне системы-получателя файла.

Параметры:

Название

Тип параметра

Описание

icap_url

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

Обязательное значение. Адрес ICAP сервера. http://host[:port]/path.

icap_mode

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

Режим обращения к ICAP сервису, обязательный параметр. reqmod - request modification mode; respmod - response modification mode.

icap_default_preview_size

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

Данное значение будет использовано в случае, если сервер не возвращает заголовок Preview в ответ на Options запрос. Не имеет значения по умолчанию.

silent

true/false

Определяется режим обработки. При значении true ошибки и положительный результат поиска вирусов логируются, но сообщения не блокируются; при значении false сообщения блокируются. По умолчанию false

Параметры запроса к ICAP сервису

http_initial_line

Текстовое значение. Значение по умолчанию: http://example.sowa.com/$request_id

Параметр, содержащий initial строку инкапсулированного HTTP запроса/ответа для обращения на AVPO. Возможно использование nginx переменных

icap_custom_headers

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

Определяется набор ICAP заголовков для запроса к ICAP сервису.

icap_custom_http_headers

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

Определяется набор http заголовков для запроса к ICAP сервису.

Параметры обработки ответа от ICAP сервера
В случае, если параметры данной секции не заполнены, при получении 200 или 204 icap статуса, запрос пропускается далее, в ином случае - блокируется

icap_check_status_header_pattern

Регулярное выражение

Определяет ICAP Status, для которых будет проверяться значение icap_status_header. По умолчанию - ^200$.
Используется в случае:
icap_status_header != None

icap_status_header

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

Определяется наименование заголовка ответа, в котором передается статус проверки сообщения. Проверяется в случае, если Icap Status соответствует icap_check_status_header_pattern. При использовании обязательно задать icap_bad_statuses или icap_bad_statuses_pattern. Для проверки HTTP статуса ответа используйте значение HttpStatus, для проверки HTTP заголовка используйте значение Http<имя заголовка>

icap_bad_statuses

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

Определяется массив с вариантами ответа в заголовке icap_status_header, при получении одного из которых необходимо блокировать содержимое. Используется в случае:
icap_status_header !==None
и
icap_bad_statuses_pattern == None

icap_bad_statuses_pattern

Регулярное выражение

Определяется шаблон ответа в заголовке icap_status_header, при при совпадении с которым необходимо блокировать содержимое. Используется в случае: icap_status_header !==None
и
icap_bad_statuses == None.

icap_required_response_headers

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

Определяется массив значений, если необходимо с помощью заголовков ответа проверить корректность ответа ICAP сервисом (используется в основном для отладки интеграции)

Параметры тайм-аутов

icap_connect_timeout

Числовое значение с суффиксом: ms - миллисекунды; s - секунды; m - минуты.

Максимальное время ожидания установки соединения с ICAP сервисом. По умолчанию - 10 с

icap_read_timeout

Числовое значение с суффиксом: ms - миллисекунды; s - секунды; m - минуты.

Максимальное время ожидания на операции чтения ответа от ICAP сервиса. По умолчанию - 10 с

icap_write_timeout

Числовое значение с суффиксом: ms - миллисекунды; s - секунды; m - минуты.

Максимальное время ожидания операции записи в канал установленный с ICAP сервисом. По умолчанию - 10 с

icap_transaction_timeout

Числовое значение с суффиксом: ms - миллисекунды; s - секунды; m - минуты.

Определяется таймаут транзакции для включения режима ByPass. По умолчанию - 10 с

icap_unavailable_action

Текстовое значение. Значение по умолчанию: block.

Определяет действие для запроса/ответа при возникновении ошибок соединения или достижения таймаутов. Возможные значения: pass/block

Параметры буферизации

body_temp_path

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

Определяет путь к временным файлам.

temp_buffer_size

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

Определяет размер буфера временного файла.

max_none_buffered_size

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

Определяет максимальный размер небуферизуемого контента.

Заполняемые переменные

По результатам своего выполнения, действие IcapFileChecker может заполнять следующие переменные:

Название

Описание

clj_validation_error_code

Код ошибки. Возможные значения: 0 - проверка прошла успешно; 200 - Сообщение не прошло проверку (DENY); 201 - Icap сервис не доступен или произошла ошибка при взаимодействии с ним (ERROR); 6 - внутренняя ошибка работы экшена (ERROR).

clj_validation_error_description

Расшифровка кода ошибки.

clj_validation_error_description_ext

Подробное описание ошибки.

clj_validation_icap_status

Значение заголовка ответа, указанного в icap_status_header.

clj_validation_icap_response_headers

Заголовки ответа от ICAP сервиса.

clj_icap_file_sent

Переменная заполняется значением true, если проверяемый объект был передан полностью на ICAP сервер.

Пример использования IcapFileChecker с включенным режимом Bypass (использование данного режима не рекомендуется) и сохранением файла на примонтированный ФИР при недоступности антивируса:

- action: ICAPFileChecker
  params:
    icap_url: http://X.X.X.X:1234/
    icap_mode: RESPMOD
    icap_write_timeout: 10s
    icap_read_timeout: 10s
    icap_connect_timeout: 10s
    icap_unavailable_action: pass # включен режим bypass - при недоступности антивируса запрос пропускается дальше
    icap_transaction_timeout: 10s
  actions:
    - action: MessageToFile
      params:
        path: /fir/ # path примонтированного хранилища для асинхронной проверки icap сервером
        prefix: test- # префикс создаваемого файла
        ignore_errors: true # при ошибках сохранения на ФИР запрос пропускается дальше. Конечная система может узнать о фактическом статусе проверки, проставив необходимые переменные, заполняемые действиями в заголовки 
      conditions: # сохранять на ФИР необходимо только в том случае, когда файл не был передан полностью на icap сервер
        - var: $clj_icap_file_sent
          operator: '!~'
          val: 'true'
message: $clj_request_body

Пример конфигурационного файла для интеграции с Kaspersky SE приведен ниже:

request_chains:
  - actions:
    - action: ICAPFileChecker
      params:
        icap_url: http://localhost:1344/resp
        icap_mode: RESPMOD
        # Касперский не присылает размер preview, поэтому устанавливаем самостоятельно
        icap_default_preview_size: 1024
        icap_write_timeout: 300s
        icap_read_timeout: 300s
        icap_connect_timeout: 300s
        icap_custom_headers:
          - 'X-Client-IP: $original_server_addr'
          - 'Allow: 204'
        # При 200 icap статусе нужно смотреть http статус вложенного ответа для того, чтобы понять, обнаружен ли вирус
        icap_check_status_header_pattern: "200"
        icap_status_header: HttpStatusCode
        icap_bad_statuses_pattern: "^[3-9]\\d\\d$"
    message: $clj_request_body