Вводная информация
Многие из вас используют для своих корпоративных или личных задач VPN и знают, что существует немалое количество реализаций этой технологии. Каждая из них имеет свои плюсы и минусы. Этот пост посвящен краткому сравнительному анализу самых распространенных на сегодняшний день программных решений для создания виртуальных частных сетей. Данная информация, на наш взгляд, может оказаться полезной для кого-то из вас в качестве отправной точки изучения темы Virtual Private Network или для проверки существующих знаний.
Прежде чем перейти к сравнению, обозначим круг задач, решение которых ложится на любую виртуальную частную сеть:- Необходимо маркировать узлы виртуальной сети и осуществлять корректную адресацию пакетов, предназначенных конкретным клиентам.
- Чтобы сохранить конфиденциальность передаваемых по сети данных, требуется эффективное и, в то же время, не слишком жадное до ресурсов шифрование «на лету», а также полное исключение прохождения информации в открытом виде.
- Для обеспечения целостности VPN также необходимы аутентификация участников при подключении к сети и проверка источников данных для защиты сети от попадания в нее несанкционированных узлов и пакетов.
Для выполнения этих задач различные типы VPN используют разные протоколы и инструменты, качество сочетания которых и позволяет оценить эффективность той или иной реализации Virtual Private Network.
Для оценки реализаций технологии виртуальных частных сетей мы принимаем во внимание показатели их безопасности, скорости и стабильности работы. В наши дни не менее важными параметрами стали и такие, как кроссплатформенность и простота конфигурации.
Сравнивать мы будем:
- PPTP (Point-to-Point tunneling protocol)
- IPSec (IP Security)
- L2TP (Layer 2 Tunneling Protocol) и L2TP+IPSec
- SSTP (Secure Socket Tunneling Protocol)
- OpenVPN
PPTP (Point-to-Point tunneling protocol)
PPTP(Point-to-Point Tunneling Protocol) был создан корпорацией Microsoft и опубликован еще в далеком 1999-м году, но активно используется по сей день, несмотря на солидный возраст. Использует TCP для соединения и протокол MPPE от той же Microsoft для шифрования. Аутентификация клиентов,как правило, обеспечивается механизмом MS-CHAPv2.
Распространенность PPTP VPN связана с простотой настройки и кроссплатформенностью – его поддержка встроена в большинство современных операционных систем, включая мобильные и роутерные, по умолчанию. Еще одна причина популярности этого решения – минимальная нагрузка на вычислительные ресурсы и, следовательно, высокая скорость работы. Стабильность PPTP также не вызывает сомнений.
С точки зрения безопасности PPTP достаточно давно скомпрометировал себя. На сегодняшний день в нем обнаружено большое количество уязвимостей, относящихся и к устройству протокола MMPE (напр., изменение исходящего потока RC4), и к элементу аутентификации MS-CHAP (в 2012 году даже появился онлайн-сервис, подбирающий MS-CHAPv2 ключ за 23 часа). Несмотря на то, что последняя проблема решается сменой механизма аутентификации с MS-CHAP на PEAP , сама компания Microsoft теперь рекомендует использовать L2TP или SSTP.
IPSec (IP Security)
IPsec (IP Security) представляет собой группу протоколов, обеспечивающих конфиденциальность данных, передаваемых через IP-сети, путем проверки их подлинности и целостности, а также шифрования передаваемых пакетов. IPsec может работать в транспортном и туннельном режимах. Если в первом случае шифруются только данные передаваемого пакета, а исходный заголовок сохраняется, то во втором шифруется весь передаваемый трафик, который затем инкапсулируется в поле данных нового IP-пакета. Транспортный режим IPsec применительно к созданию VPN-сетей используется в связке с другими реализациями (обычно 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)
- HMAC (Hash Message Authentication Code)
- MD5 (Message Digest 5)
- 3DES (Triple Data Encryption Standart)
- AES (Advanced Encryption Standart)
- XAUTH (Extended Authentication)
- ESP (Encapsulating Security Payload Protocol)
- SHA-1 (Security Hash Algorithm)
Отличительной особенностью IPsec, которая несколько отдаляет его от определения «VPN» является то, что он не создает в системе дополнительный виртуальный сетевой адаптер, а использует стандартный внешний интерфейс. В целом, IPsec является даже не реализацией технологии виртуальных частных сетей, а инструментом защиты от подмены передаваемых IP-пакетов. Развертывание же виртуальных туннелей – скорее «побочное» свойство этого стека протоколов.
IPsec поддерживается всеми современными операционными системами (серверными, настольными, мобильными) а также рядом роутеров, причем при настройке VPN на последних отпадает необходимость каких либо манипуляций на клиентах, находящихся за этими роутерами.
Благодаря вышеописанным характеристикам IPsec считается одним из лучших решений для применения в сетях VPN.
Конечно, и здесь не обошлось без уязвимостей. Известно, что при работе в транспортном режиме IPsec может подвергаться атакам, направленным на протокол ISAKMP. Помимо этого, при работе IPsec без заголовков AH атакующий может совершить инъекцию собственных данных в передаваемые пакеты. Также известен способ атаки, при котором подменяется маршрут передачи пакетов (актуально для транспортного режима IPSec «в чистом виде»). В последнее время стало известно о новом эксплойте , позволяющем расшифровать IPsec-трафик через уязвимость в IKE.
L2TP (Layer 2 Tunneling Protocol) и L2TP+IPSec
L2TP(Layer 2 Tunneling Protocol) — протокол туннелирования для виртуальных частных сетей. Представляет собой симбиоз протокола L2F (Layer 2 Forwarding) компании Cisco и описанного выше PPTP. Позволяет создавать VPN-сети с разграничением прав доступа, но имеет один недостаток - не шифрует трафик. Этот протокол берет на себя ответственность за конфиденциальность и целостность L2TP-пакетов внутри туннеля, и при этом требует обеспечения шифрования и аутентификации для всего трафика, проходящего через него, на пакетном уровне. Для этой задачи, как правило, используется IPsec.
Связка L2TP/IPsec также присутствует во всех сегодняшних ОС, и настраивается со стороны клиента не сложнее, чем PPTP. Единственное, что может усложнить конфигурацию – L2TP использует, в том числе UDP-порт 500, который иногда блокируется, если вы находитесь за NAT. Поэтому может потребоваться дополнительная настройка firewall или роутера (переадресация портов), которая не требуется для решений, использующих стандартный для HTTPS порт TCP 443.
LT2P/IPsec на данный момент считается весьма безопасным решением при использовании таких алгоритмов шифрования, как AES. Однако, поскольку он инкапсулирует данные дважды, то работает несколько медленнее реализаций, использующих SSL (напр., OpenVPN или SSTP).
С точки зрения стабильности работы L2TP/IPsec заслуживает отличной оценки.
Минусом LT2P/IPsec (если кого-то в наше время беспокоят такие параметры) является то, что он использует почти в два раза больше ресурсов CPU для обеспечения двойного инкапсулирования.
SSTP (Secure Socket Tunneling Protocol)
SSTP (Протокол безопасного туннелирования сокетов (Secure Socket Tunneling Protocol) – еще одно детище Microsoft, представленное с выходом Windows Vista. На сегодняшний день в качестве SSTP-сервера может выступать уже не только Windows Server 2008/2012, но и машина под управлением Linux или RouterOS. Но в последних случаях это решение нельзя назвать полнофункциональным. Благодаря поддержке SSL v.3, SSTP может работать без конфигурации маршрутизатора/межсетевого экрана, а интегрированность в Windows упрощает настройку и обеспечивает стабильную работу. Для шифрования используется стойкий AES (до 256 бит шифрование с сертификатами до 2048-бит).
При том, что SSTP имеет множество плюсов и является молодой развивающейся технологией, на данный момент, это решение является действительно подходящим для Windows-сетей – в иных случаях можно столкнуться с ограничениями.
OpenVPN
OpenVPN – относительно молодая (увидела свет в 2002 году) open-source реализация VPN, распространяемая под лицензией GNU GPL. Безопасность разворачиваемых туннелей здесь обеспечивается библиотекой OpenSSL , которая предлагает большой ассортимент открытых инструментов шифрования (Blowfish, AES, Camelia, 3DES, CAST и т.д.). От выбранного алгоритма зависит и скорость работы OpenVPN. Как правило, эта реализация оказывается быстрее и скромнее в нагрузке на аппратные ресурсы сравнительно с L2TP/IPsec.
Еще один существенный плюс OpenVPN – возможность проходить через NAT и Firewall без их дополнительной конфигурации по стандартному для HTTPS порту TCP 443 благодаря SSL/TLS-инкапсуляции. Предусмотрена и работа по протоколу UDP – именно этот вариант установлен в конфигурации по умолчанию. ТCP обеспечивает высокую надёжность передачи данных, однако имеет большие задержки по сравнению с UDP, который выигрывает в скорости за счёт отсутствия подтверждения доставки пакетов. При использовании же протокола TCP OpenVPN оказывается самым медленным участником нашего обзора.
В OpenVPN также используется инструмент LZO для сжатия данных.
Благодаря широким возможностям конфигурации и поддержке большинства ОС, OpenVPN стал очень популярным продуктом. Единственный нюанс – необходимость установки стороннего ПО, хотя и достаточного ненавязчивого. В нашей базе знаний представлены пошаговые инструкции по конфигурации OpenVPN-сервера на Ubuntu/Debian, CentOS, Windows . Для развертывания виртуальной частной сети вы можете использовать наш облачный VPS-сервер .
В этой реализации также предусмотрен ряд дополнительных возможностей безопасности частной сети. Обзор основных из них вы также можете найти в нашей базе знаний.
Гибкость OpenVPN может породить лишь одну проблему – сделать конфигурацию весьма утомительной. Но эта проблема может быть решена через подготовку преднастроенных установочных клиентских пакетов или через использование OpenVPN Remote Access Server .
Заключение
Выбор подходящей реализации VPN зависит от ваших конкретных задач. Ниже приведены основные тезисы представленного выше краткого обзора, призванные помочь в этом выборе.
Протокол PPTP стабилен и прост в использовании, но в наши дни очень уязвим с точки зрения безопасности, поэтому подходит для ситуаций, в которых конфиденциальность туннеля не играет решающего значения. Хотя и в этом случае все преимущества PPTP можно найти и в IPsec или L2TP+IPsec, будь то кроссплатформенность или порог вхождения в конфигурацию для администратора. При этом, LT2P/IPsec предлагает значительно более высокий уровень безопасности.
IPsec может работать с большим количеством алгоритмов шифрования и аутентификации для VPN, хотя сам по себе является не реализацией технологии виртуальных частных сетей, а стеком протоколов для защиты IP-пакетов при их передаче. При этом IPsec вполне подходит для развертывания VPN, «заточенных» на безопасность. Обычно для этих целей IPsec используется в связке с L2TP, но в последнее время наблюдаются некоторые перемены в этой практике. В целом, широкие возможности IPsec позволяют считать его одним из лучших решений для VPN.
L2TP в связке с IPsec является хорошим решением и с точки зрения безопасности, и в плане совместимости с популярными ОС. Может также потребоваться дополнительная настройка роутера/firewall на разрешение используемых LT2P/IPsec портов (UDP 1701, UDP 4500, UDP 500). Второй минус – двойная инкапсуляция, приводящая к замедлению работы туннеля.
Протокол SSTP удобен в конфигурации, стабилен и достаточно безопасен, но его существенный недостаток лежит в аспекте кроссплатформенности – данная реализация сильно привязана к системам, предлагаемым Microsoft. При работе на альтернативных платформах функциональность SSTP обычно оказывается не такой привлекательной.
OpenVPN можно назвать оптимальным выбором для большинства стандартных пользовательских задач. В этой реализации сбалансированы:
- Скорость: за счет сжатия LZO и возможности работы по протоколу UDP
- Стабильность: особенно при работе через TCP
- Гибкость конфигурации: предусмотрены дополнительные опции, например, балансировка нагрузки, различные типы аутентификации
- Кроссплатформенность: наличие клиентских приложений для большинства современных ОС, в т.ч. мобильных
- Безопасность: благодаря работе со всеми инструментами библиотеки openssl
Сами перечисленные выше широкие возможности порождают и недостаток OpenVPN – первичная конфигурация может оказаться сложнее, чем в случае с другими реализациями. Хотя эта проблема отчасти устраняется возможностью быстро развернуть сервер виртуальной частной сети из стандартной конфигурации, наличием таких решений как OpenVPN Remote Access Server для создания VPN «из коробки», и возможностью сервера передавать существенную часть параметров подключения клиентам без их указания в клиентской конфигурации вручную.
Так или иначе, реализация OpenVPN видится нам самым сбалансированным решением, хотя с точки зрения безопасности она, возможно, может конкурировать с IPsec/L2TP.
Для внедрения VPN в свою инфраструктуру вы можете использовать услуги многочисленных VPN-провайдеров. Но, во-первых, такое решение обычно обходится недешево, особенно при необходимости подключения к сети большого количества клиентов. Во-вторых, при таком подходе вы доверяете выбранному провайдеру свои корпоративные или личные данные, ведь большая часть трафика (по крайней мере, открытого) для него прозрачна.
Более надежным и гибким сценарием является самостоятельная настройка VPN на физическом или виртуальном сервере (VPS/VDS) . Например, вы можете создать виртуальную частную сеть OpenVPN по одной из наших пошаговых инструкций (Windows, Linux), используя облачный VPS/VDS сервер от 1cloud. Для этой задачи будет достаточно минимальной аппаратной конфигурации сервера, а стоимость оборудования в месяц ниже, чем средняя по рынку цена готовых услуг по предоставлению VPN для нескольких устройств. К тому же, собственное решение в любой момент масштабируется под текущую нагрузку на виртуальную частную сеть.
В качестве заключающего комментария отметим, 1cloud.ru предлагает к использованию готовую реализацию виртуальных сетей (VLAN) для арендуемых у нас серверов. Сеть между машинами создается прямо в панели управления или через API в несколько шагов, что исключает необходимость вникать в конфигурацию VPN, если ваша задача – просто сгруппировать несколько серверов в VLAN и, возможно, отключить доступ извне к некоторым из них. Скорость наших частных сетей – 1Гбит/с, а их использование бесплатно.