Настраиваем VPN. Часть 1 - Общие вопросы

  • Автор:

vpn-general-issues-000.pngVPN-технологии сегодня прочно вошли в повседневную жизнь и на слуху не только у IT-специалистов, поэтому мы решили обновить ряд старых статей, значительно дополнив и расширив имеющуюся в них информацию. Если десять лет назад VPN был в основном уделом достаточно крупных организаций, сегодня он широко используется повсеместно. В этой статье мы рассмотрим, что такое VPN в 2019 году, какие технологии доступны, в чем их достоинства и недостатки и как это все можно использовать.

Прежде всего определимся с терминологией. VPN (Virtual Private Network, виртуальная частная сеть) - обобщенное название технологий позволяющих обеспечить построение логической (виртуальной) сети поверх физической, чаще всего поверх сети интернет или иных сетей с низким уровнем доверия.

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

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

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

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

PPTP

PPTP (Point-to-Point Tunneling Protocol, туннельный протокол точка-точка) - один из наиболее известных клиент-серверных протоколов, получил широкое распространение благодаря тому, что начиная с Windows 95 OSR2 PPTP-клиент был включен в состав ОС. В настоящее время поддерживается практически всем спектром систем и устройств, включая роутеры и смартфоны (клиент удален из последних версий macOS и iOS).

Технически PPTP использует два сетевых соединения: канал управления, работающий через TCP и использующий порт 1723 и GRE-туннель для передачи данных. Из-за этого могут возникать сложности с использованием в сетях мобильных операторов, проблема с одновременной работой нескольких клиентов из-за NAT и проблема проброса PPTP соединения через NAT.

Еще одним существенным недостатком является низкая безопасность протокола PPTP, что не позволяет строить на нем защищенные виртуальные сети, но широкое распространение и высокая скорость работы делают PPTP популярным там, где безопасность обеспечивается иными методами, либо для доступа в интернет.

L2TP

L2TP (Layer 2 Tunneling Protocol, протокол туннелирования второго уровня) - разработка компаний Сisco и Microsoft, использует для передачи данных и управляющих сообщений единственное UDP соединение на порту 1701, но не содержит никаких встроенных средств защиты информации. L2TP-клиент также встроен во все современные системы и сетевые устройства.

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

Для построения VPN обычно используют L2TP over IPsec (L2TP/IPsec), где IPsec работает в транспортном режиме и шифрует данные L2TP-пакета. При этом L2TP-туннель создается внутри IPsec-канала и для его установления необходимо прежде обеспечить IPsec-соединение между узлами. Это может вызвать сложности при работе в сетях с фильтрацией трафика (гостиничные сети, публичный Wi-Fi и т.д.), вызывает проблемы с пробросом L2TP/IPSec через NAT и работой из-за NAT одновременно нескольких клиентов.

К плюсам L2TP можно отнести высокую распространенность и надежность, IPsec не имеет серьезных уязвимостей и считается очень безопасным. Минус - высокая нагрузка на оборудование и невысокая скорость работы.

SSTP

SSTP (Secure Socket Tunneling Protocol, протокол безопасного туннелирования сокетов) - разработанный компанией Microsoft безопасный VPN-протокол, относится к так называемым SSL VPN, распространен преимущественно в Windows-среде, хотя клиенты доступны в среде многих современных ОС. Также есть сторонние серверные решения, скажем в Mikrotik.

Технически SSTP представляет собой туннельное PPP-соединение внутри HTTPS-сессии на стандартный порт 443. Для стороннего наблюдателя доступны только HTTPS-заголовки, наличия туннеля в трафике остается скрытым. Это позволяет успешно работать в любых сетях, так как HTTPS широко используется для доступа к сайтам и обычно разрешен, снимает проблему с пробросом или работой из-за NAT. Безопасен.

К плюсам можно отнести интеграцию в Windows-среду, безопасность, возможность работы через NAT и брандмауэры. К недостаткам - слабую или недостаточную поддержку со стороны других ОС и сетевых устройств, а также уязвимость к некоторым классическим SSL-атакам, таким как "человек посередине".

OpenVPN

OpenVPN - свободная реализация VPN с открытым исходным кодом. Для защиты соединения также используется SSL, но в отличие от SSTP заголовки OpenVPN отличаются от стандартных HTTPS, что позволяет однозначно определить наличие туннеля. Для передачи данных внутри SSL-канала OpenVPN использует собственный протокол с транспортом UDP, также существует возможность использовать в качестве транспорта TCP, но данное решение является нежелательным из-за высоких накладных расходов.

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

Кроме туннелей, работающих на сетевом уровне (L3) - TUN, OpenVPN позволяет создавать соединения канального (L2) уровня - TAP, позволяя связывать сети на уровне Ethernet. Однако следует помнить, что в этом случае в туннель будет инкапсулироваться широковещательный трафик, а это может привести к повышенной нагрузке на оборудование и снижению скорости соединения.

Несмотря на то, что OpenVPN требует установки дополнительного ПО серверная часть доступна для Windows и UNIX-like систем, а клиентская в том числе и для мобильных устройств. Также поддержка OpenVPN имеется во многих моделях роутеров (часто в ограниченном виде).

К недостаткам можно отнести работу в пользовательском пространстве и некоторую сложность настроек. Скорость внутри OpenVPN туннелей также может быть значительно ниже скорости канала.

Несмотря на это OpenVPN имеет высокую популярность и достаточно широко используется как в корпоративных сетях, так и для доступа в интернет.

GRE туннель

GRE (Generic Routing Encapsulation, общая инкапсуляция маршрутов) - протокол туннелирования разработанный компаний Cisco и предназначен для инкапсуляции любых протоколов сетевого уровня OSI (т.е. не только IP), GRE работает непосредственно поверх IP и не использует порты, не проходит через NAT, номер протокола 47.

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

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

GRE поддерживается в UNIX-like системах, сетевом оборудовании (исключая домашние модели), а также в Windows Server начиная с версии 2016. Данный протокол широко используется в телекоммуникационной сфере и корпоративной среде.

IP-IP туннель

IP-IP (IP over IP) - один из самых простых и имеющий минимальные накладные расходы протокол туннелирования, но в отличие от GRE инкапсулирует только IPv4 unicast трафик. Также является протоколом без сохранения состояния и встроенных механизмов безопасности, обычно используется в паре с IPsec (IP-IP over IPsec). Поддерживается UNIX-like системами и сетевым оборудованием. Как и GRE не использует порты и не проходит через NAT, номер протокола 4.

EoIP туннель

EoIP (Ethernet over IP) - разработанный Mikrotik протокол туннелирования канального уровня (L2), работает на базе протокола GRE инкапсулируя Ethernet кадры в GRE пакеты. Позволяет соединять на канальном уровне удаленные сети (что равносильно прямому соединению патч-кордом между ними) и обеспечивать связь без использования маршрутизации. При этом следует понимать, что такое соединение предполагает прохождение широковещательного трафика, что способно существенно снизить производительность туннеля, особенно на узких каналах или каналах с большими задержками.

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

Первоначально EoIP поддерживался только оборудованием Mikrotik, сегодня его поддержка реализована в оборудовании Zyxel и существуют пакеты для его реализации в среде Linux.

IPsec

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

Заключение

Переписывая данную статью, мы не ставили задачу объять необъятное, рассмотреть все существующие VPN-решения в рамках одной статьи невозможно. Ее назначение - познакомить читателя с основными используемыми сегодня технологиями для построения виртуальных частных сетей. При этом мы намеренно оставили за кадром решения от Cisco или иных "взрослых" производителей, так как их внедрением занимаются профессионалы, которым подобные статьи явно без надобности.

Также мы не стали рассматривать решения без широкой поддержки со стороны производителей сетевого оборудования, хотя там есть достаточно интересные продукты. Например, мультипротокольный сервер SoftEther VPN, который поддерживает L2TP, SSTP, OpenVPN и собственный SSL VPN протокол, имеет широкие сетевые возможности, графический клиент для настройки и администрирования и многие иные "вкусности". Или перспективный WireGuard, который отличается простотой, высокой производительностью и использованием современной криптографии.

Тем не менее, какую именно технологию следует использовать? Все зависит от сферы применения. Если стоит задача связать два офиса с выделенными IP-адресами, то мы порекомендовали бы использовать GRE или IP-IP, если возможность настройки удаленных сетей ограничена, то следует посмотреть в сторону OpenVPN, он также подойдет, если удаленные сети находятся за NAT или не имеют выделенного IP.

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

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

Дополнительные материалы:


  1. Настраиваем VPN сервер. Часть 1 - Общие вопросы
  2. Настраиваем VPN сервер. Часть 2 - Маршрутизация и структура сети
  3. Настраиваем VPN сервер. Часть 3 - PPTP. Платформа Linux
  4. Настраиваем VPN сервер. Часть 4 - PPTP. Платформа Windows
  5. Настраиваем VPN сервер. Часть 5 - L2TP. Платформа Windows
  6. Ubuntu Server. Форвардинг PPTP средствами iptables
  7. Организация VPN каналов между офисами при помощи OpenVPN
  8. Организация каналов между офисами при помощи OpenVPN с дополнительной парольной защитой
  9. Организация VPN каналов между офисами. Маршрутизация
  10. Организация каналов между офисами при помощи OpenVPN на платформе Linux
  11. Почему тормозит OpenVPN? Размер буферов приема и отправки
  12. SSH-туннели на службе системного администратора