Интеграция с прокси-сервером Squid

В этом разделе

Настройка параметров Dr.Web ICAPD

Настройка параметров Squid

Дополнительные настройки Squid

Настройка параметров Dr.Web ICAPD

Для интеграции Dr.Web ICAPD с прокси-сервером HTTP Squid нужно проверить и при необходимости изменить значения ряда параметров в секции настроек Dr.Web ICAPD (секция [ICAPD]):

В параметре ListenAddress укажите путь к сетевому сокету (<IP-адрес>:<порт>), который Dr.Web ICAPD будет прослушивать в ожидании подключений от прокси-сервера (по умолчанию используется сокет 127.0.0.1:1344).

В параметрах Block* включите или отключите категории веб-сайтов и типы угроз, которые должен блокировать и наоборот, разрешать Dr.Web ICAPD.

При необходимости укажите пути доменов доступ к которым должен блокироваться при любых условиях, в параметре BlackList. В параметре WhiteList вы можете указать пути к доменам, доступ к которым никогда не должен блокироваться.

Внимание!

Параметр BlackList имеет приоритет над параметром WhiteList. Если один и тот же домен указан в значениях обоих параметров, он будет заблокирован.

Для более детальной настройки доступа к веб-сайтам (в зависимости от условий) отредактируйте правила проверки.

Внимание!

Значения параметров UsePreview, Use204 и AllowEarlyResponse в секции настроек Dr.Web ICAPD, заданные по умолчанию, разрешают использование компонентом соответствующих возможностей протокола ICAP (использование режима ICAP preview, возврат кода 204 не только в режиме ICAP preview и «раннее» начало отправки ответа клиенту, не дожидаясь окончания приема запроса, поступившего от прокси-сервера). Значения этих параметров рекомендуется оставить заданными по умолчанию, изменяя их только в случае возникновения проблем в обработке HTTP-запросов.

После внесения изменений в настройки перезапустите Dr.Web для интернет-шлюзов UNIX, выполнив команду:

# drweb-ctl reload

Также вы можете перезапустить демон управления конфигурацией Dr.Web ConfigD с помощью команды:

# service drweb-configd restart

Настройка параметров Squid

Для обеспечения взаимодействия между Squid и Dr.Web ICAPD требуется указать в конфигурационном файле squid.conf (обычно он находится в каталоге /etc/squid3/) настройки для активации протокола ICAP. Для настройки интеграции с Dr.Web для интернет-шлюзов UNIX ICAP необходимо:

1.Активировать протокол ICAP в настройках Squid.

2.Зарегистрировать Dr.Web ICAPD в качестве службы ICAP для Squid.

3.Активировать режим ICAP preview (опционально).

4.Разрешить передачу данных клиентов (IP-адреса и аутентифицированного на прокси-сервере имени пользователя) для использования в правилах Dr.Web ICAPD (опционально).

5.Активировать поддержку постоянных соединений между Dr.Web ICAPD и Squid (опционально; использование постоянных соединений необязательно, но повышает производительность связки Squid + Dr.Web ICAPD).

Внимание!

Чтобы Squid проверял через ICAP HTTP-запросы (REQMOD) и HTTP-ответы (RESPMOD), требуется добавить две службы ICAP соответствующего типа.

Чтобы Squid использовал Dr.Web ICAPD в качестве службы ICAP, адрес и порт, указанные в icap_service, должны совпадать с адресом и портом, указанными в параметре ListenAddress настроек Dr.Web ICAPD.

Dr.Web ICAPD не будет работать со Squid, если значение icap_preview_size не равно 0.

Значения «IP-адрес клиента» и «Имя пользователя» Squid формирует самостоятельно и передает их Dr.Web ICAPD в ICAP-запросе в заголовках X-Client-Username и X-Client-IP. Значения этих заголовков должны быть закодированы с при помощи методов, используемых Squid. Настройки Squid, которые влияют на способ кодирования этих заголовков (icap_client_username_encode и icap_client_username_header) изменять не следует.

Внимание!

Для интеграции с Dr.Web для интернет-шлюзов UNIX Squid должен быть собран с поддержкой ICAP (т. е. скомпилирован с опцией --enable-icap-client). В противном случае подключение Squid к Dr.Web ICAPD невозможно.

Внимание!

Для работы по протоколу HTTPS Squid должен быть собран с поддержкой SSL-сертификатов (скомпилирован с опциями --with-openssl и --enable-ssl-crtd). В настройках Squid должен обязательно быть активирован SSL Bumping.

Настройки для разных версий Squid могут различаться. В этом разделе приведены три варианта настройки для следующих версий Squid: 3.2 и более поздних, 3.1, и 3.0. Откорректируйте ваш конфигурационный файл в соответствии с примерами.
Если строки из примеров ниже в вашем конфигурационном файле закомментированы, раскомментируйте их. Если строки из примеров отсутствуют в вашем конфигурационном файле, просто добавьте их.

Внимание!

Для настройки взаимодействия между Dr.Web ICAPD и Squid обязательны только параметры из секций #1 и #2. Настройки из секций #3 и #4 являются факультативными.

Для Squid 3.2 и более поздних версий

#1
icap_enable on
 
#2
icap_service i_req reqmod_precache bypass=0 icap://127.0.0.1:1344/reqmod
icap_service i_res respmod_precache bypass=0 icap://127.0.0.1:1344/respmod
 
adaptation_access i_req allow all
adaptation_access i_res allow all
 
#3
icap_preview_enable on
icap_preview_size 0
 
#4 (В версии Squid 3.2 параметры icap_send_client_ip и icap_send_client_username были переименованы)
adaptation_send_client_ip on
adaptation_send_username on
 
#5
icap_persistent_connections on

Для Squid версии 3.1

#1
icap_enable on
 
#2 (В версии Squid 3.1 формат определения сервиса был изменен, а параметр icap_access был переименован)
icap_service i_req reqmod_precache bypass=0 icap://127.0.0.1:1344/reqmod
icap_service i_res respmod_precache bypass=0 icap://127.0.0.1:1344/respmod
 
adaptation_access i_req allow all
adaptation_access i_res allow all
 
#3
icap_preview_enable on
icap_preview_size 0
 
#4
icap_send_client_ip on
icap_send_client_username on
 
#5
icap_persistent_connections on

Для Squid версии 3.0

#1
icap_enable on
 
#2
icap_service i_req reqmod_precache 0 icap://127.0.0.1:1344/reqmod
icap_service i_res respmod_precache 0 icap://127.0.0.1:1344/respmod
 
icap_class icapd_class_req i_req
icap_class icapd_class_resp i_res
 
icap_access icapd_class_req allow all
icap_access icapd_class_resp allow all
 
#3
icap_preview_enable on
icap_preview_size 0
 
#4
icap_send_client_ip on
icap_send_client_username on
 
#5
icap_persistent_connections on

После редактирования конфигурационного файла и сохранения изменений нужно перезапустить Squid.

Дополнительные настройки Squid: ограничение размера данных

При необходимости вы можете ограничить размер данных, которые Squid будет передавать на проверку по протоколу ICAP. Для этого в конфигурационном файле укажите в значении заголовка Content-Length конкретную цифру или регулярное выражение, например:

acl <name> rep_header Content-Length ^[0-9]{7,}$

В этом примере условие <name> будет выполняться, если значение заголовка Content-Length превышает 999999.

Условие из примера выше можно использовать для разрешения (allow) или запрета (deny) проверки ответа от сервера по протоколу ICAP (в параметрах подключения Squid к внешнему ICAP-серверу вместо all потребуется заменить на имя условия <name>).
Ниже приводится пример настроек для запрета проверки ответов, для которых условие <name> выполняется:

#версия Squid 3.1 и новее
adaptation_access i_res deny <name>
 
#версия Squid 3.0 и новее
icap_access icapd_class_resp deny <name>

Внимание!

Заголовок Content-Length может отсутствовать в ответе веб-сервера. В этом случае описанные выше настройки не будут действовать.

Подробные инструкции по настройке ограничения проверки веб-трафика для Squid приведены в официальной документации (на английском языке).

Внимание!

Чтобы измененные настройки вступили в силу, необходимо перезапустить Squid.