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 сервера |
||
icap_check_status_header_pattern |
Регулярное выражение |
Определяет ICAP Status, для которых будет проверяться значение icap_status_header. По умолчанию - ^200$. |
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_bad_statuses_pattern |
Регулярное выражение |
Определяется шаблон ответа в заголовке icap_status_header, при при совпадении с которым необходимо блокировать содержимое. Используется в случае: icap_status_header !==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