ПРОКСИ

 

Совокупность инструментальных средств (программного и аппаратного обеспечения), предназначенную для контроля доступа к сетевым ресурсам принято называть прокси (proxy). Контроль может осуществляться на различных уровнях (прикладное ПО, ядро ОС, специализированное оборудование и т.д.)

Рисунок -- Прокси-сервер

Задачи, выполняемые прокси:
1. Authentication (аутентификация) – определение круга пользователей, имеющих права доступа к сетевым ресурсам. Может проводиться, например, во внутренней сети. Может выполняться по IP-адресу, по MAC-адресу, по аккаунту и т.д. Если прокси «не виден» для клиентского ПО, то он называется прозрачным (transparent).
2. Filtering (фильтрация) – запрет или разрешение прохождения входящих или исходящих пакетов по выбранным критериям. В качестве объекта выступает пакет. Может выполняться по IP-адресу, по портам, по содержимому и т.д.
3. Firewall (сетевой экран) – запрет или разрешение доступа к определенным категориям сетевых ресурсов (как правило централизованным или внешним). В качестве объекта могут выступать ресурсы внутренней сети. Может выполняться по IP-адресу, по времени, по содержимому, и т.д.
4. Logging (ведение логов) – протоколирование различных событий, связанных с доступом к сетевым ресурсам. В качестве объекта может выступать передаваемая информация. Может выполняться по IP-адресу, по пользователям, по портам и т.д.
5. Security (безопасность) – обеспечение защиты информации, передаваемой по открытым для прослушивания сетям. Может осуществляться проверка достоверности, шифрование, маскировка и т.д. Современные тенденции сводятся к формированию так называемых виртуальных частных сетей – VPN (Virtual Private Networks), охватывающих взаимодействующие станции в пределах открытой сети. Взаимодействие осуществляется по формируемым особым образом (с целью максимальной защиты) виртуальным частным каналам – VPC (Virtual Private Channels).

Рисунок -- VPN

6. Acceleration (акселерация) – ускорение доступа к сетевым ресурсам за счет определенных оптимизаций. В качестве объекта выступает передаваемая информация. Возможны кэширование, многопоточность, догачка и т.д.
7. Traffic Shaping (формирование трафика) – распределение приоритетов при доступе к сетевым ресурсам по определенным критериям. Может осуществляться, например, по времени. Может быть программным или аппаратным, статическим или динамическим.
8. Transformation (трансформация) – возможное преобразование передаваемой информации по определенным правилам. В качестве объекта выступает передаваемая информация.

При использовании следует избегать каскадирования большого числа прокси, а также перегрузки ядра OC.

Особую проблему при организации коллективного доступа в Internet представляет собой «невидимость» внутренних адресов. Решения:
1. NAT (Network Address Translation) – наиболее общий стандарт, с помощью которого несколько пользовательских станций из внутренней подсети могут совместно пользоваться одним реальным адресом.

Рисунок -- NAT

Алгоритм работы NAT:
а) клиент передает пакет прокси-серверу с поддержкой NAT;
б) прокси-сервер принимает пакет, запоминает адрес назначения, адрес источника, подставляет в качестве адреса источника свой адрес и передает пакет серверу, запрашиваемому клиентом;
в) после получения ответного пакета от сервера выполняются обратные преобразования, на основе запомненной информации;
г) ответный пакет передается клиенту.

Все реализации NAT делятся на два типа:
а) статические (static) – преобразования осуществляется исходя из строгого соответствия пар адресов (например, внутренних и реальных);
б) динамические (dynamic) – при преобразованиях адреса по мере надобности выделяются из пула по определенному критерию.

Наиболее сложной, но и наиболее полноценной формой NAT является PAT (Port Address Translation) – в дополнение к адресам запоминаются номера портов.

Существуют особые реализации NAT – NAT Traversals – наборы возможностей, позволяющие сетевым приложениям определять свою принадлежность к NAT, определять реальный IP-адрес, назначать порты и т.д.

2. IP Aliasing (псевдонимы) – термин означает, что сетевой интерфейс может иметь несколько IP-адресов.

Рисунок -- IP Aliasing

Например, могут быть разные адреса во внутренней сети и Internet.

3. IP Tunneling (туннелирование) – термин означает инкапсуляцию в IP-пакеты других пакетов сетевого уровня (в том числе и IP-пакетов) без анализа содержимого с целью транспортировки по IP-подсетям.

Рисунок -- IP Tunneling

Например, могут вкладываться IPX-пакеты. Туннелирование также широко применяется для организации VPN.

4. IP Masquerading (маскарад) – термин означает возможность динамического переназначения IP-адреса сетевому интерфейсу.

Рисунок -- IP Masquerading

Это еще один взгляд на туже проблему.

5. SOCKS (SOCKetS) – специально разработанный для прокси-серверов протокол, использующий клиент-серверную модель.

Рисунок -- SOCKS

Существуют две основные версии: 4 и 5. В версии 4 предусмотрены функции формирования запросов, установки соединения, передачи данных между приложениями и др. В версии 5 дополнительно введена поддержка аутентификации.

Наиболее распространенной практикой является построение прокси для контроля доступа по определенным прикладным протоколам семейства TCP/IP.

Подавляющее большинство прокси – это HTTP-прокси, причем двух вариантов (в соответствии с версиями протокола):
а) Get;
б) Connect.

В настоящее время наблюдается устойчивая тенденция включать поддержку FTP в HTTP-прокси.

Обобщенная последовательность действий при взаимодействии клиента и сервера через прокси на примере протокола HTTP.

Рисунок -- Взаимодействие через HTTP-прокси

Изначально, для обслуживания каждого компонента web-страницы по протоколу HTTP создавалось персональное соединение, что приводило к нерациональному использованию сетевых ресурсов и, следовательно, к перегрузкам. Решить указанную проблему позволяют реализации, поддерживающие так называемые постоянные соединения (persistent connections) – все компоненты web-страницы передаются по одному и тому же соединению.

Взаимодействие клиентов с прокси осуществляется по соответствующим расширениям протоколов (например, HTTP).

Для поддержки работы прокси разработано несколько вспомогательных протоколов: ICP (Internet Cache Protocol), HTCP (Hyper Text Caching Protocol), CARP (Common Address Redundancy Protocol) и др.