Windows NT 4.0 может выступать в роли простого VPN-сервера с ограниченными возможностями, который поддерживает только протокол PPTP (Virtual Private Network, VPN — виртуальная частная сеть; Point-to-Point Tunneling Protocol, PPTP, Layer 2 Tunneling Protocol, L2TP). Windows 2000 обеспечивает не только более высокую надежность и новые возможности масштабирования и управления, но и поддержку двух VPN-протоколов — PPTP и L2TP. Чтобы решить, какой из протоколов предпочтительней использовать при установке VPN-сервера, следует рассмотреть их способы аутентификации и шифрования. L2TP имеет больше функциональных возможностей, чем PPTP. Напомню, что с середины 90-х гг. две компании развивали свои собственные VPN-протоколы: Microsoft PPTP и Cisco L2F. В дальнейшем Microsoft и Cisco объединили PPTP и L2F в общий протокол L2TP, ставший затем открытым стандартом. Чтобы успешно применять L2TP, следует познакомиться с его расширенными возможностями поближе. Знание протоколов PPTP и L2TP поможет выбрать оптимальную конфигурацию для того или иного случая.
Обзор VPN
VPN создает защищенный канал связи через Internet между компьютером удаленного пользователя и частной сетью его организации. Если представить Internet в виде трубы, то VPN создает внутри нее трубу меньшего диаметра, доступную только для пользователей организации. VPN обеспечивает пользователю защищенный доступ к его частной сети практически через любой тип соединения с Internet. Наличие IP-сети между клиентом и сервером VPN является единственным требованием для реализации Microsoft VPN. Достаточно, чтобы и клиент и сервер были подключены к Internet.
Технология VPN позволяет компаниям избежать расходов на организацию или аренду прямых соединений: например, каналов E1, ISDN, frame relay, а также на содержание собственных модемных пулов. Взамен всего этого можно использовать имеющийся у компании канал в Internet. Лишь небольшие административные затраты требуются для соединения расположенных в любых точках планеты офисов компании при помощи защищенного канала. Организация виртуальных частных сетей является сегодня одним из самых актуальных направлений в области сетевых технологий. Специалисты Microsoft проделали большую работу, чтобы облегчить реализацию виртуальных частных сетей в Windows 2000.
Опора на PPP
В чем сходство и различие между PPTP и L2TP? Если рассмотреть структуру пакетов, станет очевидно, что и PPTP и L2TP основываются на протоколе Point-to-Point Protocol (PPP) и являются его расширениями. Данные верхних уровней модели OSI сначала инкапсулируются в PPP, а затем в PPTP или L2TP для туннельной передачи через сети общего доступа.
В Таблице 1 показаны протоколы и соответствующие им уровни модели OSI. PPP, расположенный на канальном уровне, первоначально был разработан для инкапсуляции данных и их доставки по соединениям типа точка-точка. Если организация использует какой-либо тип соединения точка-точка, например линию E1, то, скорее всего, интерфейсы маршрутизатора применяют инкапсуляцию PPP. Этот же протокол служит для организации асинхронных (например, коммутируемых) соединений. В настройках коммутируемого доступа удаленных систем Windows 2000 или Windows 9x обычно указывается подключение к серверу по PPP.
PPP обладает несколькими преимуществами по сравнению со своим старшим собратом Serial Line Internet Protocol (SLIP). В качестве примера можно привести аутентификацию с использованием CHAP и сжатие данных. В набор PPP входят протокол Link Control Protocol (LCP), ответственный за конфигурацию, установку, работу и завершение соединения точка-точка, и протокол Network Control Protocol (NCP), способный инкапсулировать в PPP протоколы сетевого уровня для транспортировки через соединение точка-точка. Это позволяет одновременно передавать пакеты Novell IPX и Microsoft IP по одному соединению PPP.
Безусловно, PPP является важной частью PPTP и L2TP. Благодаря PPP стало возможным использование PPTP и L2TP для выполнения удаленных приложений, зависящих от немаршрутизируемых протоколов. На физическом и канальном уровнях PPTP и L2TP идентичны, но на этом их сходство заканчивается, и начинаются различия.
Туннелирование
Для доставки конфиденциальных данных из одной точки в другую через сети общего пользования сначала производится инкапсуляция данных с помощью протокола PPP, затем протоколы PPTP и L2TP выполняют шифрование данных и собственную инкапсуляцию.
В соответствии с моделью OSI протоколы инкапсулируют блоки данных protocol data unit (PDU) по принципу матрешки: TCP (транспортный уровень) инкапсулируется протоколом IP (сетевой уровень), который затем инкапсулируется PPP (на канальном уровне).
После того как туннельный протокол доставляет пакеты из начальной точки туннеля в конечную, выполняется деинкапсуляция.
Старина PPTP
PPTP инкапсулирует пакеты IP для передачи по IP-сети. Клиенты PPTP используют порт назначения 1723 для создания управляющего туннелем соединения. Этот процесс происходит на транспортном уровне модели OSI. После создания туннеля компьютер-клиент и сервер начинают обмен служебными пакетами.
В дополнение к управляющему соединению PPTP, обеспечивающему работоспособность канала, создается соединение для пересылки по туннелю данных. Инкапсуляция данных перед пересылкой через туннель происходит несколько иначе, чем при обычной передаче (например, при работе telnet). Инкапсуляция данных перед отправкой в туннель включает два этапа. Сначала создается информационная часть PPP. Данные проходят сверху вниз, от прикладного уровня OSI до канального. Затем полученные данные отправляются вверх по модели OSI и инкапсулируются протоколами верхних уровней.
Таким образом, во время второго прохода данные достигают транспортного уровня. Однако информация не может быть отправлена по назначению, так как за это отвечает канальный уровень OSI. Поэтому PPTP шифрует поле полезной нагрузки пакета и берет на себя функции второго уровня, обычно принадлежащие PPP, т. е. добавляет к PPTP-пакету PPP-заголовок (header) и окончание (trailer). На этом создание кадра канального уровня заканчивается. Далее, PPTP инкапсулирует PPP-кадр в пакет Generic Routing Encapsulation (GRE), который принадлежит сетевому уровню. GRE инкапсулирует протоколы сетевого уровня, например IPX, AppleTalk, DECnet, чтобы обеспечить возможность их передачи по IP-сетям. Однако GRE не имеет возможности устанавливать сессии и обеспечивать защиту данных от злоумышленников. Для этого используется способность PPTP создавать соединение для управления туннелем. Применение GRE в качестве метода инкапсуляции ограничивает поле действия PPTP только сетями IP.
После того как кадр PPP был инкапсулирован в кадр с заголовком GRE, выполняется инкапсуляция в кадр с IP-заголовком. IP-заголовок содержит адреса отправителя и получателя пакета. В заключение PPTP добавляет PPP заголовок и окончание. На Рисунке 1 показана структура данных для пересылки по туннелю PPTP.
Рисунок 1. Структура данных для пересылки по туннелю PPTP. |
Система-отправитель посылает данные через туннель. Система-получатель удаляет все служебные заголовки, оставляя только данные PPP.
Новый игрок на поле
L2TP появился в результате объединения протоколов PPTP и Layer 2 Forwarding (L2F). PPTP позволяет передавать через туннель пакеты PPP, а L2F-пакеты SLIP и PPP. Во избежание путаницы и проблем взаимодействия систем на рынке телекоммуникаций, комитет Internet Engineering Task Force (IETF) рекомендовал компании Cisco Systems объединить PPTP и L2F. По общему мнению протокол L2TP вобрал в себя лучшие черты PPTP и L2F.
Главное достоинство L2TP в том, что этот протокол позволяет создавать туннель не только в сетях IP, но и в таких, как ATM, X.25 и frame relay. К сожалению, реализация L2TP в Windows 2000 поддерживает только IP.
L2TP применяет в качестве транспорта протокол UDP и использует одинаковый формат сообщений как для управления туннелем, так и для пересылки данных. L2TP в реализации Microsoft использует в качестве контрольных сообщений пакеты UDP, содержащие шифрованные пакеты PPP. Надежность доставки гарантирует контроль последовательности пакетов. Сообщения L2TP имеют поля Next-Received и Next-Sent. Эти поля выполняют те же функции, что и поля Acknowledgement Number и Sequence Number в протоколе TCP.
Как и в случае с PPTP, L2TP начинает сборку пакета для передачи в туннель с того, что к полю информационных данных PPP добавляется сначала заголовок PPP, затем заголовок L2TP. Полученный таким образом пакет инкапсулируется UDP. Протокол L2TP использует UDP-порт 1701 в качестве порта отправителя и получателя. В зависимости от выбранного типа политики безопасности IPSec, L2TP может шифровать UDP-сообщения и добавлять к ним заголовок и окончание Encapsulating Security Payload (ESP), а также окончание IPSec Authentication. Затем производится инкапсуляция в IP. Добавляется IP-заголовок, содержащий адреса отправителя и получателя. В завершение L2TP выполняет вторую PPP-инкапсуляцию для подготовки данных к передаче. На Pисунке 2 показана структура данных для пересылки по туннелю L2TP.
Компьютер-получатель принимает данные, обрабатывает заголовок и окончание PPP, убирает заголовок IP. При помощи IPSec Authentication проводится аутентификация информационного поля IP, а ESP-заголовок IPSec помогает расшифровать пакет.
Далее компьютер обрабатывает заголовок UDP и использует заголовок L2TP для идентификации туннеля. Пакет PPP теперь содержит только полезные данные, которые обрабатываются или пересылаются указанному получателю.
Безопасность
Обеспечение безопасности является основной функцией VPN. Все данные от компьютеров-клиентов проходят через Internet к VPN-серверу. Такой сервер может находиться на большом расстоянии от клиентского компьютера, и данные на пути к сети организации проходят через оборудование множества провайдеров. Как убедиться, что данные не были прочитаны или изменены? Для этого применяются различные методы аутентификации и шифрования.
Для аутентификации пользователей PPTP может задействовать любой из протоколов, применяемых для PPP, включая Extensible Authentication Protocol (EAP), Microsoft Challenge Handshake Authentication Protocol (MSCHAP) версии 1 и 2, Challenge Handshake Authentication Protocol (CHAP), Shiva Password Authentication Protocol (SPAP) и Password Authentication Protocol (PAP). Лучшими считаются протоколы MSCHAP версии 2 и Transport Layer Security (EAP-TLS), поскольку они обеспечивают взаимную аутентификацию, т. е. VPN-сервер и клиент идентифицируют друг друга. Во всех остальных протоколах только сервер проводит аутентификацию клиентов.
Шифрование с помощью PPTP гарантирует, что никто не сможет получить доступ к данным при пересылке через Internet. Протокол шифрования MPPE (Microsoft Point-to-Point Encryption) совместим только с MSCHAP (версии 1 и 2) и EAP-TLS и умеет автоматически выбирать длину ключа шифрования при согласовании параметров между клиентом и сервером. MPPE поддерживает работу с ключами длиной 40, 56 или 128 бит. Старые операционные системы Windows поддерживают шифрование с длиной ключа только 40 бит, поэтому в смешанной среде Windows следует выбирать минимальную длину ключа.
PPTP изменяет значение ключа шифрации после каждого принятого пакета. Протокол MMPE разрабатывался для каналов связи точка-точка, в которых пакеты передаются последовательно, и потеря данных очень мала. В этой ситуации значение ключа для очередного пакета зависит от результатов дешифрации предыдущего пакета. При построении виртуальных сетей через сети общего доступа эти условия соблюдать невозможно, так как пакеты данных часто приходят к получателю не в той последовательности, в какой были отправлены. Поэтому PPTP использует для изменения ключа шифрования порядковые номера пакетов. Это позволяет выполнять дешифрацию независимо от предыдущих принятых пакетов.
Хотя PPTP обеспечивает достаточную степень безопасности, но все же L2TP поверх IPSec надежнее. L2TP поверх IPSec обеспечивает аутентификацию на уровнях «пользователь» и «компьютер», а также выполняет аутентификацию и шифрование данных.
На первом этапе аутентификации клиентов и серверов VPN, L2TP поверх IPSec использует локальные сертификаты, полученные от службы сертификации. Клиент и сервер обмениваются сертификатами и создают защищенное соединение ESP SA (security association).
После того как L2TP (поверх IPSec) завершает процесс аутентификации компьютера, выполняется аутентификация на уровне пользователя. Для аутентификации можно задействовать любой протокол, даже PAP, передающий имя пользователя и пароль в открытом виде. Это вполне безопасно, так как L2TP поверх IPSec шифрует всю сессию. Однако проведение аутентификации пользователя при помощи MSCHAP, применяющего различные ключи шифрования для аутентификации компьютера и пользователя, может усилить защиту.
L2TP поверх IPSec обеспечивает более высокую степень защиты данных, чем PPTP, так как использует алгоритм шифрования Triple Data Encryption Standard (3DES). 3DES был разработан для защиты особо секретных данных, и его применение разрешено только в Северной Америке. Если столь высокий уровень защиты не нужен, можно использовать алгоритм DES с одним 56-разрядным ключом, что позволяет снизить расходы на шифрование (3DES использует три 56-разрядных ключа).
L2TP поверх IPSec выполняет шифрование данных и аутентификацию на уровнях компьютера и пользователя. Кроме того, при помощи алгоритма Hash Message Authentication Code (HMAC) Message Digest 5 (MD5) L2TP обеспечивает аутентификацию данных. Для аутентификации данных этот алгоритм создает хеш длиной 128 разрядов.
Выбор очевиден
Функциональные возможности PPTP и L2TP различны. L2TP может использоваться не только в IP-сетях, служебные сообщения для создания туннеля и пересылки по нему данных используют одинаковый формат и протоколы. PPTP может применяться только в IP-сетях, и ему необходимо отдельное соединение TCP для создания и использования туннеля. L2TP поверх IPSec предлагает больше уровней безопасности, чем PPTP, и может гарантировать почти 100-процентную безопасность важных для организации данных.
Особенности L2TP делают его очень перспективным протоколом для построения виртуальных сетей. Очень многие IT-специалисты уже сделали выбор в пользу L2TP поверх IPSec. Разработчики Microsoft упростили установку L2TP до нескольких щелчков мышью, так почему бы не попробовать L2TP, тем более что вы уже заплатили за это при покупке лицензии на Windows 2000?
Райан Норман - IT-менеджер в компании Core-change из Бостона. Имеет сертификаты MCSE+I, CCNA, и CCDA. С ним можно связаться по адресу: ryan.norman@corechange.com.