IP Security — это комплект протоколов, в состав которого входят почти 20 предложений по стандартам и 18 RFC. Он позволяет осуществлять подтверждение подлинности (аутентификацию), проверку целостности и/или шифрование IP-пакетов. IPsec также включает в себя протоколы для защищённого обмена ключами в интернете. Основное назначение протокола — организация VPN-соединений. Рассказываем, как появился и как устроен IPsec, а также как подключить VPN-соединение в Win10.  В 1994 году Совет по архитектуре интернета (IAB) выпустил отчёт «Безопасность архитектуры интернета». В этом документе описывались основные области применения дополнительных средств безопасности в сети, в том числе защита от несанкционированного мониторинга, подмены пакетов и управления потоками данных. В числе первоочередных и наиболее важных защитных мер указывалась необходимость разработки концепции и основных механизмов обеспечения целостности и конфиденциальности потоков данных. Поскольку изменение базовых протоколов семейства TCP/IP вызвало бы полную перестройку интернета, нужно было обеспечить безопасность информационного обмена в открытых телекоммуникационных сетях на базе существующих протоколов. Так начала создаваться спецификация Secure IP, дополнительная по отношению к протоколам IPv4 и IPv6. Спецификация IP Security (известная сегодня как IPsec) разрабатывается Рабочей группой IP Security Protocol IETF. Первоначально IPsec включал в себя алгоритмо-независимые базовые спецификации, опубликованные в качестве RFC-документов "Архитектура безопасности IP", "Аутентифицирующий заголовок (AH)", "Инкапсуляция зашифрованных данных (ESP)" (RFC1825, 1826 и 1827).  В ноябре 1998 года Рабочая группа IP Security Protocol предложила новые версии этих спецификаций, имеющие в настоящее время статус предварительных стандартов, это RFC2401 —RFC2412. RFC1825-27 уже несколько лет считаются устаревшими и реально не применяются. Кроме этого, существуют несколько алгоритмозависимых спецификаций, использующих протоколы MD5, SHA, DES. Рабочая группа IP Security Protocol разрабатывает также и протоколы управления ключевой информацией. В задачу этой группы входит разработка Internet Key Management Protocol (IKMP), протокола управления ключами прикладного уровня, не зависящего от используемых протоколов обеспечения безопасности. Сейчас рассматриваются концепции управления ключами с использованием спецификации Internet Security Association and Key Management Protocol (ISAKMP) и протокола Oakley Key Determination Protocol.  Спецификация ISAKMP описывает механизмы согласования атрибутов используемых протоколов, в то время как протокол Oakley позволяет устанавливать сессионные ключи на компьютеры сети Интернет. Ещё рассматривались возможности использования механизмов управления ключами протокола SKIP, но сейчас они нигде не используются. Создаваемые стандарты управления ключевой информацией, возможно, будут поддерживать Центры распределения ключей, аналогичные используемым в системе Kerberos. Протоколами ключевого управления для IPSec на основе Kerberos сейчас занимается относительно новая рабочая группа KINK (Kerberized Internet Negotiation of Keys). Гарантии целостности и конфиденциальности данных в спецификации IPsec обеспечиваются за счет использования механизмов аутентификации и шифрования соответственно. Последние, в свою очередь, основаны на предварительном согласовании сторонами информационного обмена т.н. «контекста безопасности» – применяемых криптографических алгоритмов, алгоритмов управления ключевой информацией и их параметров.  Спецификация IPsec предусматривает возможность поддержки сторонами информационного обмена различных протоколов и параметров аутентификации и шифрования пакетов данных, а также различных схем распределения ключей. При этом результатом согласования контекста безопасности является установление индекса параметров безопасности (SPI), который по сути является указателем на определенный элемент внутренней структуры стороны информационного обмена, описывающей возможные наборы параметров безопасности. IPSec, который станет составной частью IPv6, работает на третьем или сетевом уровне. В результате передаваемые IP-пакеты будут защищены прозрачным для сетевых приложений и инфраструктуры образом. В отличие от SSL (Secure Socket Layer), который работает на четвертом (транспортном) уровне и теснее связан с более высокими уровнями модели OSI, IPSec призван обеспечить низкоуровневую защиту. К IP-данным, готовым к передаче по виртуальной частной сети, IPSec добавляет заголовок для идентификации защищенных пакетов. Перед передачей эти пакеты инкапсулируются в другие IP-пакеты. IPSec поддерживает несколько типов шифрования, в том числе Data Encryption Standard (DES) и Message Digest 5 (MD5). Чтобы установить защищенное соединение, оба участника сеанса должны иметь возможность быстро согласовать параметры защиты (алгоритмы аутентификации и ключи). IPSec поддерживает два типа схем управления ключами, с помощью которых участники могут согласовать параметры сеанса. Эта двойная поддержка в свое время вызвала трения в IETF Working Group. С текущей версией IP, IPv4, могут быть использованы Internet Secure Association Key Management Protocol (ISAKMP) или Simple Key Management for Internet Protocol. С новой версией IP, IPv6, придется использовать ISAKMP, известный сейчас как IKE, хотя не исключается возможность использования SKIP. Но стоит помнить, что SKIP уже давно не рассматривается как кандидат управления ключами, и даже был исключён из списка возможных кандидатов ещё в 1997 г. IPSec быстрый. Он работает в контексте ядра операционной системы, а OpenVPN в контексте пользователя (userspace), и на обработку каждого пакета происходит переключение контекста между процессами ядра и процессами пользователя. Современные ОС (исключая мобильные) поддерживают IPsec IKEv2 из коробки. Не требуется установка дополнительного прикладного ПО, драйверов виртуальных адаптеров TUN/TAP и тому подобного. Настройка VPN-соединений происходит из системного меню. Рассмотрим пример настройки VPN-подключения на основе IKEv2 IKE (Internet Key Exchange) — реальный управляющий протокол IPsec на основе ISAKMP. На практике можно сказать, что Phase 1 — согласование настроек IKE, а Phase 2 — согласование настроек ESP. В UNIX-подобных системах IKE — это единственная часть стека IPsec, которая работает в виде обычного процесса. Само шифрование реализовано в ядре, и демон IKE передаёт ему параметры после согласования со второй стороной. В Linux это происходит через netlink или команды ip xfrm. Мастер настройки VPN-подключения вызывается из меню «Пуск». Выбираем пункт «Добавить VPN-подключение» и переходим в окно настройки VPN-соединений. Идём в пункт «Добавить VPN-подключение» и попадаем в окно настройки параметров подключения. Заполняем поля: 1) Поставщик услуг – «Windows (встроенные)» (других вариантов и нет). 2) Имя подключения – произвольное название (главное, чтобы можно было отличить от других подключений, если они будут). 3) Имя или адрес сервера – адрес сервера VPN (через который и организуется VPN-подключение). 4) Тип VPN – в нашем примере IKE2. Но могут использоваться и более старые протоколы (SSTP, PPTP). Присутствует и вариант «автоматического» выбора типа подключения на основе поддерживаемых сервером. 5) Тип данных для входа – имеется в виду способ аутентификации. Главным образом используются традиционные входы по «логин/пароль» или с применением сертификата. 6) «Имя пользователя», «Пароль». Развернуть свой IKEv2 сервер можно за пару минут с помощью скриптов автоматической установки или используя готовые контейнеры. Использовать docker не рекомендуется, так как его сетевая подсистема снижает производительность IPsec на дешевых тарифах VPS. Вы также можете настроить IKEv2-сервер вручную, на Хабре есть статьи с примерами настройки сервера Strongswan. Мы будем использовать один из наиболее удачных вариантов скриптов автонастройки github.com/jawj/IKEv2-setup Этот скрипт хорош тем, что использует сертификаты от Let’s Encrypt и автоматически генерирует валидный сертификат. Для развёртывания VPN-сервера нам потребуется Vcd. Подойдет самая простая конфигурация с одним ядром процессора. Скрипт из нашего примера лучше всего протестирован на Ubuntu, поэтому при создании сервера используем этот образ ОС. Ждём окончания установки сервера, настраиваем сеть и записываем учётные данные для подключения.  Подключаемся по SSH, загружаем и запускаем скрипт установки: Заданные реквизиты пользователя VPN теперь нужно использовать для настройки подключения на узле клиента. Необходимо указать именно то доменное имя, которое вы вводили в Hostname for VPN. Чтобы добавить нового пользователя в уже созданный сервер, отредактируйте файл /etc/ipsec.secrets. Мне кажется, что с точки зрения пользователя IKEv2/IPsec выглядит предпочтительнее других реализаций VPN. Настройки и управление таким сервером как минимум не труднее, чем аналогичного на OpenVPN. При организации удалённого доступа в корпоративной среде вполне подходит IKEv2. Это позволит обойтись без лишних телодвижений, проще в настройке и обслуживании. Что ещё интересного есть в блоге Cloud4Y → Как открыть сейф с помощью ручки → Сделайте Linux похожим на Windows 95 → Как распечатать цветной механический телевизор на 3D-принтере → WD-40: средство, которое может почти всё → Взлёт и падение игрового чипа 6502 Подписывайтесь на наш Telegram-канал, чтобы не пропустить очередную статью. Пишем только по делу. А ещё напоминаем про второй сезон нашего сериала ITить-колотить. Его можно посмотреть на YouTube и ВКонтакте. https://youtu.be/8arneYYzsJw  Корпоративный облачный провайдер