...
...
...

Протоколы защищенных каналов. часть 1. PPTP

Технологии VPN переживают в наши времена настоящий бум, и «Сетевые решения» никак не могут оставаться в стороне от этой — вполне даже замечательной — тенденции. Один «сериал» на эту тему мы запустили уже пол года назад: это цикл статей «VPN в примерах», и сериал этот еще не окончен. Однако «примеры» дают нам только практические сведения, зачастую просто пошаговые инструкции. Шаг вправо, шаг влево, и...? Правильно, упадем в бездну если не будем знать теории. 
Эта статья открывает новый цикл материалов о VPN, но теперь уже — теоретического свойства. И начнем мы с «ветерана» — протокола PPTP, который, даже ставши устаревшим за счет введения L2TP, все еще крепко держится в некоторых системах, где реализация L2TP слабовата либо не существует вовсе. Так что рановато еще сбрасывать его со счетов. 

общая информация о протоколе 

Протокол PPTP (Point-to-Point Tunneling Protocol) разработан компанией Microsoft совместно с компаниями Ascend Communications, 3Com/Primary Access, ECI-Telematics и US Robotics. Этот протокол был представлен в рабочую группу "PPP Extentions" IETF в качестве претендента на стандартный протокол создания защищенного канала при доступе удаленных пользователей через публичные сети (в первую очередь Internet) к корпоративным сетям. Этот протокол получил статус проекта стандарта Internet, однако, в качестве стандарта так и не был утвержден. Сейчас рабочая группа IETF рассматривает возможность принятия в качестве стандарта протокол L2TP (Layer 2 Tunneling Protocol), который должен объединить лучшие стороны протокола PPTP с протоколом аналогичного назначения L2F (Layer 2 Forwarding), предложенного компанией Cisco.
Протокол PPTP позволяет создавать защищенные каналы для обмена данными по различным сетевым протоколам — IP, IPX или NetBEUI. Данные этих протоколов инкапсулируются с помощью протокола PPTP в пакеты протокола IP, с помощью которого переносятся в зашифрованном виде через любую сеть TCP/IP. Инкапсулируется исходный кадр РРР, поэтому протокол PPTP можно отнести к классу протоколов инкапсуляции канального уровня в сетевой.
Многопротокольность — основное преимущество инкапсулирующих протоколов канального уровня, к которым относится протокол PPTP. Протокол SSL, например, ориентируется на один протокол сетевого уровня — IP. К тому же размещение протокола защищенного канала непосредственно под прикладным уровнем требует переписи приложений, если они хотят воспользоваться возможностями защиты. Защиты данных на канальном уровне делает средства защиты прозрачными как для протоколов прикладного уровня, так и для протоколов сетевого уровня.
Существуют также и варианты встраивания средств создания защищенного канала на сетевом уровне. Имеется несколько протоколов этого типа, использующих шифрацию и инкапсуляцию протокола сетевого уровня в сетевой. Для защиты данных в IP-сетях разработана защищенная версия протокола IP, которую чаще всего называют IPSec (подробнее о нем поговорим о нем в следующей части статьи). Эта версия поддерживает аутентификацию на сетевом уровне, а также может выполнять шифрацию пользовательских данных. IPSec — это набор стандартов, часть из которых существует в виде проектов, а часть еще находится в стадии разработки. Протокол IPSec не определяет жестко, какие методы шифрации должны использоваться для аутентификации и создания защищенного канала, хотя для первых реализаций определен вариант IPSec, использующий дайджест-функцию MD5 для аутентификации и алгоритм шифрования DES для образования защищенного канала. Недостатком протокола IPSec является то, что он работает только в IP-сетях и не определяет способа защищенной транспортировки пакетов других протоколов. Этот недостаток устраняют такие протоколы, как PPTP или L2F.

принцип работы PPTP

Сетевые протоколы функционируют путем обмена порциями данных, называемыми пакетами. Пакет состоит из управляющей информации, специфичной для протокола, и собственно данных, которые должны быть переданы; их часто называют полезной нагрузкой. До тех пор пока обмен данными происходит достаточно быстро и без ошибок, нас не волнует, какую управляющую информацию добавляет протокол для своих целей. Но она жизненно важна и должна сохраняться неизменной, если два компьютера собираются обмениваться данными, вне зависимости от среды соединения.
PPTP работает путем инкапсуляции "родных" пакетов локальной сети — например, пакетов IPX — внутрь пакетов TCP/IP. Весь пакет IPX, включая его управляющую информацию, становится полезной нагрузкой для пакета TCP/IP, который затем можно передавать по Internet. Программные средства на другом конце линии связи извлекают пакет IPX и направляют его для нормальной обработки в соответствии с его собственным протоколом. Этот процесс называется туннелированием, вероятно, потому, что создается коридор в Internet, соединяющий два узла.
Туннелирование позволяет не только экономить на стоимости дальних звонков, но и повышать степень защиты данных. Поскольку туннель соединяет два совместимых протокола с сетью Windows NT/2000, операционная система может выполнять всеобъемлющие проверки надежности защиты, которые она проводит в самой локальной сети. Таким путем соединение может обеспечить принятую в Windows NT/2000 аутентификацию пользователей по протоколам PAP (Password Authentication Protocol) или CHAP (Challenge Handshake Authentication Protocol). Более того, PPTP позволяет передавать данные, зашифрованные RSA-методами RC-4 или DES. Если безопасность подключения к сети VPN является критическим фактором, администратор сервера может указать, что сервер будет принимать посредством дистанционного соединения только пакеты PPTP, но это предотвратит использование сервера в режиме открытого доступа по HTTP или FTP. Однако, если имеется более одного сервера и если нужно обеспечить наивысшую защиту, такое решение — вполне приемлемый вариант.
Но даже при всех подобных мерах безопасности единственным специальным программным обеспечением для клиента служит сам протокол PPTP плюс программа связи по модему, которая может соединить с сетью VPN. И даже это не является необходимым, если у поставщика услуг Internet есть средства работы с PPTP, позволяющие безопасно передавать любые данные по стандартному протоколу PPP (Point-to-Point Protocol, протокол соединения "точка-точка"). 

процесс связи по протоколу PPTP 

Поскольку вся идея дистанционного доступа состоит в разрешении машине клиента подключаться по телефонной линии к машине сервера, соединение PPTP инициируется клиентом, который использует служебное средство Windows NT — Remote Access Service (RAS) — для установления PPP-соединения с поставщиком услуг Internet. Затем при активизированном соединении PPP с помощью сервера, подключенного к Internet и действующего как сервер RAS, клиент применяет RAS для выполнения второго соединения. На этот раз в поле номера телефона указывается IP-адрес (или доменное имя), и клиент, для того чтобы осуществить соединение, вместо COM-порта использует VPN-порт (VPN-порты конфигурируются на машинах клиента и сервера в процессе инсталляции PPTP).
Ввод IP-адреса инициирует передачу запроса серверу на начало сеанса. Клиент ожидает от сервера подтверждения имени пользователя и пароля и ответа сообщением, что соединение установлено. В этот момент начинает свою работу канал PPTP, и клиент может приступить к туннелированию пакетов серверу. Поскольку они могут быть пакетами IPX и NetBEUI, сервер может выполнять с ними свои обычные процедуры обеспечения защиты. 
В основе обмена данными по протоколу PPTP лежит управляющее соединение PPTP — последовательность управляющих сообщений, которые устанавливают и обслуживают туннель. Полное соединение PPTP состоит только из одного соединения TCP/IP, которое требует передачи эхо-команд для поддержания его открытым, пока выполняются транзакции. В таблице 1 показаны эти сообщения и их функциональное назначение. 

 

Управляющее сообщениеФункция

Start-Control-Connection-Request

Запрос на установление управляющего соединения

Start-Control-Connection-Replay

Ответ на сообщение Start-Control-Connection-Request

Echo-Request

Сообщение "Keep-alive" ("все живы") для управляющего соединения

Echo-Replay

Ответ на сообщение Echo-Request

Set-Link-Info

Посылается сервером сети для задания PPP-параметров переговоров

Stop-Control-Connection-Request

Команда завершить управляющее соединение

Stop-Control-Connection-Replay

Ответ на сообщение Stop-Control-Connection-Request

 Табл. 1. Управляющие сообщения PPTP

схемы применения пртокола PPTP

 В протоколе PPTP определено две схемы его применения.
Первая схема рассчитана на поддержание защищенного канала между сервером удаленного доступа ISP и пограничным маршрутизатором корпоративной сети (рис.1). 

Рис.1. Защищенный канал "провайдер–маршрутизатор корпоративной сети" на основе протокола PPTP 

В этом варианте компьютер удаленного пользователя не должен поддерживать протокол PPTP. Он связывается с сервером удаленного доступа RAS, установленного у ISP, с помощью стандартного протокола PPP и проходит первую аутентификацию у провайдера. RAS ISP должен поддерживать протокол PPTP. По имени пользователя RAS ISP должен найти в базе учетных данных пользователей IP-адрес маршрутизатора, являющегося пограничным маршрутизатором корпоративной сети данного пользователя. С этим маршрутизатором RAS ISP устанавливает сессию по протоколу PPTP. Протокол PPTP определяет некоторое количество служебных сообщений, которыми обмениваются взаимодействующие стороны, служебные сообщения передаются по протоколу TCP. RAS ISP передает маршрутизатору корпоративной сети идентификатор пользователя, по которому маршрутизатор снова аутентифицирует пользователя по протоколу CHAP. Если пользователь прошел вторичную аутентификацию (она для него прозрачна), то RAS ISP посылает ему сообщение об этом по протоколу РРР и пользователь начинает посылать свои данные в RAS ISP по протоколу IP, IPX или NetBIOS, упаковывая их в кадры РРР. RAS ISP осуществляет инкапсуляцию кадров РРР в пакеты IP, указывая в качестве адреса назначения адрес пограничного маршрутизатора, а в качестве адреса источника — свой собственный IP-адрес. Пакеты РРР шифруются с помощью секретного ключа, в качестве которого используется дайджест от пароля пользователя, который хранится в базе учетных данных RAS ISP для аутентификации по протоколу CHAP.
Пакеты, циркулирующие в рамках сессии PPTP, имеют следующий вид: 
- заголовок канального уровня, используемого внутри Internet (PPP,  SLIP, Ethernet);
- заголовок IP;
- заголовок GRE;
- исходный пакет PPP, включающий пакет IP, IPX или NetBEUI.
Для указания сведений о том, что внутри пакета IP находится инкапсулированный пакет РРР, используется стандартный для Internet заголовок GRE v.2 (RFC 1701 и 1702), используемый при инкапсуляции различного типа.
Внутренние серверы корпоративной сети также не должны поддерживать протокол PPTP, так как пограничный маршрутизатор извлекает кадры РРР из пакетов IP и посылает их по сети в необходимом формате — IP, IPX или NetBIOS.
Microsoft предложила также и другую схему использования протокола PPTP, с помощью которой образуется защищенный канал между компьютером удаленного пользователя и пограничным маршрутизатором корпоративной сети, в качестве которого должен использоваться RAS Windows NT/2000.
Эта схема приведена на рисунке 2. 

Рис.2. Защищенный канал "клиент - маршрутизатор" корпоративной сети на основе протокола PPTP 

В первый раз клиент звонит на сервер RAS ISP и устанавливает с ним связь по протоколу PPP, проходя аутентификацию одним из способов, поддерживаемых провайдером — по протоколам PAP, CHAP или с помощью терминального диалога.
После аутентификации у провайдера, пользователь вторично "звонит", на этот раз в сервер удаленного доступа корпоративной сети. Этот "звонок" отличается от обычного тем, что вместо телефонного номера указывается IP-адрес RAS Windows NT, подключенного к Internet со стороны корпоративной сети. При этом устанавливается сессия по протоколу PPTP между клиентским компьютером и RAS корпоративной сети. Клиент еще раз аутентифицируется, теперь на сервере RAS его сети, а затем начинается передача данных, как и в первом варианте.
обсуждение статьи

© Сетевые решения