В данной статье описан алгоритм обработки трафика (packet flow), представленный на схеме ниже. В зависимости от типа трафика и режима работы UserGate, порядок обработки может отличаться. В общем случае рассмотрим:
Трафик DNAT – транзитный трафик; к трафику могут применяться правила инспектирования и, соответственно, фильтрации контента при определённых условиях.
Transparent Proxy Mode – работа сервера UserGate в режиме прозрачного прокси-сервера. В этом случае весь трафик является транзитным для UserGate и обрабатывается правилами модуля Local Process только в случае их наличия и соответствия условиям.
Explicit Proxy Mode – работа сервера UserGate в режиме явного прокси-сервера. В этом случае весь трафик направлен непосредственно на сервер UserGate и всегда обрабатывается правилами модуля Local Process.
В общем случае путь прохождения пакета выглядит следующим образом:

После поступления на интерфейс UserGate пакет попадает под правила зоны – в блок DoS, Spoofing. На этом этапе производится базовая проверка трафика (например, на наличие атак). Уже на этом этапе может произойти отбрасывание пакета, например, по причине детектирования SYN-флуда, наличия аномалий трафика TCP, UDP или ICMP.
Если пакет не был отброшен на предыдущем этапе, то далее он проходит блок Fast Path, который позволяет пропустить через все проверки и блоки только первые пакеты сессии. В дальнейшем если пакеты по какой-то причине не требуют проверки и специальной обработки, модуль FastPath, формирует правило, которое перенаправляет пакет напрямую с входного интерфейса на выходной. При этом с такими пакетами выполняются все необходимые для доставки получаетелю преобразования(DNAT, PortForwarding и т.д.)
Пакет не попавший под правила FastPath, следует дальше и попадает в блок Gateways, PBR, в котором помечается (маркируется) для дальнейшего использования в правилах маршрутизации.
Затем в блоке DNAT, Port Forwarding происходит обработка и подмена адреса назначения (источника в случае SNAT и порта в случае Port Forwarding), после которой пакет проходит далее, в блок с условным названием CHECK. Трафик DNAT и Port Forwarding подчиняется созданным правилам фильтрации межсетевого экрана.
Анализ трафика начинается на этапе установления TCP-соединения с портами назначения 80 и 443. UserGate анализирует весь TCP-трафик, но его перехват осуществляет на финальной стадии установления надёжного TCP-соединения, т.е. на последнем этапе «трёхстороннего рукопожатия» (three-way handshake). Таким образом, первые пакеты пройдут путь до блока Firewall и будут отброшены в случае наличия запрещающего правила, под условия которого подходят эти пакеты.
Обработка трафика DNAT и Port Forwarding проходит следующим образом:
Проверка соответствия трафика условиям правил фильтрации контента происходит до проверки соответствия правилам межсетевого экрана. Если есть перекрёстные запрещающие правила по зонам, адресам источника/назначения и/или пользователям, то трафик будет заблокирован межсетевым экраном.
Если есть правила контентной фильтрации по другим параметрам (URL, категория сайта, тип контента и т.д.) и настроено SSL инспектирование, то UserGate ожидает установки TLS-сессии, после чего производит проверку соответствия.
В случае соответствия условиям блокирующего правила контентной фильтрации трафик будет заблокирован, а пользователю вернётся страница блокировки. Случаи возврата пользователю страницы блокировки рассмотрены в разделе Отображение страницы блокировки.
В противном случае трафик будет перенаправлен в блок Routing.
В блоке Routing происходит проверка всех записей подключённых сетей, проверка доступности шлюзов, проверка записей (статических и динамических) виртуальных маршрутизаторов.
Далее пакет попадет в блок L7, IDPS, в котором проверяются используемые приложения, а также работает система обнаружения и предотвращения вторжений.
В блоке Firewall пакеты обрабатываются только в случае наличия правил, созданных администратором. Затем пакет проходит через блок Shaper (настройка пропускной способности), попадает в блок NAT (настройка правил NAT, DNAT, Policy-based routing, Port Forwarding и Network Mapping) и передаётся на выходной интерфейс.
Поступая на интерфейс, пакет проходит проверку соответствия правилам зоны в блоке DoS, Spoofing. Далее пакет обрабатывается в блоке Gateways, PBR, в котором помечается (маркируется) для дальнейшего использования в правилах маршрутизации.
Затем пакет без изменений проходит в блок с условным названием CHECK.
В блоке CHECK весь трафик будет проходить проверку соответствия условиям правил инспектирования, контентной фильтрации, а также принадлежности сервисам ICAP, reverse-прокси, веб-портала, АСУ ТП и защиты почтового трафика. Проверка осуществляется путём поэтапного анализа трафика в соответствие с параметрами алгоритма блока CHECK.
В случае работы в режиме Explicit Proxy в момент запроса клиентом внешнего ресурса формируется 2 TCP-сессии:
Первая сессия: КЛИЕНТ – USERGATE - обращение от клиента происходит непосредственно к UserGate и начинается с HTTP Connect.
Вторая сессия: USERGATE – КОНЕЧНЫЙ СЕРВЕР – при этом трафик от UserGate до сервера является транзитным для блока Firewall (если настроено запрещающее правило по IP-адресу назначения, т.е. указан адрес конечного сервера, то трафик будет заблокирован).
Далее представлен алгоритм сопоставления трафика политикам UserGate при работе в режиме Explicit Proxy. Сопоставление происходит в блоке CHECK.

|
Explicit Proxy Mode |
|
|---|---|
|
HTTPS |
Rule Condition |
|
HTTP Connect
|
|
|
Client Hello
|
|
|
SSL Decrypt
|
|
|
HTTP (Method) req
|
|
|
HTTP (Method) res
|
|
При работе в Explicit Proxy Mode, первое сообщение, которое UserGate получает от клиента – HTTP Connect, из которого можно извлечь информацию о зонах, адресах источника/назначения, пользователе. Если по таким параметрам, блокировка не происходит, то следующий пакет, который ожидает UserGate – это пакет Client Hello, с которым становится доступна идентификация по имени сервера (SNI). На основании SNI доступна фильтрация по доменам и категориям сайтов.
Если настроено инспектирование SSL, то на этом же этапе происходит проверка сертификата (корректность сертификата, срок действия и т.д.). Настройка правил инспектирования доступна по зонам, адресам, пользователям, категориям URL, доменам.
Если на данном этапе блокировка не произошла, то далее UserGate получает от пользователя HTTP Request (GET, PUT и т.д.), из которого можно получить информацию о реферере, URL, Useragent браузера, методе HTTP. Соответственно, эти же параметры могут быть использованы в качестве параметров фильтрации при настройке политик. На этом этапе доступна работа с URL. Поэтому, если трафик не расшифровывается, то доступна только фильтрация по доменным именам.
При получении ответа от сервера (HTTP Response) доступна информация о типе контента (содержится в заголовке HTTP Response) и тело сообщения. Соответственно, на данном этапе доступна фильтрация по типу контента, проверка морфологии, а также работает потоковый антивирус UserGate.
После обработки в блоке CHECK трафик будет направлен в блок лицензирования трафика (License); трафик сервисов reverse-прокси, веб-портала и защиты почтового трафика не проходят блок License, а сразу переходят в блок Routing, где происходит проверка записей подключённых сетей, доступности шлюзов, записей виртуальных маршрутизаторов.
Далее пакет попадет в блоки L7, IDPS (проверка используемых приложений, также работает система обнаружения и предотвращения вторжений), Firewall, Shaper (настройка пропускной способности), NAT (настройка правил NAT, DNAT, Policy-based routing, Port Forwarding и Network Mapping) и передаётся на выходной интерфейс.
Поступая на интерфейс, пакет проходит проверку соответствия правилам зоны в блоке DoS, Spoofing. Далее пакет обрабатывается в блоке Gateways, PBR, в котором помечается (маркируется) для дальнейшего использования в правилах маршрутизации.
Затем пакет без изменений проходит в блок с условным названием CHECK.
В режиме Transparent Proxy UserGate является посредником между клиентом и конечным сервером, выполняющим обработку и перехват трафика в соответствии с настроенными на UserGate политиками.
В случае использования Transparent Proxy Mode, по умолчанию, UserGate будет анализировать TCP-пакеты, отправляемые по портам 80 и 443.
В Transparent Proxy Mode обработка в блоке CHECK происходит по следующей схеме:

|
Transparent Proxy Mode |
|
|---|---|
|
HTTPS |
Rule Condition |
|
TCP
|
|
|
Client Hello
|
|
|
SSL Decrypt
|
|
|
HTTP (Method) req
|
|
|
HTTP (Method) res
|
|
UserGate анализирует весь TCP-трафик, но его перехват модулем Local Process осуществляется на финальной стадии установления надёжного TCP-соединения, т.е. на последнем этапе «трёхстороннего рукопожатия» (three-way handshake).
Если трафик не соответствует условиям правил инспектирования, контентной фильтрации, принадлежности сервисам ICAP и защиты почтового трафика, созданных на UserGate, то он будет перенаправлен в блоки License, Routing и далее.
Если трафик не был заблокирован клиентскими правилами межсетевого экрана, то происходит проверка соответствия условиям правил контентной фильтрации, запрещающих трафик по зонам, адресам источников/назначений и/или пользователям. В случае соответствия UserGate заблокирует данное соединение и отобразит страницу блокировки.
В случае отсутствия блокирующих правил контентной фильтрации по зонам, адресам источников/назначений или пользователям UserGate проверяет наличие правил фильтрации по другим параметрам (URL, категория сайта, тип контента и т.д.). Если правил нет, то блок CHECK пропускает трафик дальше без обработки; если такие правила есть - блок CHECK пропускает трафик без обработки, но продолжает его отслеживать до установления TLS-сессии.
После получения сообщения Client Hello, содержащего SNI, доступна фильтрация по доменам и категориям сайтов.
Если настроено инспектирование SSL, то на этом же этапе происходит проверка сертификата (корректность сертификата, срок действия и т.д.). Настройка правил инспектирования доступна по зонам, адресам, пользователям, категориям URL, доменам.
Если на данном этапе блокировка не произошла, то далее UserGate получает от пользователя HTTP Request (GET, PUT и т.д.), из которого можно получить информацию о реферере, URL, Useragent браузера, методе HTTP. Соответственно, эти же параметры могут быть использованы в качестве параметров фильтрации при настройке политик. На этом этапе доступна работа с URL. Поэтому, если трафик не расшифровывается, то доступна только фильтрация по доменным именам.
При получении ответа от сервера (HTTP Response) доступна информация о типе контента (содержится в заголовке HTTP Response) и тело сообщения. Соответственно, на данном этапе доступна фильтрация по типу контента, проверка морфологии, а также работает потоковый антивирус UserGate.
Если после проверки соответствия политикам UserGate трафик не был заблокирован, то он будет передан в блоки License (лицензирование трафика), Routing (проверка записей подключённых сетей, доступности шлюзов, записей виртуальных маршрутизаторов), L7, IDPS (проверка используемых приложений, также работает система обнаружения и предотвращения вторжений), Firewall, Shaper (настройка пропускной способности), NAT (настройка правил NAT, DNAT, Policy-based routing, Port Forwarding и Network Mapping) и передаётся на выходной интерфейс.
Т.к. в Transparent Proxy Mode из всего потока в обработку попадает только трафик, удовлетворяющий условиям политик, настроенных на UserGate, то Transparent Proxy Mode является более производительным при большом потоке веб-трафика по отношению к Explicit Proxy Mode.