...
- Установить пакеты с strongSwan:
Для Astra Linux SE 1.8 дополнительно установить:Command sudo apt install strongswan libstrongswan-extra-plugins
Command sudo apt install libtss2-tcti-tabrmd0
- Скопировать из УЦ на клиентский узел:
-ca.cert.pem(сертификат УЦ) в каталог/etc/ipsec.d/cacerts/. - Задать настройки strongSwan в файле
/etc/ipsec.conf:Блок кода config setup charondebug= ike 4, cfg 2 conn client type=tunnel auto=start keyexchange=ikev2 keyingtries=%forever ike=aes256-sha1-modp1024! esp=aes256-sha1! dpdaction=restart forceencaps=yes leftauth=pubkey leftcert=<токен_и_закрытый_ключ> # Например: %smartcard0@rutoken:45 или %smartcard:45 # Формат значения <токен_и_закрытый_ключ> описан ниже в разделе "Настройка ... токена ...". leftsendcert=always leftsourceip=%config right=<IP-адрес_сервера> # Например: 10.192.6.108 rightid=<IP-адрес_сервера> # Например: 10.192.6.108 rightauth=pubkey rightsubnet=<виртуальная_сеть__предоставляемая_сервером> # Например: 10.1.1.0/24 # Если указать 0.0.0.0/0, то весь сетевой траффик клиента # будет "заворачиваться" в VPN-соединение (туннель). # Тогда на сервере параметру leftsubnet тоже # необходимо задать значение 0.0.0.0/0.
...
- Включить поддержку токенов в strongSwan.
Для этого в файле/etc/strongswan.d/charon/pkcs11.confв блокеmodulesуказать пути до интерфейсных библиотек используемых токенов:
Например, для токенов: Рутокен ЭЦП и Аладдин (закомментирован) – файлБлок кода pkcs11 { # Whether to load the plugin. Can also be an integer to increase the # priority of this plugin. load = yes ... # List of available PKCS#11 modules. modules { <название_модуля_1> { path = <путь_к_интерфейсной_библиотеке_токена_1> } <название_модуля_2> { path = <путь_к_интерфейсной_библиотеке_токена_2> } } }/etc/strongswan.d/charon/pkcs11.confможет выглядеть так:Блок кода pkcs11 { load = yes modules { rutoken { path = /usr/lib/librtpkcs11ecp.so } # aladdin { # path = /usr/lib/libjcPKCS11-2.so # } } } - Настроить strongSwan на использование закрытого ключа клиента, который находится на токене.
Для этого указать в файле/etc/ipsec.secretsстроку с описанием токена и закрытого ключа:
- с указанием pin-кода в файле:
- или более безопасный вариант, при котором pin-код будет вводиться пользователем в командной строке:Блок кода : PIN <токен_и_закрытый_ключ> <pin-код>
гдеБлок кода : PIN <токен_и_закрытый_ключ> %prompt
- <токен_и_закрытый_ключ> – задаётся по формату: %smartcard[<номер_слота_с_токеном>[@<название_модуля>]]:<идентификатор_ключевой_пары>
где
- <название_модуля> – название модуля в файле/etc/strongswan.d/charon/pkcs11.conf, в котором указана интерфейсная библиотека для работы с токеном;
- <идентификатор_ключевой_пары> – идентификатор, с которым закрытый ключ записан на токен.
Например:%smartcard0@rutoken:45
-
- <pin-код> – пользовательский pin-код токена для доступа к объектам на токене.Примечание Если к компьютеру подключается только один ключевой носитель, то достаточно использовать укороченный формат параметра <токен_и_закрытый_ключ>: %smartcard:<идентификатор_ключевой_пары>
Например:
%smartcard:45
Примеры Пример файла/etc/ipsec.secrets:
- для вышеприведённого Рутокена с указанием pin-кодакодом, указанным в файле:
Пример файлаБлок кода : PIN %smartcard0@rutoken:45 12345678
/etc/ipsec.secretsдля вышеприведённого Рутокена, при котором pin-код вводится - для Рутокена с pin-кодом, вводимым пользователем:
- при подключении к компьютеру единственного токена, поддержка которого включена в strongSwan, и с pin-кодом, вводимым пользователем:Блок кода : PIN %smartcard0@rutoken:45 %promptБлок кода : PIN %smartcard0@rutoken%smartcard:45 %prompt
- Перезапустить strongSwan для применения настроек:
Command sudo ipsec restart
- Если в файле
/etc/ipsec.secretsуказана опция%prompt, то после каждого запуска (перезапуска) strongSwan необходимо вручную вводить pin-код токена.
Для этого выполнить команду:
Если strongSwan-сервер ещё не успел запуститься, то команда завершится без вывода какой-либо информации. Необходимо подождать 5-10 секунд и повторить команду "Command sudo ipsec rereadsecrets
sudo ipsec rereadsecrets".
Появится приглашение для ввода pin-кода:
Ввести пользовательский pin-код токена, нажать клавишу <ENTER>.Блок кода Login to '%smartcard0@rutoken:45' required PIN:
Выполнить команду, чтобы strongSwan перезагрузил настройки и установил соединение с VPN-сервером:Command sudo ipsec reload
...
- Исключить таблицу маршрутизации 101 из используемых strongSwan-клиентом.
Для этого в файле/etc/strongswan.d/charon.confдобавить параметр в блокеcharonприсвоить параметруignore_routing_tablesв блокеcharonзначение101:Блок кода charon { ... # WhetherA tospace-separated ignorelist theof trafficrouting selectorstables fromto thebe kernel'sexcluded acquirefrom eventsroute # for IKEv2 connections (they are not used for IKEv1)lookups. # ignore_acquirerouting_tstables = no ignore_routing_tables = 101 ... } - Перезагрузить операционную систему.
В аплете NetworkManager не доступен ключевой носитель для VPN-соединения IPsec
Решение.
На компьютере пользователя:компьютере пользователя:
- Установить strongSwan-расширение для работы с NetworkManager:
Command sudo apt install strongswan-nm
- Включить поддержку ключевого носителя для NetworkManager.
Для этого создать файл (если он не создан)/etc/strongswan.d/charon-nm.confи добавить в него блок параметров, содержащих путь до интерфейсной библиотеки используемого токена:
Например, для Рутокена ЭЦП файлБлок кода charon-nm { plugins { pkcs11 { modules { <название_модуля_1> { path = <путь_к_интерфейсной_библиотеке_токена_1> } } } } }/etc/strongswan.d/charon-nm.confможет выглядеть так:Блок кода charon-nm { plugins { pkcs11 { modules { rutoken { path = /usr/lib/librtpkcs11ecp.so } } } } } - Перезагрузить операционную систему.
- Настроить в аплете NetworkManager VPN-соединение IPsec:
- Отключить уведомления в аплете NetworkManager.
- Запустить в аплете NetworkManager настроенное VPN-соединение IPsec.
Появится уведомление об успешном соединении:
Также появится сообщение об успешном соединении в Журнале системных событий:
...
- для создания сертификата сервера
server.cert.pem:Command sudo pki --pub --in /etc/ipsec.d/private/server.key.pem --type rsa \
| sudo pki --issue --lifetime 3650 --cacert /etc/ipsec.d/cacerts/ca.cert.pem --cakey /etc/ipsec.d/private/ca.key.pem \
--dn "CN=<IP-адрес_сервера>" --san "<IP-адрес_сервера>" --san "<IP-адрес_сервера>" --flag serverAuth --outform pem \
| sudo tee /etc/ipsec.d/certs/server.cert.pem - для создания запроса на сертификат клиента
client1.cert.csr:
- при использовании пассивного ключевого носителя:
- при использовании активного ключевого носителя:Command openssl req -new -key client1.key.pem -out client1.cert.csr \
-subj "/CN=<IP-адрес_клиента>" -addext "subjectAltName=IP.1:<IP-адрес_клиента>, IP.2:<IP-адрес_клиента>"Command openssl req -new -engine pkcs11 -keyform engine -out client1.cert.csr \
-key pkcs11:id="%<идентификатор_ключевой_пары>" \
-subj "/CN=<IP-адрес_клиента>" -addext "subjectAltName=IP.1:<IP-адрес_клиента>, IP.2:<IP-адрес_клиента>"
Не доступны ресурсы локальной сети при настройке strongSwan-клиента: rightsubnet=0.0.0.0/0
Если в настройках strongSwan-клиента (раздел 5.1) параметру rightsubnet присвоено значение 0.0.0.0/0 и при этом ресурсы локальной сети стали недоступны, то, возможно, решением проблемы будет присвоение параметру rightsubnet значения 0.0.0.1/0.



