Опубликован: 04.07.2008 | Уровень: профессионал | Доступ: платный
Лекция 5:

Прокси-серверы

< Лекция 4 || Лекция 5: 12345 || Лекция 6 >
Аннотация: Разделение на зоны безопасности является ключевой концепцией безопасного применения приложений в рамках заданной архитектуры. Как правило, разделение на зоны безопасности происходит с помощью таких инструментов, как брандмауэры, которые препятствуют прохождению между зонами трафика, не являющегося однозначно авторизованным. Однако другим методом управления доступом в доверенных сетевых зонах и из них является использование прокси-сервера. В этой лекции описаны различные классы и категории прокси (сетевых посредников), причем классифицированы они не на основе своих внутренних характеристик, а главным образом по возможности использования в различных топологиях. Основное внимание здесь сосредоточено на функции сетевого посредничества, которая будет указывать, какие продукты или инструменты применять и как их конфигурировать

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

5.1 Определение прокси

Слово "proxy", как и множество других ставших популярными компьютерными терминами английских слов, возможно, утратило для некоторых из нас свое оригинальное значение. Согласно словарю, proxy – это кто-то (или что-то), уполномоченный действовать от лица его клиента и "доставляющий" клиенту определенные предметы.

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

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

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

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

5.2 Процесс сетевого посредничества

Как правило, компьютерный прокси является базовым серверным процессом. Этот серверный процесс является слушателем, который "слушает" определенный порт (говорят также – связан с ним – bind ), ожидая запросов по определенному протоколу. Когда установлено соединение с клиентом и получен правильный запрос, он "повторит" этот запрос другому серверу от имени клиента, как определено в его правилах для этого типа запросов. Когда от сервера получен ответ, прокси передает этот ответ назад пользователю или процессу клиента, которые ранее осуществили запрос, применяя все необходимые преобразования.

Если смотреть на вещи упрощенно, прокси на самом деле существуют во множестве различных продуктов. К примеру, большинство технологий порталов, которые сегодня легкодоступны, запрашивают контент от лица пользователя и компонуют его в отдельный "вид портала". Другим примером прокси являются "транзитные пересылки" Notes, которые существовали в Lotus Notes определенное количество лет и разрешали удаленный доступ в среды Notes на протяжении всех ранних лет развития Интернета. Тем не менее далее в этом разделе мы сосредоточим внимание на прокси в виде отдельных продуктов, так как наиболее часто используемым сегодня передовым опытом является применение отдельных прокси-сервисов.

5.3 Типы прокси

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

Ключевыми типами прокси, которые мы определяем и рассматриваем в этом разделе, являются:

  • пересылающие прокси (forward proxies);
  • прозрачные прокси (transparent proxies);
  • кеширующие прокси (caching proxies);
  • прокси обеспечения безопасности (security proxies);
  • обратные прокси (reverse proxies).
5.3.1 Пересылающие прокси

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

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

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

С точки зрения топологии (как в общем смысле, так и относительно ширины полосы пропускания) пересылающие прокси всегда относительно ограничены в терминах сетевой скорости по отношению к своим пользователям из-за более медленного WAN-соединения (соединения с глобальной сетью), которое обычно отделяет пересылающий прокси от реального контента в Интернете.

5.3.2 Прозрачные прокси

Прозрачные прокси являются прокси-серверами, которые "находятся здесь", но не осведомляют пользователей в прямой форме о том, что они здесь находятся. В пересылающих прокси обычно существуют Linux/UNIX блоки, которые слушают весь трафик по определенному протоколу для определенного сегмента сети и перехватывают трафик, хотя пользовательский процесс в действительности не знает об их существовании. Фактически пользовательский процесс не общается с прокси, но общается с другим (конечным) сайтом, а прокси, в сущности, становится тем "человеком посередине", который "взламывает" соединение.

Прокси является непрозрачным, или объявленным, когда пользователи знают о том, что они общаются через прокси, потому что они обращаются (на языке прокси: HTTP) к прокси. Другими словами, если я объявил свой прокси как proxy.mydomain.com, то после этого мои процессы будут общаться с proxy.mydomain.com, запрашивая его об установлении контакта с конечным адресом назначения моих запросов. Я полностью осведомлен о существовании прокси, о необходимости общаться с ним на "языке прокси" (HTTP), и о необходимости передать ему куда "идти" и откуда "принести" необходимый контент.

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

Прозрачные прокси сами по себе не являются на самом деле типом прокси, скорее любой прокси является либо прозрачным, либо объявленным по проекту.

5.3.3 Кеширующие прокси

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

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

В большинстве случаев пересылающие прокси конфигурируются также для работы в качестве кеширующих прокси. Это явление используется настолько часто, что компания IBM включила это в название компонента своего Edge Server: IBM Caching Proxy. На рис. 5.1 отображен типичный пересылающий и кеширующий прокси-сервер.

Кеширующий прокси, работающий как пересылающий прокси

Рис. 5.1. Кеширующий прокси, работающий как пересылающий прокси
5.3.4 Прокси обеспечения безопасности

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

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

В большинстве случаев функциональные возможности по обеспечению безопасности могут быть добавлены стандартному прокси в виде дополнительного программного модуля [plug-in (плагин)] (к примеру, IBM Tivoli WebSeal Plug-In для IBM WebSphere Edge Server). Существуют также и отдельные продукты, такие, как IBM Tivoli Access Manager for e-Business, которые служат только в качестве прокси обеспечения безопасности.

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

< Лекция 4 || Лекция 5: 12345 || Лекция 6 >