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

Режимы работы web-прокси

Посредник может работать в нескольких режимах, которые можно комбинировать для решения разных задач. По контексту применения выделяются следующие режимы:

  • взаимодействия с клиентским ПО (например, веб-браузерами пользователей): "прозрачный" и "непрозрачный";
  • аутентификации пользователей прокси: без аутентификации, с аутентификацией на основе LDAP, с аутентификацией на основе NTLM;
  • обработки запросов пользователей (URL содержимого, IP-адрес источника и так далее): с фильтрацией и без фильтрации;
  • обработки полученного в ответ на запросы пользователей веб-содержимого: с кэшированием и без кэширования;
  • с включенным и отключенным режимом проксирования SSL.

Кэширование ответов на запросы пользователей#

Основная задача прокси - изоляция одной (защищаемой) сети от другой (публичной). Достигается это исключением "прямых" соединений между клиентами из защищаемой сети и их адресатами из публичной. Вместо этого клиент (клиентское ПО) обращается к посреднику с просьбой загрузить для него (клиента) что-либо из публичной сети по указанному клиентом URL (при "непрозрачной" работе прокси). При работе в "прозрачном" режиме посредник делает это сам, имитируя для клиента "прямое" соединение. В результате в распоряжении посредника оказывается веб-содержимое, запрошенное клиентом. Современное веб-пространство устроено так, что значительная доля содержимого изменяется довольно редко или вообще не изменяется, поэтому разумно наделить посредника способностями выявлять такое содержимое, сохранять его у себя и впредь, в ответ на соответствующие запросы клиентов, отдавать сохранённую у себя копию запрошенного содержимого, не обращаясь за ним к адресату в Интернет.

Такая деятельность посредника называется кэшированием, а его хранилище копий содержимого - кэшем. Разумеется, предусмотрены и рычаги управления кэшированием, они описаны ниже в этой главе.

По умолчанию в системе Numa Edge кэширование средствами веб-прокси выключено.

Примечание

Не рекомендуется включать кэширование веб-содержимого в системах, использующих в качестве устройства хранения флэш-накопители. Кэширование веб-содержимого вызывает частые операции записи данных на носитель, что сильно сокращает срок службы флэш-накопителя. Кэширование веб-содержимого должно включаться только в системах с "обычными" жёсткими дисками.

Фильтрация запросов пользователей#

Поскольку посредник анализирует и исполняет запросы пользователей, то есть возможность управлять его поведением в зависимости от того что, откуда и когда запрашивается. Можно настроить реакцию на определённые доменные имена, IP-адреса, типы MIME, символьные комбинации в пределах URL и так далее. В ответ на "неподходящий" запрос клиента можно вместо запрошенного содержимого отдавать как собственные страницы с разным содержимым (например, с сообщениями вроде "Доступ запрещён"), так и страницы с других ресурсов (здесь это называется "перенаправление"). Также есть возможность настроить поведение посредника в зависимости от информации об источнике запроса (например, IP-адреса системы клиента) и текущей ситуации (скажем, времени суток).

По умолчанию в системе Numa Edge фильтрация средствами веб-прокси выключена, все запросы пропускаются беспрепятственно.

Порядок фильтрации запросов пользователей#

Фильтрация запросов пользователей производится посредником Numa Edge на основе фильтров, которые могут существовать "сами по себе", в качестве глобальных фильтров, и внутри частных (уточняющих) правил фильтрации. При получении запроса от пользователя прокси сверяет имеющиеся в этом запросе данные (URL адресата, IP-адрес источника и так далее) с соответствующими данными в правилах и глобальных фильтрах на предмет совпадения или попадания в диапазон. Если это происходит, то правило или глобальный фильтр "применяются" - прокси выполняет указанное в них действие, например, отказывает в исполнении запроса или, наоборот, исполняет его в качестве исключения.

Сначала производится сверка с правилами, до первого совпадения или попадания в диапазон. Если правила применить не получилось, то производится сверка с глобальными фильтрами, тоже до первого совпадения или попадания в диапазон. Если и глобальные фильтры применить не получилось, то прокси выполняет действие по умолчанию, задаваемое командой .

Порядок перебора правил определяется их номерами - от 1 до 1024, по возрастанию. Порядок перебора фильтров (как внутри правил, так и глобальных) определяется их приоритетом - фильтр с высшим приоритетом сверяется первым. Ниже приведён перечень фильтров (без параметров и команд) в соответствии с их приоритетами (1 — высший):

  • local-ok - разрешает доступ к указанному адресу IP или домену;
  • local-block - запрещает доступ к указанному адресу IP или домену;
  • allow-ipaddr-url - разрешает запросы, в URL которых вместо доменного имени сайта указан IP-адрес;
  • block-category - запрещает доступ по адресам из указанной категории;
  • allow-category - разрешает доступ по адресам из указанной категории;
  • local-block-keyword - блокирует запросы к содержимому, URL которого содержит указанный набор символов;
  • local-block-url – блокирует доступ к указанному URL;
  • local-ok-url – разрешает доступ к указанному URL
  • default-action - задаёт действие, которое будет применяться ко всем запросам, не попавшим под имеющиеся фильтры (и глобальные, и в правилах).

Правила предназначены для сужения области применения фильтров за счёт наложения дополнительных условий. В качестве этих условий выступают промежутки времени и информация об источнике запроса. В этом случае фильтры применяются только тогда, когда соблюдаются все указанные в правиле дополнительные условия (например, текущее время попадает в указанный в условии диапазон).

Проксирование соединений SSL#

Фильтрация данных, доступ к которым осуществляется через установление SSL соединений (по HTTPS), осуществляется с помощью двух способов.

  • Без разрыва SSL соединения с помощью анализа поля SNI (Server Name Indication). Настройка данного режима работы осуществляется с помощью атрибута set service webproxy url-filtering ssl block-server.
  • С помощью разрыва SSL между WEB-сервером и клиентом и установления отдельного соединения с каждым из них. Для включения данного режима работы используется атрибут set service webproxy url-filtering ssl bump-server.

В качестве значения для данных атрибутов указываются домены, либо регулярные выражения описывающие один и более доменов. Работа этих способов возможна параллельно, в таком случае атрибут block-server является приоритетным.

Блокировка SSL по SNI#

Данный метод осуществляет фильтрацию трафика без подмены сертификатов сайтов. На этапе установления SSL соединения клиента с WEB-сервером прокси сервер анализирует поле SNI (Server Name Indication,RFC 6066). Далее, принимается решение о разрешении или запрете дальнейшего соединения. Данный метод не позволяет использовать функционал из блока конфигурации squidguard, и ограничен только фильтрацией определенных доменов. Однако, этот метод не осуществляет MITM между клиентом и WEB-сервером и не требует добавления самоподписанного сертификата удостоверяющего центра в список доверенных сертификатов клиента.

Разрыв SSL соединения#

При использовании метода с разрывом SSL соединения важным моментом является создание сертификата, который прокси-сервер будет предоставлять конечным пользователям. Так как от этого зависит, будут ли выдаваться предупреждения системы безопасности в браузерах конечных пользователей. Предупреждения могут выдаваться в следующих случаях:

  • Предоставляемый прокси-сервером сертификат подписан УЦ, который не является доверенным для конечного пользователя.
  • Имя, указанное в сертификате, не соответствует доменному имени сайта.
  • Срок действия сертификата не соответствует установленному времени и дате на клиентском устройстве.

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

  • Сертификат УЦ, указанный в настройках прокси-сервера, должен находиться в списке доверенных удостоверяющих центров для конечных пользователей.
  • На клиентских устройствах и на Numa Edge должна быть настроена одинаковая время и дата. Для этих целей рекомендуется использовать службу синхронизации точного времени (NTP).

Генерация сертификатов WEB-серверов, к которым подключается клиент производится автоматически. Для этого прокси сервер "подсматривает" сообщение TLS ClientHello и, на основе полученного значения поля SNI, в котором содержится доменное имя сайта, генерирует новый сертификат.

Прокси сервер также устанавливает SSL соединение и с реальным WEB-сервером, к которому обращается клиент. Поэтому на Numa Edge должны быть импортированы сертификаты УЦ, которым подписан сертификат этого WEB-сервера, для того чтобы полученный сертификат прошел проверку подлинности.

Примечание

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

Аутентификация пользователей прокси#

Прокси-сервер для предоставления доступа к ресурсам сети может осуществлять аутентификацию и авторизацию пользователей. Возможно построение взаимодействия с сервером LDAP и аутентификации на основе регистрационного имени и пароля, а также с сервером Microsoft Active Directory и сквозной аутентификации клиентов — членов домена, используя протокол NTLM.

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

При использовании аутентификации на основе LDAP, пользователю выдается приглашение на ввод регистрационного имени и пароля.

Процесс аутентификации при использовании NTLM отличается в зависимости от используемого браузера. В том случае если пользователь является членом домена и использует веб-браузер с поддержкой NTLM, аутентификация является сквозной, то есть не требует участия пользователя. Приглашение на ввод имени пользователя и пароля выдается только в случае невозможности аутентификации на базе NTLM.

"Прозрачный" и "непрозрачный" режимы#

"Прозрачный" режим не предполагает какой-либо дополнительной настройки ПО пользователей и при "обычной" работе с ресурсами Интернет присутствие посредника не выявляется. Обычно посредник ожидает соединения на сетевом порту с номером, отличным от 80-го, поэтому в таких конфигурациях на границе защищаемой при помощи посредника сети принимаются меры для принудительного перенаправления всего трафика TCP, адресованного на порт 80 (а также на другие используемые сетевые порты, например, 443), на порт, прослушиваемый прокси-сервером. Прозрачность также исключает явную аутентификацию пользователей прокси (например, на основе идентификатора пользователя и пароля), но позволяет ограничивать запросы, например, по IP-адресу источника.

В "непрозрачном" режиме в клиентском ПО необходимо явно прописывать IP-адрес интерфейса системы и номер порта TCP, на котором ожидает соединений от клиентов программа-посредник. Считается, что поддерживающее работу через прокси клиентское ПО лучше работает через него когда он в "непрозрачном" режиме, то есть когда ПО "знает" о его существовании и может соответственно подстроить своё поведение. Кроме того, не всё вредоносное ПО обращает внимание на настройки прокси и умеет работать через него. Тем не менее, для "веб" вирусов (написанных, например, на flash или javascript и работающих в браузере) сам по себе прокси обычно не является преградой.

В обоих режимах отсутствует "прямое" (в смысле TCP) соединение между клиентом и его адресатом в Интернет. Вместо него присутствуют два соединения - между клиентом и прокси и между прокси и адресатом клиента в Интернет. Отличие в данном контексте в том, что в "прозрачном" режиме прокси представляет клиенту всё так, как будто между клиентом и его адресатом установлено "прямое" соединение.

По умолчанию прокси в системе Numa Edge работает в "прозрачном" режиме.

Предупреждение

Для корректной работы webproxy в прозрачном режиме также необходимо вручную настроить NAT.

При использовании аутентификации пользователей необходимо отключить "прозрачный" режим, для этого используется команда service webproxy listen-address <ipv4_адрес> disable-transparent.

При настройке прокси-сервера в прозрачном режиме в системе дополнительно резервируется порт, номер которого на единицу меньше, чем номер порта по умолчанию. По умолчанию установлен порт 3128, поэтому для прокси-сервера в прозрачном режиме будет также зарезервирован порт с номером 3127. Этот порт будет использован для прямого доступа к ресурсам прокси-сервера (например, элементам служебных страниц) при необходимости.

При настройке прокси-сервера в прозрачном режиме и включенном режиме проксирования SSL резервируется порт, номер которого на единицу больше номера порта по умолчанию (в данном случае номер порта с защищенным соединением будет равен 3129).