Увидел свет OpenVPN 2.4.0


После почти четырёх лет с момента публикации ветки 2.3 выпущен релиз OpenVPN 2.4.0, пакета для создания виртуальных частных сетей, позволяющего организовать шифрованное соединение между двумя клиентскими машинами или обеспечить работу централизованного VPN-сервера для одновременной работы нескольких клиентов. Код OpenVPN распространяется под лицензией GPLv2, готовые бинарные пакеты подготовлены для Debian, Ubuntu, CentOS, RHEL и Windows.

Из добавленных в новой версии улучшений можно отметить:

  • Добавлена возможность бесшовной смены IP-адреса и номера сетевого порта клиента без разрыва соединения VPN. В новой версии представлен новый протокол P_DATA_V2, в котором для идентификации клиента используется универсальный Peer-ID. При изменении IP-адреса/порта, но сохранении Peer-ID, серевер считает соединение мигрировавшим, проверяет HMAC и обновляет сетевые параметры клиента в своих внутренних структурах без повторного согласования соединения;
  • Реализована возможность использования режима блочного шифрования AEAD GCM, при котором шифруется лишь важная часть данных (остаются открыты IP-адреса, номера протоколов и прочие метаданные), но всё сообщение, включая открытые метаданные, аутентифицировано. По сравнению с CBC пакеты в формате AEAD привносят небольшие накладные расходы — при схеме AES-128-GCM дополнительно добавляется 20 байт на пакет вместо 30 байт для AES-128-CBC + HMAC-SHA1;
  • Добавлена поддержка протокола согласования ключей на основе эллиптических кривых ECDH (Elliptic Curve Diffie-Hellmann), позволяющего имея незащищённый канал связи получить двум сторонам общий секретный ключ для дальнейшего шифрования;
  • Включен по умолчанию механизм согласования шифров (»--cipher»), используемых для защиты канала передачи данных. Если клиент объявит о поддержке согласуемых параметров шифрования (NCP, Negotiable Crypto Parameters), то сервер выберет оптимальный шифр (по умолчанию AES-256-GCM) и предложит его клиенту. Управлять доступными для согласования шифрами можно через опции »--ncp-ciphers» и »--ncp-disable». В случае если на клиенте или сервере используется старая версия OpenVPN, то возможно ограниченное согласование, при котором система с OpenVPN 2.4 может выбрать шифр, используемый на стороне с более ранее версией OpenVPN. Например, клиент 2.4 с »--cipher BF-CBC» и «ncp-ciphers AES-256-GCM: AES-256-CBC» может подсоединиться как к серверу 2.3 с выбранным шифром BF-CBC в файле конфигурации, так и с AES-256-CBC;
  • Добавлена поддержка сжатия при помощи алгоритма LZ4 (ранее поддерживался только LZO) и возможность передачи параметров сжатия со стороны сервера;
  • Добавлена опция »--tls-crypt» для увеличения защиты конфеденциальных данных о соединении пользователя. Опция позволяет использовать заранее предопределённые статические ключи для шифрования пакетов с управляющей информацией;
  • Улучшена работа в окружениях, одновременно использующих IPv4 и IPv6. Например, при соединении с внешним хостом OpenVPN пытается соединиться перебирая все привязанные в DNS адреса IPv6 и IPv4. В настройки добавлена новая опция DNS6 для явного задания DNS-резолвера для IPv6;
  • Добавлена опция pull-filter, позволяющая явно разрешить или запретить приём опций отправляемых сервером. Также добавлена опция push-remove для выборочного удаления опций из списка «push»;
  • Добавлена опция »--auth-gen-token», при указании которой сервер сгенерирует случайный токен и предаст его клиенту без изменения модулей аутентификации. Режим полезен для реализации схем с одноразовыми паролями, позволяя организовать периодическое обновление ключей без необходимости ввода новых кодов OTP;
  • Значительно расширен графический интерфейс, встроенный в установочный пакет для Windows. В том числе обеспечена возможность запуска OpenVPN GUI в Windows без наличия привилегий администратора. Полностью переписана прослойка для запуска сервиса OpenVPN в Windows. В установщике OpenVPN 2.4 прекращена поддержка Windows XP;
  • Добавлена поддержка платформ Android (через VPNService API) и AIX (через устройство tap). Для macOS реализована возможность использования встроенного хранилища ключей.

© OpenNet