Немного о VPN: Краткий обзор программных реализаций

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

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

Прежде чем перейти к сравнению, обозначим круг задач, которые решает VPN:

  • Адресация пакетов, предназначенных конкретным клиентам.
  • Эффективное и в то же время не слишком жадное до ресурсов шифрование «на лету», исключающее прохождение информации в открытом виде.
  • Аутентификация участников при подключении к сети и проверка источников данных для защиты сети от попадания в нее несанкционированных узлов и пакетов.

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

Однако в наши дни VPN используется и для решения более простых, приземленных задач, что делает не менее важными критериями выбора реализации такие особенности, как ее кроссплатформенность и простота настройки.

Мы будем оценивать гибкость, безопасность, скорость и стабильность работы следующих реализаций:

  • PPTP (Point-to-Point tunneling protocol),
  • IPSec (IP Security),
  • L2TP (Layer 2 Tunneling Protocol) и L2TP+IPSec,
  • OpenVPN,
  • SSTP (Secure Socket Tunneling Protocol).

PPTP (Point-to-Point Tunneling Protocol)

PPTP был создан корпорацией Microsoft и выпущен еще в далеком 1999 году, но, несмотря на солидный возраст, применяется по сей день. Он использует TCP для установления соединения и протокол MPPE (от той же Microsoft) для шифрования передаваемых данных. Аутентификация клиентов, как правило, обеспечивается механизмом MS-CHAPv2.

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

А вот с точки зрения безопасности PPTP себя скомпрометировал – на сегодняшний день в нем обнаружено большое количество уязвимостей как в устройстве протокола MMPE (например изменение исходящего потока RC4), так и в элементе аутентификации MS-CHAP (в 2012 году даже появился онлайн-сервис, подбирающий ключ MS-CHAPv2 за 23 часа). Несмотря на то что последняя проблема решается сменой механизма аутентификации с MS-CHAP на PEAP, сама компания Microsoft теперь рекомендует использовать L2TP или SSTP.

IPsec (IP Security)

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

При создании VPN-сетей транспортный режим IPsec используется в связке с другими реализациями (обычно L2TP), туннельный же сам по себе является методом создания VPN-туннеля.

Шифрование соединения IPsec обеспечивается такими протоколами и алгоритмами, как IKE (Internet Key Exchange Protocol), ISAKMP (Internet Security Association and Key Management Protocol), AH (Authentication Header Protocol), STS (Station-to-Station protocol), SHA-1 (Security Hash Algorithm) и др.

Особенностью IPsec, которая несколько отдаляет его от определения VPN, является то, что он не создает в системе дополнительный виртуальный сетевой адаптер, а использует стандартный внешний интерфейс, да и в целом является даже не реализацией технологии виртуальных частных сетей, а инструментом защиты от подмены передаваемых IP-пакетов. Развертывание же виртуальных туннелей, скорее, его «побочное» свойство.

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

Однако и здесь не обошлось без уязвимостей. Известно, что при работе в транспортном режиме эта реализация может подвергаться атакам, направленным на протокол ISAKMP. Помимо этого, при работе IPsec без заголовков AH, злоумышленник может совершить инъекцию собственных данных в передаваемые пакеты, что, разумеется, будет иметь неблагоприятные последствия для получателя. Также известен способ атаки, при котором подменяется маршрут передачи пакетов. Более того, существует эксплойт, позволяющий расшифровать трафик IPsec через уязвимость в IKE.

L2TP (Layer 2 Tunneling Protocol)

L2TP – это протокол туннелирования для виртуальных частных сетей. Представляет собой симбиоз протокола L2F (Layer 2 Forwarding) от компании Cisco и описанного выше PPTP. Позволяет создавать VPN-сети с разграничением прав доступа, но имеет один недостаток – не шифрует трафик.

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

L2TP/IPsec присутствует во всех современных ОС и легко настраивается со стороны клиента. Однако стоит помнить, что L2TP использует порт UDP 500, который иногда блокируется, если вы находитесь за NAT. В связи с этим может потребоваться дополнительная настройка брандмауэра или роутера (переадресация портов), которая не требуется для решений, использующих стандартный для HTTPS порт TCP 443.

LT2P/IPsec на данный момент считается весьма безопасным решением при использовании таких алгоритмов шифрования, как AES, но поскольку он инкапсулирует данные дважды, то работает несколько медленнее реализаций, использующих SSL (например OpenVPN или SSTP).

С точки зрения стабильности работы L2TP/IPsec заслуживает отличной оценки. Минусом LT2P/IPsec является то, что он использует почти в два раза больше вычислительных ресурсов процессора для обеспечения двойного инкапсулирования.

SSTP (Secure Socket Tunneling Protocol)

Протокол безопасного туннелирования сокетов – еще одно детище Microsoft, представленное с выходом Windows Vista. На сегодняшний день в качестве SSTP-сервера может выступать уже не только Windows Server 2008/2012, но и машина под управлением Linux или RouterOS, хотя в последних случаях это решение нельзя назвать полнофункциональным.

Благодаря поддержке SSL v.3 SSTP может работать без конфигурирования маршрутизатора/межсетевого экрана, а интегрированность в Windows упрощает настройку и обеспечивает стабильную работу. Для шифрования используется стойкий AES.

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

OpenVPN

OpenVPN – это относительно молодая (увидела свет в 2002 году) открытая реализация VPN, распространяемая под лицензией GNU GPL. Безопасность разворачиваемых туннелей здесь обеспечивается библиотекой OpenSSL, которая, в свою очередь, предлагает большой ассортимент инструментов шифрования (Blowfish, AES, Camelia, 3DES, CAST). От выбранного алгоритма зависит скорость работы OpenVPN, но, как правило, эта реализация оказывается быстрее и потребляет меньше ресурсов, чем L2TP/IPsec.

Еще один существенный плюс OpenVPN – возможность проходить через NAT и брандмауэр без их дополнительной конфигурации по стандартному для HTTPS порту TCP 443 благодаря SSL/TLS-инкапсуляции. Предусмотрена и работа по протоколу UDP – именно этот вариант устанавливается по умолчанию.

ТCP обеспечивает лучшую надёжность передачи данных, однако имеет большие задержки по сравнению с UDP, который выигрывает в скорости за счёт отсутствия подтверждения доставки пакетов. При использовании же протокола TCP OpenVPN оказывается самой медленной реализацией из представленных.

В OpenVPN также предусматривается инструмент LZO для сжатия данных. Благодаря широким возможностям конфигурации и поддержке большинства ОС OpenVPN стал очень популярным решением. Единственный нюанс – необходимо устанавливать стороннее ПО.

Гибкость OpenVPN может породить лишь одну проблему – сделать конфигурацию весьма утомительной, однако этот вопрос решается подготовкой преднастроенных установочных клиентских пакетов или, например, использованием OpenVPN Remote Access Server.

Среди наших мануалов вы найдете пошаговые инструкции по базовой настройке OpenVPN-сервера на Ubuntu/Debian, CentOS, Windows. Для развертывания виртуальной частной сети вы можете использовать наш облачный VPS-сервер. В этой реализации также предусмотрен ряд дополнительных возможностей безопасности частной сети. Обзор основных из них вы можете найти в нашей базе знаний.

Заключение

Подведем небольшой итог по материалам статьи. Протокол PPTP стабилен и прост в использовании, но очень уязвим, поэтому подходит для ситуаций, в которых конфиденциальность туннеля не играет особой роли. Если это важно, то всеми преимуществами PPTP обладает связка L2TP+IPsec, но при этом предлагает значительно более высокий уровень безопасности.

IPsec может работать с большим количеством алгоритмов шифрования и аутентификации для VPN, хотя сам по себе является не реализацией технологии виртуальных частных сетей, а стеком протоколов для защиты IP-пакетов при их передаче. При этом IPsec вполне подходит для развертывания virtual private network, «заточенных» на безопасность.

Ранее для этих целей, как правило, IPsec использовался в связке с L2TP, но в наши дни ситуация начинает меняться. В целом широкие возможности IPsec позволяют считать его одним из лучших решений для VPN.

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

SSTP удобен в конфигурации, стабилен и достаточно безопасен, но при этом является продуктом компании Microsoft, потому его работа сильно завязана на ОС Windows. В других системах функциональность SSTP зачастую оказывается не такой привлекательной.

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

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

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

Более надежным и гибким сценарием видится самостоятельная настройка VPN на физическом или виртуальном сервере (VPS/VDS). Например, вы можете создать виртуальную частную сеть OpenVPN по одной из наших пошаговых инструкций (Windows, Linux), используя облачный VPS/VDS сервер от 1cloud.

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

 

P.S. Мы всегда рады поделиться своим опытом разработки IaaS-провайдера 1cloud, поэтому подготовили для вас несколько материалов: