Описание стенда
Операционная система сервера = Ubuntu 20.04
...
Операционная система клиента = Ubuntu 20.04
Имя VPN клиента = user
Настройка сервера
Установка пакетов для работы
За основу инструкции по настройки сервера была взята следующая инструкция.
...
Code Block | ||||
---|---|---|---|---|
| ||||
sudo apt update # пакеты для работы Strongswan VPN сервера sudo apt-get install strongswan strongswan-pki libcharon-extra-plugins libcharon-extauth-plugins # пакеты для работы со смарт-картами (чтобы создать ключевую пару и сертификаты на токене) sudo apt install opensc libengine-pkcs11-openssl1.1 |
Генерация ключевых пар и сертификатов УЦ и сервера:
Code Block | ||||
---|---|---|---|---|
| ||||
# инициализируем директорию для хранения ключей и сертификатов mkdir -p ~/pki/{cacerts,certs,private} chmod 700 ~/pki # создание ключевой пары УЦ pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/ca-key.pem # создание корневого сертификата pki --self --ca --lifetime 3650 --in ~/pki/private/ca-key.pem \ --type rsa --dn "CN=VPN root CA" --outform pem > ~/pki/cacerts/ca-cert.pem # создание ключевой пары сервера pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/server-key.pem # получение сертификата сервера # обратите внимание, что аргументы --dn и --san нужно будет заменить на свои pki --pub --in ~/pki/private/server-key.pem --type rsa \ | pki --issue --lifetime 1825 \ --cacert ~/pki/cacerts/ca-cert.pem \ --cakey ~/pki/private/ca-key.pem \ --dn "CN=server.astradomomain.ad" --san server.astradomain.ad \ --flag serverAuth --flag ikeIntermediate --outform pem \ > ~/pki/certs/server-cert.pem # копируем полученные сертификаты в директорию strongswan sudo cp -r ~/pki/* /etc/ipsec.d/ |
Настройка strongswan
Сохраним предыдущую конфигурацию:
...
Code Block | ||||
---|---|---|---|---|
| ||||
: RSA "server-key.pem" |
Настройка firewall
Code Block | ||||
---|---|---|---|---|
| ||||
sudo ufw allow OpenSSH sudo ufw enable sudo ufw allow 500,4500/udp |
...
Code Block | ||||
---|---|---|---|---|
| ||||
sudo ufw disable sudo ufw enable |
Запуск VPN сервера
Code Block | ||||
---|---|---|---|---|
| ||||
sudo systemctl restart strongswan-starter |
Добавление нового клиента со смарт-картой
Info | ||
---|---|---|
| ||
В настоящий момент смарт-карта отформатированная для работы с librtpkcs11.so модулем не подходит для аутентификации внутри VPN strongswan т.к. токен не поддерживает необходимый механизм для проверки сигнатуры. К счастью модуль opensc-pkcs11.so поддерживает их как software реализацию |
...
Теперь токен готов к работе и его можно отдать клиенту
Настройка клиента
Проверка доступности сервера
Проверим, что сервер доступен
Code Block | ||||
---|---|---|---|---|
| ||||
ping server.astradomain.ad |
Установка пакетов
Установим необходимые пакеты для работы:
Code Block | ||||
---|---|---|---|---|
| ||||
sudo apt update # пакеты для работы Strongswan VPN сервера sudo apt-get install strongswan libstrongswan-extra-plugins libcharon-extra-plugins # пакеты для работы со смарт-картами (чтобы создать ключевую пару и сертификаты на токене) sudo apt install opensc libengine-pkcs11-openssl1.1 |
Настройка strongswan
Корневой сертификат сервера положим в дирректорию /etc/ipsec.d/cacerts:
...
Более подробно о способах задания паролей смарт-карт можно почитать тут.
Настройка модуля pkcs11
Настроим использование pkcs11 модулей в strongswan. Для этого откроем файл конфигурации /etc/strongswan.d/charon/pkcs11.conf и отредактируем настройки модулей pkcs11:
...