Перейти к содержанию

Глава 35. ICAP и антивирусная проверка

Действия ICAP (Internet Content Adaptation Protocol, RFC 3507) позволяют передавать трафик на внешние серверы для антивирусной проверки, DLP (Data Loss Prevention) и других видов анализа контента.

Аналоги BlueCoat: request.icap_service(), response.icap_service() .

35.1. virus_check(yes/no) — антивирусная проверка

Статус: планируется. Использование в CPL файле приведёт к ошибке парсинга.

Включает антивирусное сканирование через настроенный ICAP-бэкенд (RESPMOD).

Синтаксис:

virus_check(yes|no)

where: yes — включить антивирусную проверку; no — отключить.

Тип: Нетерминальное.

Слои и транзакции: Proxy.


35.2. request.icap_service(service) — ICAP REQMOD

Направляет HTTP-запрос на именованный ICAP-сервис для модификации запроса (REQMOD). Используется для DLP, проверки загрузок, модификации заголовков.

Синтаксис:

request.icap_service(<service_name>)

where: service_name — имя ICAP-сервиса, определённое в конфигурации.

Тип: Нетерминальное.

Слои и транзакции: Proxy. Применяется к HTTP-запросам.

Пример:

<Proxy>
    http.method=POST request.icap_service(dlp_scanner)

См. также: response.icap_service


35.3. response.icap_service(service) — ICAP RESPMOD

Направляет HTTP-ответ на именованный ICAP-сервис для модификации ответа (RESPMOD). Используется для антивирусного сканирования, content disarm, watermarking.

Синтаксис:

response.icap_service(<service_name>)

where: service_name — имя ICAP-сервиса, определённое в конфигурации.

Тип: Нетерминальное.

Слои и транзакции: Proxy. Применяется к HTTP-ответам.

Пример:

<Proxy>
    url.extension=(exe, dll, zip, rar) response.icap_service(av_scanner)

См. также: request.icap_service


35.4. icap_service(service) — ICAP обе фазы

Направляет и запрос, и ответ на именованный ICAP-сервис (REQMOD + RESPMOD).

Синтаксис:

icap_service(<service_name>)

where: service_name — имя ICAP-сервиса.

Тип: Нетерминальное.

Слои и транзакции: Proxy.


35.5. icap_reqmod(service) / icap_respmod(service) — ICAP модификация

Альтернативный синтаксис для направления на ICAP-сервис. Могут использоваться без аргумента (используется ICAP-сервис по умолчанию).

Синтаксис:

icap_reqmod[(<service_name>)]
icap_respmod[(<service_name>)]

where: service_name — имя ICAP-сервиса (опционально).

Тип: Нетерминальное (оба).

Слои и транзакции: Proxy.

Пример:

<Proxy>
    icap_reqmod(dlp_service)
    icap_respmod(av_service)
    icap_reqmod                            ; сервис по умолчанию

35.6. icap_bypass — пропустить ICAP

Пропускает ICAP-обработку для текущего запроса.

Синтаксис:

icap_bypass

Тип: Нетерминальное.

Слои и транзакции: Proxy.

Пример:

<Proxy>
    url.host.is_private=yes icap_bypass

35.7. icap_fail_mode(open/closed) — поведение при ошибке ICAP

Статус: в процессе реализации. Принимается, но пока не применяется — выбор режима по правилу не учитывается (поведение по умолчанию задаётся конфигурацией ICAP).

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

Синтаксис:

icap_fail_mode(open|closed)

где: open — при ошибке ICAP пропустить трафик (пропуск по умолчанию, небезопасный режим); closed — при ошибке ICAP заблокировать трафик (безопасный отказ, блокировка).

Тип: Нетерминальное.

Слои и транзакции: Proxy.

Пример:

<Proxy>
    icap_fail_mode(open)                   ; при недоступности ICAP — пропустить

Комплексный пример:

<Proxy>
    ; Антивирусная проверка загрузок
    url.extension=(exe, dll, zip, rar) response.icap_service(av_scanner)

    ; DLP для исходящих данных
    http.method=POST request.icap_service(dlp_scanner)

    ; Не сканировать внутренний трафик
    url.host.is_private=yes icap_bypass

    ; При недоступности ICAP — пропустить (не блокировать)
    icap_fail_mode(open)

    allow