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
# пакеты для работы StrongswanstrongSwan 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

# копируем полученные сертификаты в директорию strongswanstrongSwan
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 для работы со смарт-картами

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

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

...

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

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

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

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

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


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

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

Code Block
languagebash
titleУстановка пакетов
sudo apt update
# пакеты для работы StrongswanstrongSwan 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:

...

Настроим файл конфигурации strongswan strongSwan /etc/ipsec.conf:

Code Block
languagebash
title/etc/ipsec.conf
config setup

conn ikev2-rw
# измените адрес сервера на свой
    right=server.astradomain.ad
    rightid=@server.astradomain.ad

    rightsubnet=0.0.0.0/0
    rightauth=pubkey
    leftsourceip=%config
# имя пользователя для которого выдан сертификат
    leftid=user
    leftcert=%smartcard:50
    leftauth=eap
    eap_identity=%identity
    auto=start

...

Настроим файл паролей аутентфикации strongswan strongSwan /etc/ipsec.secrets и укажем, какой ключ нужно использовать для аутентфикации по смарт-карте:

...

Более подробно о способах задания паролей смарт-карт можно почитать тут.

Настройка модуля pkcs11

Настроим использование pkcs11 модулей в strongswanstrongSwan. Для этого откроем файл конфигурации /etc/strongswan.d/charon/pkcs11.conf и отредактируем настройки модулей pkcs11:

...