IPSec — протокол защиты сетевого трафика на IP-уровне

By admin Дек 18, 2020

Что такое VPN

Virtual Private Network (Частная Виртуальная Сеть) — это расширение для публичной сети, позволяющее имитировать еще одну сеть поверх уже существующей, к которой может подключаться ограниченное количество устройств.

Обычно «виртуальное» подключение формируется между локальным компьютером и сервером. После этого подключенные системы получают преимущества приватной сети. Уровень доверия к ней многократно возрастает благодаря используемым механизмам защиты трафика. И это несмотря на низкий уровень доверия к сети, на базе которой строится VPN. После подключения к VPN можно управлять защищенными файлами, доступными только для членов сети, скрывать исходящий трафик и шифровать его.

Основные сценарии использования VPN

  • Изначально VPN разрабатывалась для офисов и крупных корпораций, чтобы сотрудники могли подключаться к корпоративной сети и работать удаленно, используя мобильные устройства и домашние компьютеры. Их защищают с помощью технологий туннелинга.
  • Потом эти возможности начали использоваться для обхода разного рода блокировок. Например, региональные ограничения от сервисов в духе Pandora, Hulu, Amazon и Tidal. Или блокировки со стороны государства, запрещающие посещать те или иные ресурсы в связи с действующим законодательством.
  • Также с помощью VPN строятся защищенные каналы связи между удаленными офисами. Например, если штаб-квартира компании находится в Лондоне, а один из филиалов в Уэльсе, то для их безопасного (защищенного от вмешательства третьих лиц) обмена данными потребуется VPN.

Что такое VPN-протокол?

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

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

На какие критерии оценки VPN-протоколов стоит обратить внимание

У каждого протокола свой набор характеристик, исходя из которых нужно выбирать для себя подходящий. Среди них:

  • Поддерживаемые платформы — протоколы могут быть достаточно специфичны и функционировать исключительно на одной-двух операционных системах. Другие же поддерживают сразу все доступные ОС.
  • Поддерживаемые сети — не все протоколы работают в идентичных сетях. Некоторые VPN-сервисы предлагают свои услуги только в конкретных странах ввиду технологических ограничений, введенных, в том числе, государственными органами.
  • Скорость работы — тоже зависит от архитектуры протокола. Есть те, что быстрее передают данные на мобильных устройствах. Есть те, что показывают пиковую производительность только в масштабах больших корпоративных сетей.
  • Безопасность — в протоколах по-разному реализовано шифрование и другие механизмы обеспечения безопасности данных. Поэтому, в зависимости от поставленных задач, надо выбирать технологию, наименее подверженную распространенным для нее атакам.

Теперь от общего описания форматов и характеристик перейдем к конкретным технологическим решениям и к их особенностям.

Кратко о существующих протоколах

Для начала кратко пробежимся по протоколам, которые будем рассматривать в статье.

  • OpenVPN — сбалансированный вариант. Он быстрее остальных и гораздо меньше подвержен атакам со стороны злоумышленников. Топовые VPN-сервисы базируют свои продукты на основе этого протокола.
  • L2TP/IPsec во многом похож на OpenVPN. В меру быстрый, в меру безопасный. Но это «в меру» как раз все портит. Это не значит, что его стоит бояться или он как-то серьезно подвергает опасности вашу конфиденциальность в сети. Для некритичных задач его хватит с головой. Но надо иметь в виду, что этот протокол уступает по безопасности OpenVPN. В текущей ситуации нужен как альтернатива на случай, когда более подходящий протокол недоступен.
  • IKEv2/IPsec — альтернатива вышеперечисленным протоколам, адаптированная под работу на мобильных устройствах. Ее преимущество заключается в возможности быстро переподключиться к сети после потери сигнала. Такое может происходить на нулевых этажах торговых центров, в туннелях, метро и других местах с недостаточной «проницаемостью». IKEv2 скоростной, но работает не на всех платформах и сложен в настройке.
  • SSTP разработан компанией Microsoft и работает только с ее программным обеспечением. Настроить его в сторонних операционных системах чересчур сложно, да и не все хотят иметь дело с технологическими корпорациями в таком вопросе, как VPN. Если же причастность Microsoft не смущает, и на компьютере установлена Windows, то это будет сносным выбором.
  • PPTP — еще один продукт. Устаревший протокол, который больше не используется глобально. Пригодится только за отсутствием альтернатив.
  • WireGuard — перспективная новинка, во много схожая с OpenVPN, но обгоняющая его по всем параметрам (от скорости передачи файлов до изощренности методов шифрования).
  • SoftEther — еще один современный стандарт VPN. Быстрый, отказоустойчивый, обеспечивающий хорошее шифрование.

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

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 имеет высокую популярность и достаточно широко используется как в корпоративных сетях, так и для доступа в интернет.

PPTP

Про­токол PPTP (Point to Point Tunneling Protocol) ока­зал­ся на зад­ворках впол­не спра­вед­ливо. Хочет­ся верить, что молодые читате­ли с ним уже не стал­кивались, но лет десять назад он был хрес­томатий­ным при­мером незас­лужен­но популяр­ного про­токо­ла.

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

Microsoft не была бы самой собой, если бы не вос­поль­зовалась этим для сох­ранения и укрепле­ния сво­его монополь­ного положе­ния. Про­токол PPTP исполь­зовал стан­дар­тные PPP и GRE для переда­чи дан­ных, но для аутен­тифика­ции и шиф­рования при­менял­ся нес­тандар­тный, патен­тован­ный набор про­токо­лов: MPPE (Microsoft Point-to-Point Encryption) и MS-CHAP.

Из‑за это­го сво­бод­ные реали­зации что кли­ента, что сер­вера PPTP были в свое вре­мя такой же боль­ной темой, как GIF и MP3. Затем срок дей­ствия патен­тов истек, poptop для Linux и MPD для FreeBSD ста­ли популяр­ными аль­тер­натива­ми проп­риетар­ным про­дук­там.

Од­нако пре­дуп­режде­ния о проб­лемах безопас­ности самодель­ной крип­тогра­фии не были бес­почвен­ными. Оцен­ки стой­кос­ти MMPE и MS-CHAP неод­нократ­но сни­жались, и в 2012 году про­токол был дис­кре­дити­рован окон­чатель­но: иссле­дова­тели доказа­ли, что стой­кость MS-CHAP-v2 не луч­ше DES. Пос­ле это­го вос­при­нимать PPTP как безопас­ный про­токол ста­ло невоз­можно, и он быс­тро потерял пос­ледние остатки популяр­ности.

Стоит ли использовать PPTP?

Оче­вид­но, катего­ричес­ки не рекомен­дует­ся.

SSTP

SSTP (Secure Socket Tunneling Protocol) — вто­рая попыт­ка Microsoft соз­дать собс­твен­ный про­токол для VPN. В этот раз они не ста­ли изоб­ретать свои крип­тогра­фичес­кие алго­рит­мы, а исполь­зовали стан­дар­тный SSL/TLS. Они так­же боль­ше не пре­пятс­тву­ют соз­данию сво­бод­ных реали­заций.

SSTP пред­став­ляет собой PPP поверх HTTPS. Оче­вид­ное пре­иму­щес­тво — он отлично про­ходит через NAT и теоре­тичес­ки даже через прок­си. Пре­иму­щес­тво далеко не уни­каль­ное, OpenVPN умел работать поверх TCP/443 задол­го до это­го.

OpenVPN, впро­чем, не прос­то так по умол­чанию исполь­зует UDP, а не TCP. У тун­нелей поверх TCP наб­люда­ются серь­езные проб­лемы с про­изво­дитель­ностью — на одном и том же железе они могут быть в десят­ки раз мед­леннее.

В Windows, оче­вид­но, есть встро­енный кли­ент — начиная с Windows Vista. Для Linux есть реали­зации кли­ента и пла­гины к NetworkManager. Есть и сто­рон­ние кли­енты для macOS, нап­ример EasySSTP. Для мобиль­ных устрой­ств тоже при­дет­ся искать и ста­вить сто­рон­ние при­ложе­ния.

Ес­ли нуж­но раз­вернуть сер­вер SSTP, из сво­бод­ных про­ектов его под­держи­вают accel-pppd и SoftEther.

Стоит ли использовать SSTP?

Раз­ве что если вынуж­дает кор­поратив­ная полити­ка.

IPsec

Internet Protocol Security представляет собой не одну технологию, а набор протоколов. Каждый из них помогает обеспечить безопасность информации, передаваемой по IP-сети. По сути, они не создавались для организации VPN-соединений, это одно из нескольких применений.

Прелесть IPsec заключается в его упрощенной настройке. Благодаря своей архитектуре и работе на сетевом уровне не возникает потребности в подключении сторонних клиентов. VPN на базе Internet Protocol Security можно «поднять» во всех операционных системах встроенными средствами – через параметры ОС. Это его главное преимущество над OpenVPN.

Безопасность IPsec достигается за счет работы двух механизмов.

  1. Authentication Header – ставит цифровую подпись каждой единице данных, передаваемой через VPN-соединение.
  2. Encapsulating Security Protocol – защищает целостность передаваемой информации и конфиденциальность пользователей протокола.

IPsec используется в тандеме с другими техническими решениями. Зачастую речь идет о комбинировании технологий IPsec и L2TP или об IPsec + IKEv2.

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 не имеет серьезных уязвимостей и считается очень безопасным. Минус — высокая нагрузка на оборудование и невысокая скорость работы.

IPsec/IKEv2

Разработан командой разработчиков из Microsoft и Cisco, но имеет несколько вариаций с открытым исходным кодом, написанных независимыми программистами. IKEv2 хорош наличием поддержки Mobility and Multi-homing Protocol. Это делает его устойчивым к смене сетей, это поможет владельцам смартфонам оставаться на связи даже при выходе в сеть через VPN. Подключение к VPN-серверу не обрывается при смене роутера, к которому подключен гаджет или смене точки доступа во время поездок.

IKEv2 поддерживает методы шифрования AES, Blowfish и Camellia. В этом плане он не отличается от L2TP. Так что уровень защищенности от атак извне у них идентичный. Также он потребляет меньше ресурсов, чем условный OpenVPN, и от этого демонстрирует более высокую скорость передачи данных. По умолчанию поддерживается в Windows 7 и новее, в macOS Lion и новее, в iOS и в ряде смартфонов на базе Android.

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. Данный протокол широко используется в телекоммуникационной сфере и корпоративной среде.

WireGuard

Новое поколение VPN-протоколов. Разработчики называют его ускоренной, надежной и простой в управлении альтернативой OpenVPN и другим используемым технологиям. Какого-то конкретного мнения по поводу WireGuard пока выражено не было.

Известно, что в его основе лежит ворох технологий шифрования, бережно оберегающих каждый байт отправляемых данных. Используются Curve25519, ChaCha20, SipHash, BLAKE2 и Poly1305. Причем каждый из перечисленных типов криптографии берет на себя конкретную задачу. Допустим, Curve25519 необходим для обмена ключами, BLAKE2 занимается хэшированием информации, а Poly1305 задействуется для аутентификации.

WireGuard легковесный – он состоит всего из четырех тысяч строк кода. Поэтому разработчики при желании могут быстро его исследовать, проанализировать и даже поменять что-то. Это открытый стандарт, как и OpenVPN. Эта легковесность распространяется и на пользовательский опыт – люди охотно отмечают, что настроить WireGuard легче, чем остальные протоколы.

По результатом бенчмарков, WireGuard обгоняет лидеров рынка. Разрыв между WG и OpenVPN впечатляет. 1011 Мбит в секунду против 258 Мбит в секунду соответственно. С IPsec разница не такая большая, но она есть, и как раз в пользу WireGuard.

SoftEther

Недавняя разработка из Цукубского университета. Кроссплатформенный японский VPN-проект, который бок о бок с WireGuard стремится выйти на первые позиции, обойдя OpenVPN.

Хорош совместимостью с другими VPN-технологиями. Может работать в комбинациях с IPsec, EtherIP, L2TP. Из дополнительных функций предлагает: динамический DNS, встроенный фильтр пакетов, удобную панель управления и контроль над RPC через HTTPS. А еще он без проблем обходит чересчур бдительные брандмауэры, мешающие нормальной работе сети даже в безопасных условиях.

На SoftEther можно легко перебраться с OpenVPN за счет глубокой интеграции двух сервисов и функции клонирования в японском протоколе.

Как работает IPsec?

IPsec использует два протокола для обеспечения безопасности трафика — Authentication Header (АН) и Encapsulating Security Payload (ESP)

IP Authentication Header (AH) обеспечивает целостность без установления соединения, аутентификацию источника данных и дополнительную службу защиты от повтора.

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

Протокол Encapsulating Security Payload (ESP) может обеспечивать конфиденциальность (шифрование) и ограниченную конфиденциальность трафика. Он также может обеспечивать подключение. Он также может обеспечить целостность без установления соединения, аутентификацию источника данных и службу защиты от повтора. (Один или другой набор этих служб безопасности должен применяться всякий раз, когда вызывается ESP.)

ESP выполняет функции конфиденциальности, аутентификации и целостности. Таким образом, ESP выполняет шифрование и по своей сути более безопасен, чем AH. ESP вводит в пакет как дополнительный заголовок, так и трейлер. ESP также использует алгоритм хеширования для целостности данных. Однако хэш не включает IP-заголовок пакета, и, таким образом, ESP будет (обычно) работать через NAT-устройство.

Оба AH и ESP являются транспортными средствами для контроля доступа на основе распределения криптографических ключей и управления потоками трафика по отношению к этим протоколам безопасности.

Эти протоколы могут применяться отдельно или в сочетании друг с другом для обеспечения требуемого набора служб безопасности в IPv4 и IPv6. Каждый протокол поддерживает два режима: транспортный и режим туннеля. В транспортном режиме протоколы обеспечивают защиту в основном для протоколов верхнего уровня; в туннельном режиме протоколы применяются к туннелированным IP-пакетам.

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

● какие службы безопасности использовать и в каких комбинациях

● гранулярность, при которой должна применяться данная защита

● алгоритмы, используемые для обеспечения криптографической безопасности

Поскольку эти службы безопасности используют общие секретные значения (криптографические ключи), IPsec опирается на отдельный набор механизмов для размещения этих ключей. (Эти ключи используются для служб аутентификации / целостности и шифрования.) Этот документ требует поддержки как ручного, так и автоматического распределения ключей. Он определяет конкретный подход на основе открытого ключа для автоматического управления ключами, но могут использоваться другие автоматизированные методы распространения ключей. Например, можно использовать системы на основе KDC, такие как Kerberos и другие системы с открытым ключом, такие как SKIP.

Каждый протокол IPSEC (AH или ESP) может работать в одном из двух режимов:

• Режим транспорта. Исходные IP-заголовки остаются нетронутыми. Используется при обеспечении связи с одного устройства на другое одно устройство.

• Режим туннеля — весь исходный пакет хэшируется и / или шифруется, включая как полезную нагрузку, так и любые исходные заголовки. Во время транзита к пакету применяется временный IP-заголовок.

Ниже показано, как AH изменяет IP-пакет:

Ниже показано, как ESP изменяет IP-пакет:

ESP в режиме туннеля испытывает трудности NAT, подобные AH. Это может быть облегчено путем реализации NAT Traversal (NAT-T).

Стандарты

Сначала появились спецификации под кодовым названием: RFC1825, RFC1826 и RFC1827. Но чуть позже специалисты из «IP Security Protocol» пересмотрели некоторые требования и выпустили комплект архитектур и компонентов с RFC2401 по RFC2412. Среди новых спецификаций скрываются алгоритмы шифрования, инструменты для управления общими ключами аутентификации и проверки IP-пакетов.

Где IPsec может быть реализован

Существует несколько способов реализации IPsec на хосте или в сочетании с маршрутизатором или брандмауэром (для создания шлюза безопасности). Ниже приведены несколько общих примеров:

а. Интеграция IPsec в собственную реализацию IP. Для этого требуется доступ к исходному коду IP и применим как к хостам, так и к шлюзам безопасности.

b. Реализации «Bump-in-the-stack» (BITS), где IPsec реализуется «под» существующей реализацией стека протоколов IP, между собственным IP-адресом и драйверами локальной сети. Доступ к исходному коду для IP-стека не требуется в этом контексте, делая этот подход внедрения подходящим для использования с устаревшими системами. Такой подход, когда он принят, обычно используется на хостах.

с. Использование внешнего криптопроцессора является общей конструктивной особенностью систем сетевой безопасности, используемых военными, и некоторых коммерческих систем. Его иногда называют реализацией «Bump-in-the-wire» (BITW). Такие реализации могут быть предназначены для обслуживания хоста или шлюза (или обоих). Обычно устройство BITW является IP-адресом. При поддержке одного хоста он может быть аналогичен реализации BITS, но при поддержке маршрутизатора или брандмауэра он должен работать как шлюз безопасности.

Конфиденциальность и шифрование

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

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

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

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

Рассмотрим приведенную выше диаграмму. Предположим, что мы используем инфраструктуру открытого / закрытого ключа:

• Оба маршрутизатора A и Router B имеют свой собственный закрытый ключ.

• Оба маршрутизатора A и Router B обмениваются уникальными открытыми ключами.

• Когда Router B шифрует данные, предназначенные для маршрутизатора A, он использует открытый ключ Router A. (и наоборот)

• Маршрутизатор A расшифровывает данные, используя свой закрытый ключ.

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

Этапы работы IPSec

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

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

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

Архитектура IPSec

Комплекс протоколов и компонентов, появившийся благодаря специалистам из «IP Security Protocol IETF», на момент релиза включал 3 спецификации, описывавших архитектуру безопасности, параметры аутентификации и шифрования. Чуть позже стандарты изменились, но вот принципы и цели остались прежними. Как и раньше IPSec поделен на взаимосвязанные части.

Заголовок AH

Аутентифицирующий заголовок (AH) является обычным опциональным заголовком и, как правило, располагается между основным заголовком пакета IP и полем данных. Наличие AH никак не влияет на процесс передачи информации транспортного и более высокого уровней. Основным и единственным назначением AH является обеспечение защиты от атак, связанных с несанкционированным изменением содержимого пакета, и в том числе от подмены исходного адреса сетевого уровня. Протоколы более высокого уровня должны быть модифицированы в целях осуществления проверки аутентичности полученных данных.

Формат AH достаточно прост и состоит из 96-битового заголовка и данных переменной длины, состоящих из 32-битовых слов. Названия полей достаточно ясно отражают их содержимое: Next Header указывает на следующий заголовок, Payload Len представляет длину пакета, SPI является указателем на контекст безопасности и Sequence Number Field содержит последовательный номер пакета.

Последовательный номер пакета был введен в AH в 1997 году в ходе процесса пересмотра спецификации IPsec. Значение этого поля формируется отправителем и служит для защиты от атак, связанных с повторным использованием данных процесса аутентификации. Поскольку сеть Интернет не гарантирует порядок доставки пакетов, получатель должен хранить информацию о максимальном последовательном номере пакета, прошедшего успешную аутентификацию, и о получении некоторого числа пакетов, содержащих предыдущие последовательные номера (обычно это число равно 64).

В отличие от алгоритмов вычисления контрольной суммы, применяемых в протоколах передачи информации по коммутируемым линиям связи или по каналам локальных сетей и ориентированных на исправление случайных ошибок среды передачи, механизмы обеспечения целостности данных в открытых телекоммуникационных сетях должны иметь средства защиты от внесения целенаправленных изменений. Одним из таких механизмов является специальное применение алгоритма MD5: в процессе формирования AH последовательно вычисляется хэш-функция от объединения самого пакета и некоторого предварительно согласованного ключа, а затем от объединения полученного результата и преобразованного ключа. Данный механизм применяется по умолчанию в целях обеспечения всех реализаций IPv6, по крайней мере, одним общим алгоритмом, не подверженным экспортным ограничениям.

Заголовок ESP

В случае использования инкапсуляции зашифрованных данных заголовок ESP является последним в ряду опциональных заголовков, «видимых» в пакете. Поскольку основной целью ESP является обеспечение конфиденциальности данных, разные виды информации могут требовать применения существенно различных алгоритмов шифрования. Следовательно, формат ESP может претерпевать значительные изменения в зависимости от используемых криптографических алгоритмов. Тем не менее, можно выделить следующие обязательные поля: SPI, указывающее на контекст безопасности и Sequence Number Field, содержащее последовательный номер пакета. Поле «ESP Authentication Data» (контрольная сумма), не является обязательным в заголовке ESP. Получатель пакета ESP расшифровывает ESP заголовок и использует параметры и данные применяемого алгоритма шифрования для декодирования информации транспортного уровня.

Транспортный режим

Транспортный режим используется для шифрования поля данных IP пакета, содержащего протоколы транспортного уровня (TCP, UDP, ICMP), которое, в свою очередь, содержит информацию прикладных служб. Примером применения транспортного режима является передача электронной почты. Все промежуточные узлы на маршруте пакета от отправителя к получателю используют только открытую информацию сетевого уровня и, возможно, некоторые опциональные заголовки пакета (в IPv6). Недостатком транспортного режима является отсутствие механизмов скрытия конкретных отправителя и получателя пакета, а также возможность проведения анализа трафика. Результатом такого анализа может стать информация об объемах и направлениях передачи информации, области интересов абонентов, расположение руководителей.

Туннельный режим

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

Security Associations

Security Association (SA) — это соединение, которое предоставляет службы обеспечения безопасности трафика, который передаётся через него. Два компьютера на каждой стороне SA хранят режим, протокол, алгоритмы и ключи, используемые в SA. Каждый SA используется только в одном направлении. Для двунаправленной связи требуется два SA. Каждый SA реализует один режим и протокол; таким образом, если для одного пакета необходимо использовать два протокола (как например AH и ESP), то требуется два SA.

Политика безопасности

Политика безопасности хранится в SPD (База данных политики безопасности). SPD может указать для пакета данных одно из трёх действий: отбросить пакет, не обрабатывать пакет с помощью IPSec, обработать пакет с помощью IPSec. В последнем случае SPD также указывает, какой SA необходимо использовать (если, конечно, подходящий SA уже был создан) или указывает, с какими параметрами должен быть создан новый SA.

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

ISAKMP/Oakley

Протокол ISAKMP определяет общую структуру протоколов, которые используются для установления SA и для выполнения других функций управления ключами. ISAKMP поддерживает несколько Областей Интерпретации (DOI), одной из которых является IPSec-DOI. ISAKMP не определяет законченный протокол, а предоставляет «строительные блоки» для различных DOI и протоколов обмена ключами.

Протокол Oakley — это протокол определения ключа, использующий алгоритм замены ключа Диффи-Хеллмана. Протокол Oakley поддерживает идеальную прямую безопасность (Perfect Forward Secrecy — PFS). Наличие PFS означает невозможность расшифровки всего траффика при компрометации любого ключа в системе.

IKE

IKE — протокол обмена ключами по умолчанию для ISAKMP, на данный момент являющийся единственным. IKE находится на вершине ISAKMP и выполняет, собственно, установление как ISAKMP SA, так и IPSec SA. IKE поддерживает набор различных примитивных функций для использования в протоколах. Среди них можно выделить хэш-функцию и псевдослучайную функцию (PRF).

Хэш-функция — это функция, устойчивая к коллизиям. Под устойчивостью к коллизиям понимается тот факт, что невозможно найти два разных сообщения m1 и m2, таких, что H(m1)=H(m2), где H — хэш функция.

Что касается псеводслучайных функций, то в настоящее время вместо специальных PRF используется хэш функция в конструкции HMAC (HMAC — механизм аутентификации сообщений с использованием хэш функций). Для определения HMAC нам понадобится криптографическая хэш функция (обозначим её как H) и секретный ключ K. Мы предполагаем, что H является хэш функцией, где данные хэшируются с помощью процедуры сжатия, последовательно применяемой к последовательности блоков данных. Мы обозначим за B длину таких блоков в байтах, а длину блоков, полученных в результате хэширования — как L (L<B). Ключ K может иметь длину, меньшую или равную B. Если приложение использует ключи большей длины, сначала мы должны хэшировать сам ключ с использованием H, и только после этого использовать полученную строку длиной L байт, как ключ в HMAC. В обоих случаях рекомендуемая минимальная длина для K составляет L байт. Определим две следующие различные строки фиксированной длины:
ipad = байт 0x36, повторённый B раз;
opad = байт 0x5C, повторённый B раз.
Для вычисления HMAC от данных ‘text’ необходимо выполнить следующую операцию:
H(K XOR opad, H(K XOR ipad, text))
Из описания следует, что IKE использует для аутентификации сторон HASH величины. Отметим, что под HASH в данном случае подразумевается исключительно название Payload в ISAKMP, и это название не имеет ничего общего со своим содержимым.

Атаки на AH, ESP и IKE.

Все виды атак на компоненты IPSec можно разделить на следующие группы: атаки, эксплуатирующие конечность ресурсов системы (типичный пример — атака «Отказ в обслуживании», Denial-of-service или DOS-атака), атаки, использующие особенности и ошибки конкретной реализации IPSec и, наконец, атаки, основанные на слабостях самих протоколов. AH и ESP. Чисто криптографические атаки можно не рассматривать — оба протокола определяют понятие «трансформ», куда скрывают всю криптографию. Если используемый криптоалгоритм стоек, а определенный с ним трансформ не вносит дополнительных слабостей (это не всегда так, поэтому правильнее рассматривать стойкость всей системы — Протокол-Трансформ-Алгоритм), то с этой стороны все нормально. Что остается? Replay Attack — нивелируется за счет использования Sequence Number (в одном единственном случае это не работает — при использовании ESP без аутентификации и без AH). Далее, порядок выполнения действий (сначала шифрация, потом аутентификация) гарантирует быструю отбраковку «плохих» пакетов (более того, согласно последним исследованиям в мире криптографии, именно такой порядок действий наиболее безопасен, обратный порядок в некоторых, правда очень частных случаях, может привести к потенциальным дырам в безопасности; к счастью, ни SSL, ни IKE, ни другие распространенные протоколы с порядком действий «сначала аутентифицировать, потом зашифровать», к этим частным случаям не относятся, и, стало быть, этих дыр не имеют). Остается Denial-Of-Service атака. Как известно, это атака, от которой не существует полной защиты. Тем не менее, быстрая отбраковка плохих пакетов и отсутствие какой-либо внешней реакции на них (согласно RFC) позволяют более-менее хорошо справляться с этой атакой. В принципе, большинству (если не всем) известным сетевым атакам (sniffing, spoofing, hijacking и т.п.) AH и ESP при правильном их применении успешно противостоят. С IKE несколько сложнее. Протокол очень сложный, тяжел для анализа. Кроме того, в силу опечаток (в формуле вычисления HASH_R) при его написании и не совсем удачных решений (тот же HASH_R и HASH_I) он содержит несколько потенциальных «дыр» (в частности, в первой фазе не все Payload в сообщении аутентифицируются), впрочем, они не очень серьезные и ведут, максимум, к отказу в установлении соединения.От атак типа replay, spoofing, sniffing, hijacking IKE более-менее успешно защищается. С криптографией несколько сложнее, — она не вынесена, как в AH и ESP, отдельно, а реализована в самом протоколе. Тем не менее, при использовании стойких алгоритмов и примитивов (PRF), проблем быть не должно. В какой-то степени можно рассматривать как слабость IPsec то, что в качестве единственного обязательного к реализации криптоалгоритма в нынешних спецификациях указывается DES (это справедливо и для ESP, и для IKE), 56 бит ключа которого уже не считаются достаточными. Тем не менее, это чисто формальная слабость — сами спецификации являются алгоритмо-независимыми, и практически все известные вендоры давно реализовали 3DES (а некоторые уже и AES).Таким образом, при правильной реализации, наиболее «опасной» атакой остается Denial-Of-Service.

Подключение к стороннему IPSEC туннелю

Допустим, у вас есть какая-то удаленная локальная сеть (192.168.88.0/24), которую обслуживает Mikrotik с настроенным l2tp + ipsec. И вам нужно подключиться к нему, чтобы ходить в эту сеть. Настраивается все достаточно просто, наглядно и логично. Хотя я и делал это первый раз, все получилось сразу без чтения документации 🙂 Единственное, не сразу нашел, где собственно добавлять новое подключнние к vpn.

Логика объединения сетей с помощью VPN одинакова везде. Нам нужно:

  1. Подключиться к VPN.
  2. Настроить маршруты.
  3. Настроить firewall.
  4. Проверить подключение.

Начинаем с настройки подключения. Идем в раздел Сеть -> Провайдеры и сети -> Добавить -> Провайдер l2tp. На этом моменте я немного залип, так как не понял, что надо добавить именно провайдера. Я же не провайдера подключаю, а удаленный филиал.

Дальше заполняем необходимые параметры. Для Mikrotik достаточно следующих.

Если настроен ipsec, указываем его пароль на соседней вкладке.

После сохранения настроек сразу же идет подключение. На микротике вижу его.

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

В шлюзе ИКС можно создавать готовые сущности, а потом ими оперировать в настройках. Это удобно и наглядно. Создадим сущность VPN-сеть и назовем ее filial01. Для этого здесь же, в разделе Провайдеры и сети создаем VPN-сеть.

Отправляемся в раздел Маршруты и добавляем новый маршрут.

После этого можно уже проверить связь, так как в фаерволе по умолчанию разрешены пинги. Идем в раздел Сетевые утилиты и пингуем один из адресов из удаленной подсети.

Далее нужно добавить разрешающее правило в фаерволе для vpn трафика. Можете разрешить весь трафик или указать что-то конкретное. На ваше усмотрение. Интерфейс наглядный и понятный.

Новое правило появляется в списке.

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

Удобно разбираться в сложных конфигурациях с десятками правил. При этом, все настраивается через веб интерфейс. Не надо лазить в консоль. Под капотом pf и ipfw.

Напоследок добавлю, что для того, чтобы связь между сетями через vpn работала, на удаленном микротике так же нужно добавить маршрут, который будет указывать, что трафик для сети 192.168.0.0/24 должен идти через l2tp туннель.

И не забыть про firewall. Надо так же разрешить нужный трафик. Не буду на этом останавливаться в рамках данной статьи.

Разобрал данный кейс просто чтобы продемонстрировать вам интерфейс управления. Мне лично он понравился. Удобно и наглядно. Хотя может это только мое восприятие, так как я хорошо ориентируюсь в подобных шлюзах. Возможно новичку все будет не так очевидно и понятно.

Настройка своего VPN сервера

Теперь разберу еще один полезный, на мой взгляд, кейс. Так как ИКС бесплатен для 8-ми пользователей, его можно использовать как личный vpn сервер с удобным веб интерфейсом. Я покажу это на примере настройки OpenVPN сервера.

Идем в раздел VPN и запускаем OpenVPN.

Нам надо выпустить сертификаты для работы openvpn. Для этого идем в раздел Защита -> Сертификаты и добавляем новый.

Настройки можно оставить дефолтными, только название указать. И обязательно на вкладке Настройки указать, что это CA сертификат.

Рекомендую срок действия подольше поставить, чтобы потом не заниматься перевыпуском. После создания CA сертификата, надо добавить сертификат самого сервера. Для этого выбираем созданный сертификат и нажимаем Добавить.

Здесь тоже можно все дефолтное оставить, только поменяйте Имя или адрес хоста на что-то отличное от значения CA, иначе openvpn будет ругаться на сертификат при подключении. У меня на скриншоте это не сделано.

На вкладке Настройки обязательно указать, что это Конечный сертификат.

Должно получиться вот так — один сертификат за другим.

Идем в Провайдеры и сети и добавляем Openvpn-сеть.

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

Возвращаемся в раздел VPN и добавляем пользователя.

Разрешаем ему OpenVPN доступ и указываем созданную ранее OpenVPN-сеть.

Далее идем в настройки пользователя и на вкладке OpenVPN скачиваем конфиг для подключения.

Перед выгрузкой вас попросят указать внешний интерфейс, по которому пользователи будут подключаться к openvpn серверу. Он будет указан в параметре remote конфига openvpn. Скачанный конфиг кладем в папку с OpenVPN и подключаемся.

Ваше подключение будет отображаться во вкладке Текущие сеансы.

Так же факт подключения будет записан в журнал событий.

Это удобно, когда пользователей много и нужен контроль.

Вот в целом и все. Надеюсь у вас появилось представление о том, как все это работает в интернет шлюзе ИКС. По мне так все удобно и наглядно. Можно управлять большим количеством пользователей и сетей. То есть продукт может быть одинаково полезен как для больших организаций, так и для небольших коллективов или одиночных пользователей.

К примеру, вы можете установить себе собственный шлюз на базе ИКС, завести на него несколько удаленных подсетей через openvpn client на той стороне. Раскидать маршруты по удаленным сетям и самому подключаться к этому серверу для того, чтобы получать удаленный доступ ко всем подключенным объектам. Я примерно по такой схеме давно настроил себе vpn сервер и использую для управлением своим личным хозяйством, которого у меня много.

Оценка протокола

Протокол IPSec получил неоднозначную оценку со стороны специалистов. С одной стороны, отмечается, что протокол IPSec является лучшим среди всех других протоколов защиты передаваемых по сети данных, разработанных ранее (включая разработанный Microsoft PPTP). По мнению другой стороны, присутствует чрезмерная сложность и избыточность протокола. Так, Niels Ferguson и Bruce Schneier в своей работе «A Cryptographic Evaluation of IPsec» отмечают, что они обнаружили серьёзные проблемы безопасности практически во всех главных компонентах IPsec. Эти авторы также отмечают, что набор протоколов требует серьёзной доработки для того, чтобы он обеспечивал хороший уровень безопасности. В работе приведено описание ряда атак, использующих как слабости общей схемы обработки данных, так и слабости криптографических алгоритмов.

Какой протокол выбрать?

Пока что фаворитом является OpenVPN. Он уже давно на рынке и успел себя зарекомендовать. Используется топовыми VPN-cервисами, работает на Android, iOS, Windows, macOS, Linux и даже на роутерах. Разве что на утюге не получится запустить. Скорость работы OpenVPN хоть и не поражает, но ее хватит для комфортной работы.

Второе место я бы отдал WireGuard. Это пока еще темная лошадка, но зато с кучей бонусов. Он превосходит OpenVPN и IPsec по всем параметрам, но пока не вызывает такого доверия, как первый. Но это все же дело времени. Кажется, что в ближайшем будущем расстановка сил на рынке VPN-сервисов заметно скорректируется.

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

Остальные технологии оказались на обочине прогресса. Не советую их использовать. Только если все остальные варианты почему-то оказались недоступны.

Выводы

Теперь вы знакомы с особенностями VPN-протоколов. Опираясь на эту информацию, будет несложно выбрать подходящий (учитывая тот факт, что выбор-то, на самом деле, невелик). Остается «поднять» собственный сервер на базе OpenVPN или подобрать сервис в духе того же TunnelBear. Главное, не использоваться бесплатные варианты.

[spoiler title=»Источники»]

  • https://timeweb.com/ru/community/articles/protokoly-vpn-kakoy-protokol-luchshe-i-v-chem-sostoyat-razlichiya-mezhdu-nimi
  • https://interface31.ru/tech_it/2021/06/nastraivaem-vpn-chast-1-obshhie-voprosy.html
  • https://xakep.ru/2021/11/23/vpn-protocols/
  • https://lanmarket.ua/entsiklopediya/telekommunikatsionnye-tekhnologii/ipsec.html
  • https://WiFiGid.ru/poleznoe-i-interesnoe/ipsec
  • https://www.ixbt.com/comm/ipsecure.shtml
  • https://serveradmin.ru/nastrojka-vpn-ipsec-s-pomoshhyu-internet-shlyuza-iks/

[/spoiler]

By admin

Related Post