Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Описание стенда

Операционная система сервера = Ubuntu 20.04

...

Операционная система клиента = Ubuntu 20.04

Имя VPN клиента = user

Настройка сервера

Установка пакетов для работы

За основу инструкции по настройки сервера была взята следующая инструкция.

...

Code Block
languagebash
titleУстановка пакетов
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
languagebash
titleСоздание ключевых пар и сертификатов УЦ и сервера
# инициализируем директорию для хранения ключей и сертификатов
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
languagebash
title/etc/ipsec.secrets
: RSA "server-key.pem"


Настройка firewall

Code Block
languagebash
titleНастройка firewall
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw allow 500,4500/udp

...

Code Block
languagebash
titleПерезагрузка firewall
sudo ufw disable
sudo ufw enable


Запуск VPN сервера

Code Block
languagebash
titleЗапуск сервера
sudo systemctl restart strongswan-starter


Добавление нового клиента со смарт-картой

Info
titleМодуль pkcs11 для работы со смарт-картами

В настоящий момент смарт-карта отформатированная для работы с librtpkcs11.so модулем не подходит для аутентификации внутри VPN strongswan т.к. токен не поддерживает необходимый механизм для проверки сигнатуры. 

К счастью модуль opensc-pkcs11.so поддерживает их как software реализацию

...

Теперь токен готов к работе и его можно отдать клиенту

Настройка клиента

Проверка доступности сервера

Проверим, что сервер доступен 

Code Block
languagebash
titleпроверка доступности сервера
ping server.astradomain.ad


Установка пакетов

Установим необходимые пакеты для работы:

Code Block
languagebash
titleУстановка пакетов
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:

...