strongSwang logo

Проект strongSwan (сильный Лебедь) - это комплексная реализация протоколов Internet Key Exchange (IKE), которая позволяет защищать IP-трафик в сценариях IPsec на основе политик и маршрутов — от простых до очень сложных.

Компания strongSwan уделяет особое внимание

  • простота настройки
  • надежные методы шифрования и аутентификации
  • мощные политики IPsec, поддерживающие большие и сложные VPN-сети
  • модульная конструкция с широкими возможностями расширения и переноса

История проекта

strongSwan был запущен в 2005 году как ответвление от закрытого проекта с открытым исходным кодом FreeS/WAN, в который был интегрирован отдельный патч X.509, над которым мы работали для FreeS/WAN с 2000 года.

С тех пор новый демон IKE был написан с нуля в современном объектно-ориентированном стиле программирования, так что нынешняя кодовая база больше не имеет общих элементов с предшественником. Модульная структура этого демона позволяет настраивать его с помощью растущего числа плагинов.

Изначально новый демон поддерживал только протокол IKEv2, а IKEv1 обрабатывался расширенной версией демона pluto из FreeS/WAN. Но поскольку внедрение IKEv2 другими поставщиками заняло больше времени, чем ожидалось, в 2012 году в новый демон strongSwan 5.0 была добавлена поддержка IKEv1, в результате чего pluto и многие другие устаревшие компоненты были удалены.

В течение нескольких лет проект поддерживали исследователи из Университета прикладных наук Рапперсвиль, Швейцария, а именно Андреас Штеффен, Мартин Вилли и Тобиас Бруннер. В июне 2022 года права на интеллектуальную собственность проекта strongSwan были приобретены компанией secunet Security Networks AG.

В настоящее время проект strongSwan поддерживают:

  • Андреас Штеффен, почетный профессор в области безопасности коммуникаций и президент консалтинговой фирмы strongSec GmbH
  • Тобиас Бруннер, инженер-программист в codelabs GmbH
  • secunet Security Networks AG

Описание возможностей

Интернет-обмен ключами (IKE)

  • Реализует протокол обмена ключами IKEv2 (RFC 7296) (также поддерживается IKEv1)
  • Полностью протестирована поддержка туннелей IPv6 IPSec и подключений в транспортном режиме
  • Динамическое обновление IP-адреса и интерфейса с помощью MOBIKE (RFC 4555)
  • Автоматическая вставка и удаление правил брандмауэра на основе политики IPSec
  • Обход NAT с помощью UDP-инкапсуляции и плавающего порта (RFC 3947)
  • Поддержка фрагментации сообщений IKEv2 (RFC 7383) для предотвращения проблем с фрагментацией IP
  • Обнаружение мертвых узлов (DPD, RFC 3706) устраняет зависшие туннели
  • Пул виртуальных IP-адресов, управляемый IKE daemon, DHCP, RADIUS или базой данных SQL
  • IKEv2 SAS может быть перенаправлен на другой шлюз (RFC 5685)
  • Поддерживается бездетная инициализация IKEv2 SA (RFC 6023)
  • Реализованные RFC и интернет-проекты

Модульность

  • Модульная система плагинов обеспечивает широкие возможности расширения и гибкость
  • Плагины могут предоставлять криптографические алгоритмы, учетные данные, методы аутентификации, конфигурации, доступ к IPsec и сетевым стекам и многое другое
  • Встроенные тесты целостности и криптографии для плагинов и библиотек

Аутентификация / Криптография

  • Безопасная аутентификация пользователя IKEv2 EAP (EAP-SIM, EAP-AKA, EAP-TLS, EAP-TTLS, EAP-PEAP, EAP-MSCHAPv2 и т.д.)
  • Дополнительная ретрансляция сообщений EAP на сервер AAA через плагин EAP-RADIUS
  • Поддержка обмена несколькими аутентификациями IKEv2 (RFC 4739)
  • Аутентификация на основе сертификатов X.509 или предварительно совместно используемых ключей
  • Использование алгоритмов надежной подписи с аутентификацией подписи в IKEv2 (RFC 7427)
  • Поддержка CRLS и OCSP (RFC 6960)
  • Хранение закрытых ключей и сертификатов на смарт-карте (интерфейс PKCS #11) или защищено TPM 2.0.
  • Поддержка групп DH эллиптической кривой NIST, подписей и сертификатов ECDSA
  • Поддержка подписей и сертификатов X25519 elliptic curve DH group (RFC 8031) и Ed25519 (RFC 8420)
  • Поддержка нескольких классических и постквантовых обменов ключами (RFC 9370), включая ML-KEM (FIPS 203)
  • Trusted Network Connect совместим с PB-TNC (RFC 5793), PA-TNC (RFC 5792), PT-TLS (RFC 6876), PT-EAP (RFC 7171) и SWIMA для PA-TNC (RFC 8412)

Переносимость

Описание последней версии программы

Текущая версия программы 6.0.7

Уязвимости

  • CVE-2026-47895 — устранена уязвимость в libstrongswan, связанная с клонированием определенных идентификаторов, которая могла привести к двойному освобождению памяти и потенциально к удаленному выполнению кода. Уязвимость устранена в версиях 4.3.3 и новее.

Усовершенствования и оптимизация

  • Теперь проверяется срок действия (notBefore/notAfter) последнего сертификата в неполной цепочке доверия для предварительно доверенного сертификата. Ранее срок действия проверялся только в том случае, если был найден сертификат эмитента. Это особенно актуально для несамоподписанных сертификатов, которые настроены явно (например, в remote.certs в файле swanctl.conf), но сертификат центра сертификации для которых не загружен (0d17838).
  • Как и в случае с описанным выше изменением, теперь также проверяется действительность предварительно доверенных самоподписанных сертификатов (f0a489f).
  • Включите смешанные конфигурации IPComp для ядра Linux версии 6.3 и выше (a904f91).

Изменения в плагине и конфигурации

  • Событие list-conn в VICI теперь включает предложения по протоколам IKE и IPsec. Пронумерованный (начиная с нуля) раздел для каждого предложения содержит списки идентификаторов алгоритмов для каждого типа преобразования, описанного в предложении. Поскольку предложения могут быть довольно объемными, команда swanctl --list-conns в настоящее время не выводит их, чтобы сохранить компактность вывода, но для их просмотра можно использовать --raw (#30675b56e56).
  • Команда swanctl --list-conns теперь принимает параметр --ike для фильтрации подключений по имени (5185b6f).
  • charon-cmd больше не использует IPv4 по умолчанию (64e01e2) и позволяет настраивать локальную конечную точку с помощью параметра --host-local (74fd259).
  • Правильно настройте (или, скорее, отключите) параметр --with-plugins-packaged-separately, добавленный в версии 6.0.5 (172c2a3).

Исправления

  • Исправлена ошибка при получении ключа, возникавшая при сбросе IKE SA после повторной передачи IKE_INTERMEDIATE (dc8b479). Ранее это приводило к сбою шифрования при следующей попытке.
  • Исправлена ошибка обработки, возникавшая, если запрос IKE_INTERMEDIATE не содержал полезную нагрузку KE (ac703e4).
  • Исправлена совместимость плагина openssl с OpenSSL 4 (528e5f0374b17f8ff3238).
  • Устранена потенциальная ошибка чтения вне стека в плагине dhcp при чтении сообщений DHCP (8f22345).
  • Устранена потенциальная ошибка чтения вне стека на стороне клиента в плагине eap-aka при слишком коротком значении AT_RAND (4df5310).
  • Устранена потенциальная ошибка разыменования нулевого указателя в плагине pkcs7 после проверки подписанных атрибутов (531de4d).
  • Устранена потенциальная возможность внедрения команд при создании тегов SWID в нерекомендуемых конфигурациях (9ac3db8).
  • Исправлена настройка IPv6-адресов на устройствах TUN в Linux, хотя в настоящее время эта функция не используется (ea56986).

Для разработчиков

  • Методы ike_cfg_t::get_proposals и child_cfg_t::get_proposals получили аргумент log для подавления сообщений configured proposals: ... журнала уровня 2, которые они обычно генерируют.
  • Идентификаторы OID для эллиптических кривых NIST SECP были переименованы с заменой сбивающего с толку префикса SECT (bff405c).
  • Улучшена обработка кэша при выполнении GitHub CI, чтобы сократить объем хранилища и избежать удаления кэша базовой ветки при работе с несколькими функциональными ветками.

Список всех закрытых проблем и запросов на включение изменений приведен в версии 6.0.7.

Документация и источники

Варианты установки strongSwan на сервер

Установка через пакеты дистрибутива (лучший вариант для большинства)

ОС VPS Ubuntu/Debian

Источник

sudo apt update
sudo apt install strongswan strongswan-pki libcharon-extra-plugins libcharon-extauth-plugins libstrongswan-extra-plugins -y

Установка из исходников (максимальная контроль и функции)

 

 

Создание стенда

liv@singularity:~/strongswan$ uname -a
Linux singularity 6.8.0-124-generic #124-Ubuntu SMP PREEMPT_DYNAMIC Tue May 26 13:00:45 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux

liv@singularity:~$ hostnamectl status
 Static hostname: singularity
       Icon name: computer-vm
         Chassis: vm 🖴
      Machine ID: de1e108b32d645b6ae63a5da44f92cfc
         Boot ID: f4b1bf7a309a4f0b8633a46e25a28f0c
  Virtualization: kvm
Operating System: Ubuntu 24.04.4 LTS
          Kernel: Linux 6.8.0-124-generic
    Architecture: x86-64
 Hardware Vendor: QEMU
  Hardware Model: Standard PC _i440FX + PIIX, 1996_
Firmware Version: 1.16.3-debian-1.16.3-2
   Firmware Date: Tue 2014-04-01
    Firmware Age: 12y 2month 1w 3d
Добавить комментарий