Загадочный ipsec

Оглавление

Введение в IPsec

Протокол IPsec — один из наиболее важных протоколов безопасности, который широко используется в компаниях, а также среди домашних пользователей. В последнее время такие производители, как ASUS, AVM и даже D-Link интегрируют VPN в свои домашние маршрутизаторы на основе протокола IPsec. Этот протокол предоставляет услуги безопасности для уровня IP и для всех протоколов более высокого уровня, таких как TCP и UDP (транспортный уровень Интернета). Благодаря IPsec мы можем безопасно обмениваться данными между различными точками Интернета, такими как две или более компаний друг с другом или пользователь у своего дома, IPsec идеально подходит для нужд VPN обоих «миров».

Очень важной особенностью IPsec является то, что он работает на уровне 3 OSI (сетевой уровень), другие протоколы VPN, такие как OpenVPN или WireGuard работают на уровне 4 (транспортный уровень), поскольку последние два основывают свою безопасность на TLS и DTLS соответственно. IPsec в сетях IPv4 находится чуть выше заголовка IP, однако в сетях IPv6 он интегрирован (ESP) в самом заголовке в разделе «Расширения»

IPsec предоставляет все службы, необходимые для обеспечения безопасности связи, как мы объясняли ранее, эти службы аутентификация, конфиденциальность, целостность и неотказуемость . Благодаря этим сервисам безопасность связи гарантирована. Конечно, у нас также есть контроль доступа, качество обслуживания и журнал активности.

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

В зависимости от используемого заголовка IPsec (AH или ESP) мы можем только проверить подлинность пакета или зашифровать полезную нагрузку всего IP-пакета, а также проверить его подлинность.

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

Некоторые преимущества IPsec заключаются в том, что он поддерживается всеми стандартами IETF и предоставляет «стандарт» VPN, поэтому все устройства должны быть совместимы. IPSec получает очень важную поддержку со стороны всего коммуникационного оборудования, так как это «стандарт» для VPN, который используется гораздо шире, чем OpenVPN или WireGuard. Все версии операционных систем ПК, такие как Windows or Linux, MacOS для Apple компьютеры, а также Android и Ios поддерживают протокол IPsec

Кроме того, еще одной очень важной характеристикой является то, что, будучи стандартом, существует возможность взаимодействия между производителями, что является гарантией для пользователей. Еще одна замечательная особенность IPSec — это его природа как открытого стандарта, и он прекрасно дополняется технологией PKI (Public Key Infrastructure)

IPsec сочетает в себе технологии открытого ключа (RSA или Elliptical Curves), алгоритмы симметричного шифрования (в основном AES, хотя он также поддерживает другие, такие как Blowfish или 3DES) и алгоритмы хеширования (SHA256, SHA512 и т. Д.), А также цифровые сертификаты на основе X509v3.

Введение


В связи с требованиями IETF (Internet Engineering Task Force) о включении IPsec в каждую реализацию IPv6, разумно рассматривать IPsec в качестве подходящего протокола, для обеспечения безопасности VoIP. Однако, сейчас этому предпочитают использование протокола TLS (Transport Layer Security) — для обеспечения безопасности SIP (Session Initiation Protocol), и применение SRTP (Secure Real-time Transport Protocol), для защиты RTP.

В настоящее время (прим. перев. — на момент написания оригинала, 2007 год) сравнение этих двух подходов отсутствует, настоящей работой предоставляется такое сравнение, рассматриваются достоинства и недостатки каждого из подходов. На основе настоящей работы исполнители и проектировщики IA (Information Assurance) смогут принимать взвешенные решения.

SIP становится доминирующим протоколом организации сеансов связи VoIP. RTP является главенствующим протоколом упаковки голосовых данных и, последующей их транспортировке, между оконечными устройствами, по IP-сетям. TLS, SRTP и IPsec это протоколы, использующиеся для обеспечения безопасности сеансов SIP и RTP, они обеспечивают аутентификацию, целостность и конфиденциальность связанных с VoIP IP-пакетов.… На рисунке ниже, показано расположение протоколов TLS, IPsec, SRTP, SIP и RTP внутри модели OSI.

Рисунок ниже показывает общую схему звонка по SIP и RTP.

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 Серьезных недостатков безопасности не было выявлено Серьезных недостатков безопасности не было выявлено

Причём тут Go?

crypto/tlscrypto/x509

          ┌──────┐          ┌────┐          ┌─────┐          ┌────┐
          │remote│          │iker│          │esper│          │ipfw│
          └──┬───┘          └─┬──┘          └──┬──┘          └─┬──┘
             │                │                │               │
╔══════╤═════╪════════════════╪════════════╗   │               │
║ UDP  │     │                │            ║   │               │
╟──────┘     │    IKEv2...    │            ║   │               │
║            │ <───────────────            ║   │               │
║            │                │            ║   │               │
║            │    IKEv2...    │            ║   │               │
║            │ ───────────────>            ║   │               │
╚════════════╪════════════════╪════════════╝   │               │
             │                │                │               │
             │                │                │               │
             │    ╔═══════════╪══╤═════════════╪════════════╗  │
             │    ║ UNIX-SOCKET  │             │            ║  │
             │    ╟─────────────setkey-commands│            ║  │
             │    ║           │ ───────────────>            ║  │
             │    ╚═══════════╪════════════════╪════════════╝  │
             │                │                │               │
             │                │                │               │
             │                │   ╔════════════╪═══╤═══════════╪════════════╗
             │                │   ║ DIVERT-SOCKET  │           │            ║
             │                │   ╟──────────────encrypted ESP │            ║
             │                │   ║            │ <──────────────            ║
             │                │   ║            │               │            ║
             │                │   ║            │ decrypted ESP │            ║
             │                │   ║            │ ──────────────>            ║
             │                │   ║            │               │            ║
             │                │   ║            │ unencrypted IP│            ║
             │                │   ║            │ <──────────────            ║
             │                │   ║            │               │            ║
             │                │   ║            │  encrypted IP │            ║
             │                │   ║            │ ──────────────>            ║
             │                │   ╚════════════╪═══════════════╪════════════╝
             │                │                │               │

PF_KEYv2setkeysetkey

add fc00::ac fc00::dc esp 0x12345678 -u 123 -E aes-gcm-16 0xd3537e657fde5599a2804fbb52d1aaed94b65d3e ;
add fc00::dc fc00::ac esp 0x12345679 -u 234 -E aes-gcm-16 0x9a2dae68e475eacb39d41f23c3cbef890e9f6276 tfc:1320 ;

spdadd fc00::ac/128 fc00::dc/128 all -P in ipsec esp/transport//unique:123 ;
spdadd fc00::dc/128 fc00::ac/128 all -P out ipsec esp/transport//unique:234 ;
{
    IKEAlgos: 
    ESPAlgos: 
    SigHashes: 
    DPDTimeout: 300
    Peers: [
        {
            Autostart: true
            OurIP: fc00::dc
            TheirIP: fc00::ac
            OurId: our.company.net
            TheirId: CN=example.com
            OurTSS: [
                fc00::dc/128
                fc00::dc/128[udp/53]
            ]
            TheirTSS: [
                fc00::ac/128
            ]
            Mode: transport
            # Won't be used, because of X.509 signature authentication
            PSK: DEADBABE
            TheirCertHash: a948904f2f0f479b8f8197694b30184b0d2ed1c1cd2a1ec0fb85d299a192a447
            OurCert: our.company.net.cer.pem
            OurPrvKey: our.company.net.key.pem
            TFC: 1200
        }
    ]
}
  • К которому демон будет автоматически подключаться
  • Каждые пять минут делать dead peer detection
  • Согласовать в приоритете ГОСТ алгоритмы с ESN, с fallback-ом до зарубежных, а также TFC до 1200 байт.
  • Согласовывать селектор трафика TCP и DNS запросов от fc00::dc адреса до fc00::ac в транспортном режиме.
  • Аутентифицировать по X.509 подписям, где от противоположной стороны ожидается сертификат с CN=example.com subject-ом и жёстко заданным SHA256 хэшом от SubjectPublicKeyInfo его сертификата. OurId при этом будет вычислен на основе предоставленного OurCert сертификата.
  • Если бы OurCert/OurPrvKey не были указаны, то тогда с нашей стороны использовалась PSK аутентификация с FQDN указанным в OurId.

CREATE_CHILD_SADON’T PANICgostipsec.infogo build

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 будет лучшим выбором (если он доступен).

Restrictions for IPsec Virtual Tunnel Interface

IPsec Transform Set

The IPsec transform set must be configured in tunnel mode only.

IKE Security Association

The Internet Key Exchange (IKE) security association (SA) is bound to the VTI. Because IKE SA is bound to the VTI, the same IKE SA cannot be used for a crypto map.

IPsec SA Traffic Selectors

Static VTIs support only a single IPsec SA that is attached to the VTI interface. The traffic selector for the IPsec SA is always «IP any any.»

A dynamic VTI also is a point-point interface that supports only a single IPsec SA, but the dynamic VTI is flexible in that it can accept the IPsec selectors that are proposed by the initiator.

Proxy

Static VTIs support only the «IP any any» proxy.

Dynamic VTIs support only one proxy, which can be «IP any any» or any subset of it.

QoS Traffic Shaping

The shaped traffic is process switched.

Stateful Failover

IPsec stateful failover is not supported with IPsec VTIs.

Tunnel Protection

The shared keyword is not required and must not be configured when using the tunnel mode ipsec ipv4 command for IPsec IPv4 mode.

Static VTIs Versus GRE Tunnels

The IPsec VTI is limited to IP unicast and multicast traffic only, as opposed to GRE tunnels, which have a wider application for IPsec implementation.

VRF-Aware IPsec Configuration

In VRF-aware IPsec configurations with either static or dynamic VTIs (DVTIs), the VRF must not be configured in the Internet Security Association and Key Management Protocol (ISAKMP) profile. Instead, the VRF must be configured on the tunnel interface for static VTIs. For DVTIs, you must apply VRF to the virtual template using the ip vrf forwarding command.

IKE: что это такое и для чего

Этот протокол IKE (Internet Key Exchange) используется для генерации и управления ключами, необходимыми для установления AH (заголовок аутентификации) и Соединения ESP (Encapsulated Security Payload) . Два или более участников соединения IPsec должны каким-то образом согласовать типы шифрования и алгоритмы аутентификации, чтобы иметь возможность установить соединение безопасным способом. Эта конфигурация может быть выполнена вручную на обоих концах канала или через протокол ( Протокол IKE ), чтобы обеспечить автоматическое согласование участников (SA = Security Association).

Протокол IKE отвечает не только за управление ключами и их администрирование, но и за установление соединения между соответствующими участниками. IKE входит не только в IPsec, но и может использоваться в различных алгоритмах маршрутизации, таких как OSPF или RIP.

Фазы согласования IKE

Установление безопасного канала будет выполнено с использованием алгоритма обмена ключами, такого как Diffie-Hellman, для шифрования обмена данными IKE. Это согласование выполняется через единую двунаправленную SA. Аутентификация может осуществляться через PSK (общий ключ) или другими методами, такими как сертификаты RSA. Используя созданный защищенный канал, будет согласовано соответствие безопасности IPsec (или других служб).

Некоторые особенности IKE

IKE поддерживает NAT обход даже если один или оба участника находятся за NAT, соединение может быть выполнено без особых проблем, хотя нам придется открывать порты на сервере VPN, если он находится за NAT. Порядковые номера и ACK используются для обеспечения надежности, а также включают систему обработки ошибок. IKE устойчив к атакам типа «отказ в обслуживании», и IKE не предпринимает никаких действий до тех пор, пока не определит, действительно ли существует запрашивающая конечная точка, тем самым защищая от атак с поддельных IP-адресов.

В настоящее время IKEv2 широко применяется во всех профессиональных межсетевых экранах и маршрутизаторах, однако он еще не полностью распространен в мире Android или iOS, только Samsung Пользователи смартфонов поддерживают IPsec с IKEv2. Операционные системы Windows, Linux и macOS поддерживают этот протокол.

IKEv2: что изменилось

IKEv2 — вторая версия этого популярного протокола обмена ключами в Интернете, в него включены улучшения для обхода NAT, что упрощает взаимодействие и прохождение через брандмауэры в целом. Он также поддерживает новый стандарт мобильности, который позволяет очень быстро переподключить связь, кроме того, он также поддерживает множественную адресацию (multi-origin), что идеально подходит для пользователей смартфонов, планшетов или ноутбуков. IKEv2 позволяет использовать SCTP, который используется в VoIP, он также имеет более простой обмен сообщениями, он имеет меньше криптографических механизмов, позволяя использовать только самые безопасные. Какой смысл использовать VPN с небезопасными шифрами? IKEv2 позволяет использовать только самые безопасные

Is IPsec too complex and confusing?

IPsec incorporates all of the most commonly employed security services, including authentication, integrity, confidentiality, encryption and nonrepudiation. However, the major drawbacks to IPsec are its complexity and the confusing nature of its associated documentation. In spite of these various drawbacks, IPsec is believed by many to be one of the best security systems available. It is hoped that considerable improvement will be evidenced in future revisions of IPsec and that the problems identified with the architecture will be remedied.

References

J. D. Guttman, A. L. Herzog and F. J. Thayer, «Authentication and Confidentiality via IPsec,» proceedings of the Sixth European Symposium on Research in Computer Security, ESORICS 2000, LNCS 1895, June 30, 2000.

C. L. Wu, S. F. Wu and R. Narayan, «IPSec/PHIL (Packet Header Information List): Design, Implementation, and Evaluation,» proceedings of the 10th International Conference on Computer Communications and Networks.

R. Perlman and C. Kaufman, «Analysis of the IPSec Key Exchange Standard,» proceedings of the 10th IEEE International Workshop on Enabling Technologies: Infrastructure for Collaborative Enterprises, WET ICE 2001.

IP Security Paper Summary.

Z. Fu, S. F. Wu, H. Huang, K. Loh, F. Gong, I. Baldine and C. Xu, «IPSec/VPN Security Policy: Correctness, Conflict Detection, and Resolution,» International Workshop on Policies for Distributed Systems and Networks, Policy 2001, LNCS 1995.

D. Shinder, «Securing Data in Transit with IPsec,» available at http://www.windowsecurity.com/articles/Securing_Data_in_Transit_with_IPSec.html, Feb. 17, 2003.

S. Kent and R. Atkinson, Security Architecture for the Internet Protocol, IETF Network Working Group RFC 2401, November 1998.

N. Ferguson and B. Schneier, «A Cryptographic Evaluation of IPsec,» Counterpane Internet Security Inc., 1999.

S. Kent and R. Atkinson, «IP Authentication Header,» IETF Network Working Group RFC 2402, November 1998.

S. Kent and R. Atkinson, «IP Encapsulating Security Payload,» IETF Network Working Group RFC 2406, November 1998.

B. Schneier, Applied Cryptography, John Wiley & Sons Inc., New York, N.Y., 2nd edition, 1996.

Протоколы IPsec

IPsec протоколы используются для защиты передаваемых данных. Выбор протокола и его ключей происходит при согласовании IKE.

AH (Authentication Header)

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

В режиме транспорта, AH встраивает свой заголовок после оригинального IP пакета.
В режиме туннеля AH встраивает свой заголовок после внешнего (нового) IP-заголовка и перед внутренним (оригинальным) IP заголовком.

ESP (Encapsulating Security Payload)

ESP протокол используется для шифрования, для аутентификации или и того, и другого по отношению к IP пакету.

В режиме транспорта ESP протокол вставляет свой заголовок после оригинально IP заголовка.
В режиме туннеля ESP заголовок находится после внешнего (нового) IP заголовка и перед внутренним (оригинальным).

Два основных различия между ESP и AH:

  • ESP помимо аутентификации предоставляет еще возможность шифрования (AH этого не предоставляет)
  • ESP в режиме туннеля аутентифицирует только оригинальный IP заголовок (AH аутентифицирует также внешний).

Работа за NAT (NAT Traversal)
Для поддержки работы за NAT была реализована отдельная спецификация. Если VPN-точка поддерживает данную спецификацию, IPsec поддерживает работу за NAT, однако существуют определённые требования.
Поддержка NAT состоит из двух частей:

  • На уровне IKE конечные устройства обмениваются друг с другом информацией о поддержке, NAT Traversal и версией поддерживаемой спецификации
  • На уровне ESP сформированный пакет инкапсулируется в UDP.

NAT Traversal используется только в том случае, если обе точки поддерживают его.Определение NAT: обе VPN-точки посылают хеши своих IP адресов вместе с UDP портом источника IKE согласования. Данная информация используется получателем, для того чтобы определить был ли изменен IP адрес и/или порт источника. Если данные параметры не были изменены, то трафик не проходит через NAT и механизм NAT Traversal не нужен. Если адрес или порт были изменены, значит между устройствами находится NAT.

Как только конечные точки определят, что необходим NAT Traversal, согласование IKE перемещаются с порта UDP 500 на порт 4500. Делается это потому, что некоторые устройства некорректно обрабатывают IKE сессию на 500 порту при использовании NAT.
Другая проблема возникает из-за того, что ESP протокол – протокол транспортного уровня и располагается непосредственно поверх IP. Из-за этого к нему не применимы понятия TCP/UDP порта, что делает невозможным подключение через NAT более одного клиента к одному шлюзу. Для решения данной проблемы ESP запаковывается в UDP дейтаграмму и посылается на порт 4500, тот же самый, который использует IKE при включенном NAT Traversal.
NAT Traversal встроен в работу протоколов, его поддерживающих и работает без предварительной настройки.

Создание объекта пользователя

Учетная запись пользователя определяет привилегии пользователя, вошедшего в шлюз. Учетные записи пользователей используются в политиках безопасности и патруле приложений, в дополнение к управлению доступом к конфигурации и службам шлюза. Поддержка IKEv2 клиента встроена в Windows (Windows 7 или более поздняя версия) и требует, чтобы пользователь проходил аутентификацию с использованием имени пользователя и пароля для VPN-сервера.

Объект учетной записи пользователя

Чтобы добавить учетные записи пользователей, которым будет разрешено проходить аутентификацию в IKEv2 VPN, перейдите в раздел Configuration -> Object -> User/Group. Нажмите кнопку Add (Добавить), чтобы вставить новую учетную запись пользователя.

  • Введите учетную запись “User Name”
  • Эта учетная запись будет использоваться в основном для аутентификации VPN, поэтому установите “User Type” в значение «User».
  • В поле “Password” задайте пароль для учетной записи пользователя и повторите его в поле «Retype» для подтверждения
  • Добавьте описание для учетной записи (необязательно)
  • Нажмите кнопку ОК , чтобы сохранить настройки

Группа учетных записей пользователей

Если было создано несколько учетных записей пользователей, их необходимо сгруппировать, чтобы все пользователи могли применять правило VPN IKEv2 для проверки подлинности. Чтобы добавить группы пользователей, выберите вкладку “Group” в меню «Configuration -> Object -> User/Group .

Нажмите кнопку Add (Добавить), чтобы добавить запись для группы пользователей.

  • Укажите имя для группы — например, «IKEv2_User_Group»
  • Дайте описание для группового объекта (необязательно)
  • Выберите учетные записи пользователей из списка «Доступно» и переместите учетные записи в список «Участник».
  • Нажмите кнопку ОК , чтобы сохранить настройки

Конфигурация протокола IPsec

Чтобы настроить протокол IPsec вместе с протоколом L2TP, нам нужно будет выполнить всего три действия. Первый — включить «Мобильных клиентов», то есть VPN удаленного доступа. Второй — включить фазу 1 IPsec, а затем настроить фазу 2 IPsec.

Настроить «Мобильные клиенты»

Это одна из наиболее важных частей, потому что если мы перейдем в раздел «Туннели», мы создадим VPN-туннель типа «сеть-сеть», а то, что мы хотим сделать с IPsec, — это настроить VPN для удаленного доступа, чтобы разные клиенты.

В этом меню мы включаем «Включить поддержку мобильного клиента IPsec» и выбираем «Локальная база данных», хотя мы будем использовать ее, потому что это для аутентификации xAuth. Нажимаем на сохранить.

Как только мы нажмем «Сохранить», нам также нужно будет нажать «Применить изменения», а затем нажать зеленую кнопку, обозначающую «Создать фазу1».

Настроить IPsec Phase 1

В этом меню нам нужно будет правильно настроить протокол IPsec, чтобы использовать его с L2TP, не все конфигурации будут работать, кроме того, в зависимости от используемого VPN-клиента (Android, Ios, Windows …) Конфигурация безопасности может измениться, поскольку не все операционные системы поддерживают лучшие шифры VPN. По умолчанию мы увидим следующее меню, в котором мы выбрали IKEv2, который несовместим с протоколом L2TP / IPsec, который мы хотим настроить.

Для правильной работы мы должны настроить следующие параметры:

  • Главная Информация
    • Версия обмена ключами: IKEv1, если выберем любую другую, работать не будет.
    • Интернет-протокол: IPv4 или IPv6
    • Интерфейс: Интернет WAN
    • Описание: ставим описание.
  • Предложение этапа 1 (аутентификация)
    • Метод аутентификации: взаимный PSK
    • Режим переговоров: агрессивный; если мы выберем «Основной», это будет более безопасно, но менее гибко, и мы можем помешать правильному подключению VPN-клиента. Позже, если все работает с «Aggresive», мы можем проверить, работает ли и с «Main».
    • Мой идентификатор: Отличительное имя пользователя — redeszone@redeszone.net или как хотите.
  • Предложение этапа 1 (Шифрование

    Алгоритм шифрования: 128-битный AES, SHA1, DH Group 2 (1024-битный).

    )

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

Остальные параметры конфигурации можно оставить без изменений с параметрами по умолчанию.

По завершении мы нажимаем «Сохранить», и теперь мы попадаем в главное меню, где у нас есть все VPN-туннели с IPsec, нам нужно будет нажать на единственный созданный и на «Показать записи фазы 2», а затем на «Create Phase 2», чтобы продолжить.

Настроить IPsec Phase 2

В этом меню конфигурации мы должны поместить следующее:

  • Главная Информация
    • Режим: транспорт
    • Описание: описание, которое мы хотим.
  • Предложение этапа 2 (SA / Обмен ключами)
    • Протокол: ESP
    • Алгоритмы шифрования: 128-битный AES
    • Алгоритмы хеширования: выбираем SHA-1 и SHA-256
    • Группа ключей PFS: выключена, протоколом не поддерживается.

Остальные параметры конфигурации можно оставить по умолчанию.

В главном меню «IPsec / Tunnels» мы можем увидеть сводку всего, что мы настроили.

Теперь нам нужно перейти в раздел «IPsec / Pre-Shared Keys» и добавить новый идентификатор.

Этот новый идентификатор должен быть:

  • Идентификатор: allusers (должен быть таким, без заглавных букв и без другого имени)
  • Тип секрета: PSK
  • Pre-Shared Key: пароль, который мы хотим, предоставляется всем пользователям, которые собираются подключиться.

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

Проблемы при настройке и работе IpSec в MikroTik

Ниже будут рассмотрены самые частые проблемы, которые не относятся к прямой настройке VPN туннеля типа IpSec, но косвенно могут повлиять на его работу: соединение может

  • Не устанавливаться;
  • Устанавливаться но не работать;
  • Роутер MikroTik не имеет статического маршрута для out пакетов. Другими словами, со стороны MikroTik нет PING-а на удалённую подсеть.

Если соединение не принимает статус ESTABLISHED, кроме корректности настроек следует обратить внимание на Firewall. Поддержи автора статьи, сделай клик по рекламе ↓↓↓

Поддержи автора статьи, сделай клик по рекламе ↓↓↓

/ip firewall filter
add action=accept chain=input comment="Port Access" dst-port=500,1701,4500 \
in-interface=WAN-ether1 protocol=udp

Следующей проблемой может быть нелегитимные ключи IpSec SA, срок действия которых закончился, но новый ключ не был сгенерирован и согласован

Тут стоит обратить внимание на время жизни туннеля, на обоих роутерах, IpSec Profile и IpSec Proposals должны быть идентичными. Для исправления это ситуации нужно:

после регенерации ключей он должен быть в статусе ESTABLISHED.

И последнее дополнение в сторону диагностики работы IpSec туннеля через роутер MikroTik.

/ip route
add distance=1 dst-address=192.168.0.0 gateway=Bridge-LAN

Ниже представлен пример, до и после включение приведенного статического маршрута.

Потроха IKE

IKE_SA_INITIKE_AUTHChild SACREATE_CHILD_SAINFORMATIONAL

                     1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       IKE SA Initiator's SPI                  |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       IKE SA Responder's SPI                  |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Next Payload |    Version    | Exchange Type |     Flags     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Message ID                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            Length                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • SPIi — 64-бит IKE SA Initiator SPI. Случайно сгенерированный инициатором IKE сессии идентификатор.
  • SPIr — 64-бит IKE SA Responder SPI. Аналогично, но только SPI со стороны ответчика. В самом первом сообщении от инициатора это поле заполнено нулевыми байтами.
  • NP — 8-бит Next payload. Идентификатор полезной нагрузки идущей после заголовка.
  • Version — 8-бит версия IKE протокола.
  • ExchType — 8-бит тип IKE обмена: IKE_SA_INIT, IKE_AUTH, CREATE_CHILD_SA или INFORMATIONAL.
  • Flags — 8-бит разных флагов. Единственным интересным флагом является указание является ли сообщение исходящим от инициатора или же это ответ.
  • MsgID — 32-бит порядковый номер сообщения. Используется для обнаружения дубляжа пакетов, их пропажи, replay-атак. Инкрементируется при каждом новом обмене — пара request/response будет иметь один и тот же MsgID. Повторяемые сообщения от инициатора обязаны нести тот же номер, чтобы ответчик мог понять что это идёт повтор.
  • Len — 32-бит длина всего сообщения (заголовок + полезная нагрузка).

SPIi+SPIrTLS 1.3

                     1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Payload  |C|  RESERVED   |         Payload Length        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Next Payload — 8-бит указывающие какой тип полезной нагрузки пойдёт после текущей. Все payload-ы связаны в цепочку и каждый предыдущий указывает кто пойдёт после него. Нулевое значение означает что это последний payload. Указатель типа первого payload находится в IKE заголовке. Единственное исключение это Encrypted Payload, который обязан быть последним payload-ом и его NP равен не нулю (хоть это и последний payload в контексте IKE сообщения), а типу первого payload-а внутри шифротекста.
  • C — флаг «критичности» payload. Если IKEv2 демон не знает и не умеет обрабатывать payload и он помечен как критичный, то IKE сессию придётся прекратить. Не критичный payload можно проигнорировать. В IKE есть много vendor-specific расширений, не представляющих интереса для стороннего ПО.
  • Len — 16-бит полная длина payload (заголовок + содержимое).

NonceN*