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

На главную  Назад  Вперед

1) Настройка параметров 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.

При необходимости, задавая значения параметров WhiteList и BlackList, определите пути к доменам, доступ к которым не должен блокироваться, или наоборот, должен блокироваться безусловно. Обратите внимание, что параметр 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).

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

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

1.Включение использования Squid протокола ICAP.

2.Регистрация Dr.Web ICAPD в качестве службы ICAP, используемой Squid.

3.Включение использования режима ICAP preview (опционально).

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

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

При настройке Squid следует иметь в виду следующее:

Чтобы 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-запроса. Достоверность и наличие этих данных не гарантируется. Dr.Web ICAPD предполагает, что имя пользователя и его IP-адрес передаются прокси-сервером в заголовках X-Client-Username и X-Client-IP, без использования методов кодирования значений, отличных от настроек, заданных для Squid по умолчанию. Поэтому не следует изменять значения параметров в настройке Squid, влияющих на способ передачи этих значений (таких как icap_client_username_encode и icap_client_username_header).

Внимание!

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

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

Внимание!

Обязательными для настройки взаимодействия между Dr.Web ICAPD и Squid являются только пункты #1 и #2. Если остальные настройки из приведенных ниже не требуются, просто не добавляйте их в файл конфигурации Squid.

Для 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 будет передавать на проверку по протоколу ICAP. Для этого в файл конфигурации следует добавить условие, которому должно удовлетворять (или не удовлетворять) содержимое заголовка Content-Length, например:

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

(условие <name> будет истинно, если заголовок Content-Length в ответе сервера содержит число, большее 999999).

Далее добавленное условие следует использовать для разрешения (allow) или запрещения (deny) проверки ответа от сервера по протоколу ICAP (следует заменить слово all в параметрах подключения Squid к внешнему ICAP-серверу на имя условия <name>). Так как пример, указанный выше, будет истинным при наличии в заголовке Content-Length числа, большего 999999, используем его для запрещения проверки ответов, для которых условие <name> будет истинно:

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

Внимание!

Наличие заголовка Content-Length не гарантируется в ответе веб-сервера. В случае его отсутствия указанный способ ограничения размера данных, отправляемых Squid на проверку в ICAP-сервер, не сработает.

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

За дополнительными сведениями по тонкой настройке Squid для ограничения проверки веб-трафика обратитесь к документации Squid. См. например, http://www.squid-cache.org/Doc/ (на англ. языке).