Разбираемся в VPN протоколах

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


    о дивный новый мир


    Для начала — немного общих положений о VPN. Сценарии использования VPN могут быть разными, самые популярные их них:


    • построение защищенного канала между двумя или более удаленными сегментами сети (например, между офисами в Москве и Нижнем Новгороде);
    • подключение удаленного работника к корпоративной сети (теперь об этом знает почти каждый офисный сотрудник);
    • виртуальное изменение местоположения с помощью услуг VPN Providers (требует наименьших телодвижений для настройки, однако весь ваш трафик будет проходить через чужой сервер).

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


    Преимущество того или иного протокола VPN зависит от ряда факторов и условий использования:


    Устройства — разные устройства поддерживают разные протоколы.


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


    Производительность — некоторые протоколы обладают бОльшей производительностью, особенно на мобильных устройствах. Другие — более удобны для использования в больших сетях.


    Модель угроз — некоторые протоколы менее безопасны, чем другие, поэтому и злоумышленники могут воздействовать на них по-разному.


    Итак, с общей частью закончили, теперь переходим к подробному описанию и сравнению протоколов.


    PPTP


    Point-to-Point Tunneling Protocol (PPTP) — один из старейших VPN протоколов, используемых до сих пор, изначально был разработан компанией Microsoft.


    PPTP использует два соединения — одно для управления, другое для инкапсуляции данных. Первое работает с использованием TCP, в котором порт сервера 1723. Второе работает с помощью протокола GRE, который является транспортным протоколом (то есть заменой TCP/UDP). Этот факт мешает клиентам, находящимся за NAT, установить подключение с сервером, так как для них установление подключения точка-точка не представляется возможным по умолчанию. Однако, поскольку в протоколе GRE, что использует PPTP (а именно enhanced GRE), есть заголовок Call ID, маршрутизаторы, выполняющие натирование, могут идентифицировать и сопоставить GRE трафик, идущий от клиента локальной сети к внешнему серверу и наоборот. Это дает возможность клиентам за NAT установить подключение point-to-point и пользоваться протоколом GRE. Данная технология называется VPN PassTrough. Она поддерживается большим количеством современного клиентского сетевого оборудования.


    PPTP поддерживается нативно на всех версиях Windows и большинстве других операционных систем. Несмотря на относительно высокую скорость, PPTP не слишком надежен: после обрыва соединения он не восстанавливается так же быстро, как, например, OpenVPN.


    В настоящее время PPTP по существу устарел и Microsoft советует пользоваться другими VPN решениями. Мы также не советуем выбирать PPTP, если для вас важна безопасность и конфиденциальность.


    Конечно, если вы просто используете VPN для разблокировки контента, PPTP имеет место быть, однако, повторимся: есть более безопасные варианты, на которые стоит обратить внимание.


    SSTP


    Secure Socket Tunneling Protocol (SSTP) — проприетарный продукт от Microsoft. Как и PPTP, SSTP не очень широко используется в индустрии VPN, но, в отличие от PPTP, у него не диагностированы серьезные проблемы с безопасностью.


    SSTP отправляет трафик по SSL через TCP-порт 443. Это делает его полезным для использования в ограниченных сетевых ситуациях, например, если вам нужен VPN для Китая. Несмотря на то, что SSTP также доступен и на Linux, RouterOS и SEIL, по большей части он все равно используется Windows-системами.


    С точки зрения производительности SSTP работает быстро, стабильно и безопасно. К сожалению, очень немногие VPN провайдеры поддерживают SSTP.


    SSTP может выручить, если блокируются другие VPN протоколы, но опять-таки OpenVPN будет лучшим выбором (если он доступен).


    IPsec


    Internet Protocol Security (IPsec) — это набор протоколов для обеспечения защиты данных, передаваемых по IP-сети. В отличие от SSL, который работает на прикладном уровне, IPsec работает на сетевом уровне и может использоваться нативно со многими операционными системами, что позволяет использовать его без сторонних приложений (в отличие от OpenVPN).


    IPsec стал очень популярным протоколом для использования в паре с L2TP или IKEv2, о чем мы поговорим ниже.


    IPsec шифрует весь IP-пакет, используя:


    • Authentication Header (AH), который ставит цифровую подпись на каждом пакете;
    • Encapsulating Security Protocol (ESP), который обеспечивает конфиденциальность, целостность и аутентификацию пакета при передаче.

    Обсуждение IPsec было бы неполным без упоминания утечки презентации Агентства Национальной Безопасности США, в которой обсуждаются протоколы IPsec (L2TP и IKE). Трудно прийти к однозначным выводам на основании расплывчатых ссылок в этой презентации, но если модель угроз для вашей системы включает целевое наблюдение со стороны любопытных зарубежных коллег, это повод рассмотреть другие варианты. И все же протоколы IPsec еще считаются безопасными, если они реализованы должным образом.


    Теперь мы рассмотрим, как IPsec используется в паре с L2TP и IKEv2.


    L2TP/IPsec


    Layer 2 Tunneling Protocol (L2TP) был впервые предложен в 1999 году в качестве обновления протоколов L2F (Cisco) и PPTP (Microsoft). Поскольку L2TP сам по себе не обеспечивает шифрование или аутентификацию, часто с ним используется IPsec. L2TP в паре с IPsec поддерживается многими операционными системами, стандартизирован в RFC 3193.


    L2TP/IPsec считается безопасным и не имеет серьезных выявленных проблем (гораздо безопаснее, чем PPTP). L2TP/IPsec может использовать шифрование 3DES или AES, хотя, учитывая, что 3DES в настоящее время считается слабым шифром, он используется редко.


    У протокола L2TP иногда возникают проблемы из-за использования по умолчанию UDP-порта 500, который, как известно, блокируется некоторыми брандмауэрами.


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


    IKEv2/IPsec


    Internet Key Exchange version 2 (IKEv2) является протоколом IPsec, используемым для выполнения взаимной аутентификации, создания и обслуживания Security Associations (SA), стандартизован в RFC 7296. Так же защищен IPsec, как и L2TP, что может говорить об их одинаковом уровне безопасности. Хотя IKEv2 был разработан Microsoft совместно с Cisco, существуют реализации протокола с открытым исходным кодом (например, OpenIKEv2, Openswan и strongSwan).


    Благодаря поддержке Mobility and Multi-homing Protocol (MOBIKE) IKEv2 очень устойчив к смене сетей. Это делает IKEv2 отличным выбором для пользователей смартфонов, которые регулярно переключаются между домашним Wi-Fi и мобильным соединением или перемещаются между точками доступа.


    IKEv2/IPsec может использовать ряд различных криптографических алгоритмов, включая AES, Blowfish и Camellia, в том числе с 256-битными ключами.


    IKEv2 поддерживает Perfect Forward Secrecy.


    Во многих случаях IKEv2 быстрее OpenVPN, так как он менее ресурсоемкий. С точки зрения производительности IKEv2 может быть лучшим вариантом для мобильных пользователей, потому как он хорошо переустанавливает соединения. IKEv2 нативно поддерживается на Windows 7+, Mac OS 10.11+, iOS, а также на некоторых Android-устройствах.


    OpenVPN


    OpenVPN — это универсальный протокол VPN с открытым исходным кодом, разработанный компанией OpenVPN Technologies. На сегодняшний день это, пожалуй, самый популярный протокол VPN. Будучи открытым стандартом, он прошел не одну независимую экспертизу безопасности.


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


    Для работы OpenVPN нужно специальное клиентское программное обеспечение, а не то, которое работает из коробки. Большинство VPN-сервисов создают свои приложения для работы с OpenVPN, которые можно использовать в разных операционных системах и устройствах. Протокол может работать на любом из портов TCP и UPD и может использоваться на всех основных платформах через сторонние клиенты: Windows, Mac OS, Linux, Apple iOS, Android.


    Но если он не подходит для вашей ситуации, стоит обратить внимание на альтернативные решения.


    WireGuard


    Самый новый и неизведанный протокол VPN — WireGuard. Позиционируется разработчиками как замена IPsec и OpenVPN для большинства случаев их использования, будучи при этом более безопасным, более производительным и простым в использовании.



    Все IP-пакеты, приходящие на WireGuard интерфейс, инкапсулируются в UDP и безопасно доставляются другим пирам. WireGuard использует современную криптографию:


    • Curve25519 для обмена ключами,
    • ChaCha20 для шифрования,
    • Poly1305 для аутентификации данных,
    • SipHash для ключей хеш-таблицы,
    • BLAKE2 для хеширования.

    Код WireGuard выглядит куда скромнее и проще, чем код OpenVPN, в результате чего его проще исследовать на уязвимости (4 тысячи строк кода против нескольких сотен тысяч). Также многие отмечают, что его гораздо легче развернуть и настроить.


    Результаты тестов производительности можно увидеть на официальном сайте (как не сложно догадаться, они хороши). Стоит отметить, что лучшие результаты WireGuard покажет на Linux системах, т.к. там он реализован в виде модуля ядра.


    Совсем недавно был представлен WireGuard 1.0.0, который отметил собой поставку компонентов WireGuard в основном составе ядра Linux 5.6. Включенный в состав ядра Linux код прошел дополнительный аудит безопасности, выполненный независимой фирмой, который не выявил каких-либо проблем. Для многих это отличные новости, но сможет ли WireGuard стать достойной заменой IPsec и OpenVPN покажет время и независимые исследования безопасности.


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


    PPTP SSTP L2TP/IPsec IKEv2/IPsec OpenVPN WireGuard
    Компания-разработчик Microsoft Microsoft L2TP — совместная разработка Cisco и Microsoft, IPsec — The Internet Engineering Task Force IKEv2 — совместная разработка Cisco и Microsoft, IPsec — The Internet Engineering Task Force OpenVPN Technologies Jason A. Donenfeld
    Лицензия Proprietary Proprietary Proprietary Proprietary, но существуют реализации протокола с открытым исходным кодом GNU GPL GNU GPL
    Развертывание Windows, macOS, iOS, некоторое время GNU/Linux. Работает “из коробки”, не требуя установки дополнительного ПО Windows. Работает “из коробки”, не требуя установки дополнительного ПО Windows,Mac OS X, Linux, iOS, Android. Многие ОС (включая Windows 2000/XP +, Mac OS 10.3+) имеют встроенную поддержку, нет необходимости ставить дополнительное ПО Windows 7+, macOS 10.11+ и большинство мобильных ОС имеют встроенную поддержку Windows, Mac OS, GNU/Linux, Apple iOS, Android и маршрутизаторы. Необходима установка специализированного ПО, поддерживающего работу с данным протоколом Windows, Mac OS, GNU/Linux, Apple iOS, Android. Установить сам WireGuard, а затем настроить по руководству
    Шифрование Использует Microsoft Point-to-Point Encryption (MPPE), который реализует RSA RC4 с максимум 128-битными сеансовыми ключами SSL (шифруются все части, кроме TCP- и SSL-заголовков) 3DES или AES Реализует большое количество криптографических алгоритмов, включая AES, Blowfish, Camellia Использует библиотеку OpenSSL (реализует большинство популярных криптографических стандартов) Обмен ключами по 1-RTT, Curve25519 для ECDH, RFC7539 для ChaCha20 и Poly1305 для аутентификационного шифрования, и BLAKE2s для хеширования
    Порты TCP-порт 1723 TCP-порт 443 UDP-порт 500 для первонач. обмена ключами и UDP-порт 1701 для начальной конфигурации L2TP, UDP-порт 5500 для обхода NAT UDP-порт 500 для первоначального обмена ключами, а UDP-порт 4500 — для обхода NAT Любой UDP- или TCP-порт Любой UDP-порт
    Недостатки безопасности Обладает серьезными уязвимостями. MSCHAP-v2 уязвим для атаки по словарю, а алгоритм RC4 подвергается атаке Bit-flipping Серьезных недостатков безопасности не было выявлено 3DES уязвим для Meet-in-the-middle и Sweet32, но AES не имеет известных уязвимостей. Однако есть мнение, что стандарт IPsec скомпрометирован АНБ США Не удалось найти информации об имеющихся недостатках безопасности, кроме инцидента с утечкой докладов АНБ касательно IPsec Серьезных недостатков безопасности не было выявлено Серьезных недостатков безопасности не было выявлено

    Материал подготовлен совместно с veneramuholovka

    Digital Security
    Безопасность как искусство

    Комментарии 16

      +4

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

        0
        Ничего не изменилось, это же его основа. Во многих местах его не настроить из-за этого, кстати. Например, не получится это сделать в Google Cloud Engine.
          +1
          Нет, как раз «не настроить» не из-за «основы» (1723 TCP), через которую передаются только служебные данные, а из-за GRE, который находится на том же уровне TCP/IP, что и TCP, UDP или ICMP, и через который как раз идут передаваемые данные и та часть служебных, по передаче которых PPP (PPTP это, фактически, модифицированный PPP) производит самодиагностику (незаменимая часть протокола времён Dial-Up)
          Резюмирую: без GRE, который не упомянут в статье, PPTP работать не будет и скорее именно эту часть следует называть основой.
          Справедливости ради, без 1723 TCP PPTP тоже не будет работать
            0
            Я имел ввиду, что основа PPTP в том, что он состоит из двух частей всегда. GRE и control.
            В том же Google Cloud Engine как раз gre невозможно настроить (режется самим гуглом), с управляющим соединением нет проблем. Но PPTP в итоге не заработает.
        0

        Wireguard тоже есть на маршрутизаторах (Openwrt)

          +1
          Более того, с помощью wireguard-go его можно запустить даже на роутерах со старым ядром 2.6, например, Asus AC-68U, куда OpenWRT нельзя поставить из-за недостаточной поддержки Broadcom. Нужна лишь возможность установки пакетов Entware.
            0
            А WireGuard есть на Mikrotik?
              0

              Нет, и вряд ли, в ближайшем будущем, будет.

                0
                Почему нет, там же всего 4т строк адаптировать или переписать с нуля надо Ж)
                  0
                  Нет — потому, что нет. Когда перепишут с нуля всего 4т строк или их адаптируют — тогда будет.
            0
            Internet Key Exchange version 2 (IKEv2) — это туннельный протокол

            Вы хоть сами RFC по ссылке читали?..

              0
              Действительно, некорректная формулировка. Поправили, спасибо.
              +1

              Добавлю, что есть отличная статья на Хабре, иллюстрирующая типы и некоторые виды VPN — Поговорим о VPN-ах? Типы VPN соединений. Масштабирование VPN


              Если бы можно было, то дополнили бы материал схемой с новыми видами VPN и тем, на базе каких underlay и overlay технологиях всё это используется, site-to-site или remote-access, было бы здорово.

                +1

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


                Это одно из важных преимуществ OpenVPN над тем же L2TP.

                  0
                  А просто кроме OpenVPN это никто не поддерживает. Вообще — боле чем странно, что никто не озаботился такой простой опцией, как отдать маршруты клиенту. Так что openvpn по-прежнему вне конкуренции, если надо подключать юзеров. Wireguard — соединять серверную инфраструктуру. SSTP мог бы потеснить openvpn, но… где, где маршрутизация клиенту?! А l2tp+ipsec — традиционные проблемы с натом или зафильтрованными сетями делают проблемным его использование.
                  0
                  Вся статья соткана из ошибок.

                  Point-to-Point Tunneling Protocol (PPTP) — один из старейших VPN протоколов, используемых до сих пор. Работает на TCP-порту 1723, изначально был разработан компанией Microsoft.
                  Как уже выше отметили, в роли транспорта там выступает GRE-туннель, внутри которого идут PPP-кадры. На 1723/tcp только управляющее соединение. Само использование GRE-туннеля имеет серьёзные последствия: из сети с NAT к одному серверу сможет одновременно подключиться только один клиент.

                  С точки зрения производительности SSTP работает быстро, стабильно и безопасно. К сожалению, очень немногие VPN провайдеры поддерживают SSTP.
                  На практике медленнее всех из-за передачи кадров PPP внутри TCP — это приводит к двойным ретрансмитами при потере пакетов.

                  В отличие от SSL, который работает на прикладном уровне, IPsec работает на сетевом уровне и может использоваться нативно со многими операционными системами, что позволяет использовать его без сторонних приложений (в отличие от OpenVPN).
                  IPsec может работать и на сетевом, и на транспортном уровне. Тот же L2TP/IPsec использует IPsec в транспортном режиме.

                  У протокола L2TP иногда возникают проблемы из-за использования по умолчанию UDP-порта 500, который, как известно, блокируется некоторыми брандмауэрами.
                  Порт 500/udp — это порт IKE и относится он к ипсеку, а не к L2TP.

                  Однако L2TP/IPsec инкапсулирует передаваемые данные дважды, что делает его менее эффективным и более медленным, чем другие VPN-протоколы.
                  Однако, практическая скорость будет выше, чем у SSTP или OpenVPN в режиме TCP.

                  По сводной таблице — где-то процентов 25 неточно.

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

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                  Самое читаемое