После почти четырёх лет с момента публикации ветки 2.4 подготовлен релиз OpenVPN 2.5.0, пакета для создания виртуальных частных сетей, позволяющего организовать шифрованное соединение между двумя клиентскими машинами или обеспечить работу централизованного VPN-сервера для одновременной работы нескольких клиентов. Код OpenVPN распространяется под лицензией GPLv2, готовые бинарные пакеты формируются для Debian, Ubuntu, CentOS, RHEL и Windows.
Основные новшества:
- Поддержка шифрования канала передачи данных с использованием потокового шифра ChaCha20 и алгоритма аутентификации сообщений (MAC) Poly1305, разработанных Дэниелом Бернштейном (Daniel J. Bernstein), Таней Ланге (Tanja Lange) и Питером Швабе (Peter Schwabe). ChaCha20 и Poly1305 позиционируются как более быстрые и безопасные аналоги AES-256-CTR и HMAC, программная реализация которых позволяет добиться фиксированного времени выполнения без задействования специальной аппаратной поддержки. ChaCha20 и Poly1305 также применяются в VPN WireGuard.
- Возможность предоставления каждому клиенту своего уникального ключа tls-crypt, что позволяет крупным организациям и VPN-провайдерам применять такие же методы защиты стека TLS и предотвращения DoS-атак, которые ранее были доступны в небольших конфигурациях, использующих tls-auth или tls-crypt. Режим активируется при помощи опции «—tls-crypt-v2».
- Улучшен механизм согласования шифра, применяемого для защиты канала передачи данных. Опция ncp-ciphers переименована в data-ciphers для того чтобы избежать неоднозначности при наличии опции tls-cipher, и подчеркнуть, что data-ciphers является предпочтительным для настойки шифров канала данных (поддержка старого названия сохранена для обеспечения совместимости). Клиенты теперь передают на сервер список всех поддерживаемых ими шифров из набора data-ciphers, используя переменную IV_CIPHERS, что позволяет серверу выбрать первый поддерживаемый обеими сторонами шифр. Указанное изменение, например, позволяет указать в data-ciphers набор ChaCha20-Poly1305:AES-256-GCM, но использовать ChaCha20-Poly1305 только если клиент его поддерживает.
- Поддержка TLS 1.3. Для использования TLS 1.3 требуется как минимум OpenSSL 1.1.1. Для тонкой настройки параметров TLS добавлены опции «—tls-ciphersuites» и «—tls-groups».
- Из конфигурации по умолчанию убрана поддержка шифра BF-CBC. В OpenVPN 2.5 по умолчанию теперь принимаются только шифры AES-256-GCM и AES-128-GCM. Изменить данное поведение можно при помощи опции data-ciphers, напрмер, указав в настройках «data-ciphers AES-256-GCM:AES-128-GCM:BF-CBC», а для поддержки очень старых узлов, не поддерживающих согласование шифров (режим «—cipher»), можно указать «data-ciphers-fallback BF-CBC». При обновлении до новой версии OpenVPN настройка «cipher BF-CBC» в старых файлах конфигурации будет преобразована в добавление BF-CBC к набору data-ciphers и включён режим data-ciphers-fallback.
- В плагин auth-pam добавлна поддержка асинхронной (отложенной) аутентификации. Аналогично в опцию «—client-connect» и API для подключения плагинов добавлена возможность отложенного возвращения файла конфигурации.
- Ускорен процесс установки соединения — клиент теперь может указать переменную IV_PROTO в pull-режиме, после чего сервер передаст клиенту конфигурацию, не дожидаясь сообщения PULL_REQUEST.
- Поддержка настройки IP-адресов и маршрутов при помощи интерфейса Netlink, предоставляемого ядром Linux. Netlink применяется при сборке без опции «—enable-iproute2» и позволяет запускать OpenVPN без дополнительных привилегий, необходимых для выполнения утилиты «ip». Поддержка запуска утилит ifconfig и route прекращена.
- В протокол добавлена возможность применения двухфакторной аутентификации или дополнительной аутентификации через Web (SAML), без разрыва сеанса после первой проверки (после первой проверки сеанс остаётся в состоянии «не аутентифицирован» и ожидает завершения второй стадии аутентификации).
- Поддержка тегированных VLAN (802.1q) при работе сервера в режиме TAP, позволяющая разделять клиентов по группам и применять к этим группам разные настройки (выносить в разные подсети, использовать свои правила пакетного фильтра и т.п.). Настройка производится при помощи опций «—vlan-tagging», «—vlan-accept» и «—vlan-pvid».
- Для Windows добавлена поддержка интерфейса wintun, который быстрее, чем традиционные интерфейсы tap9 tun/tap, но не поддерживает режим «—dev tap». Для включения следует использовать опцию «—windows-driver wintun». Обеспечено корректное определение Windows 10. Добавлена поддержка создания установочных файлов на базе msi.
- Появилась возможность работы при наличии только адресов IPv6 внутри VPN-туннеля (ранее было не обойтись без указания адресов IPv4).
- В Linux добавлена поддержка сетевых интерфейсов виртуальной маршрутизации и перенаправления (VRF, Virtual routing and forwarding). Для помещения внешнего сокета в VRF предложена опция «—bind-dev».
- Поддержка передачи через DHCP базового домена для маски «dns search» в resolv.conf, прикрепляемой по умолчанию при операциях поиска по имени в DNS. В Windows домен задаётся при помощи опции «—dhcp-option DOMAIN-SEARCH my.example.com», в Linux через «—up script», а в macOS через GUI.
- Возможность привязки отдельных настроек data-ciphers и data-ciphers-fallback к клиентам из скрипта client-connect.
- Возможность указания размера MTU для интерфейса tun/tap в Windows.
- Поддержка выбора движка OpenSSL для доступа к закрытому ключу (например, TPM).
- В опции «—auth-gen-token» появилась поддержка генерации токена на базе HMAC.
- Возможность использования сетевых масок /31 в настройках IPv4 (OpenVPN больше не пытается настроить широковещательный адрес).
- Добавлена опция «—block-ipv6» для блокирования любых пакетов IPv6.
- В опциях «—ifconfig-ipv6» и «—ifconfig-ipv6-push» разрешено указание имени хоста вместо IP-адреса (адрес будет определён через DNS).
- Объявлены устаревшими или удалены: ncp-disable, вызов через inetd, no-iv, «—client-cert-not-required», «—ifconfig-pool-linear», «—compress xxx», «—disable-multi», «—key-method 1». Прекращена поддержка сборки с OpenSSL 1.0.1. Запрещена сборка без поддержки шифрования (сборочная опция «—disable-crypto» больше не работает, но сохранён режим «—cipher none»). Применение сжатия пакетов признано рискованным из-за возможность совершения атаки VORACLE по восстановлению содержимого.
Источник: https://www.opennet.ru/opennews/art.shtml?num=53981