Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

  1. Разрешить пересылку сетевых пакетов:
    Command

    cat << EOF | sudo tee /etc/sysctl.d/10-net-forward.conf >/dev/null
    net.ipv4.ip_forward=1
    net.ipv6.conf.all.forwarding=1
    net.ipv4.conf.all.accept_redirects = 0
    net.ipv4.conf.all.send_redirects = 0
    net.ipv6.conf.all.accept_redirects = 0
    net.ipv6.conf.all.send_redirects = 0
    EOF
    sudo sysctl --system

Якорь
Create_CA
Create_CA

Создание удостоверяющего центра и выпуск

...

сертификата сервера

Все сертификаты создаются и хранятся в удостоверяющем центре (УЦ), в качестве которого может использоваться любой компьютер. 

...

  1. Установить пакеты с strongSwan:
    Command

    sudo apt install strongswan libstrongswan-extra-plugins

  2. Если УЦ был создан на сервере с помощью команд из раздела "Создание удостоверяющего центра и сертификатов", то сертификаты уже расположены в нужном месте, а этот пункт пропускается.
    Скопировать из УЦ на серверный узел:
      - ca.cert.pem (сертификат УЦ) в каталог /etc/ipsec.d/cacerts/;
      - server.cert.pem (сертификат сервера) в каталог /etc/ipsec.d/certs/;
      - server.key.pem (закрытый ключ сервера) в каталог /etc/ipsec.d/private/.
  3. Указать закрытый ключ strongSwan-сервера в файле /etc/ipsec.secrets в виде строки:
    Блок кода
    : RSA server.key.pem
  4. Задать настройки strongSwan-сервера в файле /etc/ipsec.conf:
    Блок кода
    config setup
            charondebug= ike 4, cfg 2
    
    conn server
            type=tunnel
            auto=add
            keyexchange=ikev2
            keyingtries=%forever
            ike=aes256-sha1-modp1024!
            esp=aes256-sha1!
            dpdaction=hold
            dpddelay=300s
            forceencaps=yes
    
            leftid=<IP-адрес_сервера>                                           # Например: 10.192.6.108
            leftauth=pubkey
            leftcert=server.cert.pem                                            # Сертификат сервера
            leftsendcert=always
            leftsubnet=<виртуальная_сеть__предоставляемая_сервером>             # Например: 10.1.1.0/24
    
            rightauth=pubkey
            rightid=%any
            rightsourceip=<диапазон_виртуальных_адресов_для_выдачи_клиентам>    # Например: 10.1.1.0/24
            rightdns=<IP-адреса_DNS-серверов__передаваемые_клиентам>            # Например: 10.1.1.250,10.1.1.240
  5. Перезапустить strongSwan для применения настроек:
    Command

    sudo ipsec restart

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

...


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

На клиентском узлев домашнем каталоге пользователя::

  1. Установить пакеты с strongSwanСоздать закрытый ключ клиента client1.key.pem:
    Command

    openssl genrsa -out client1.key.pem 4096

  2. Создать запрос на подписание клиентского сертификата client1.cert.csr:
    Command

    openssl req -key client1.key.pem -new -out client1.cert.csr -subj "/CN=<IP-адрес_клиента>" -addext "subjectAltName=IP.1:<IP-адрес_клиента>"

  3. Отправить файл с запросом client1.cert.csr на узел УЦ.

На удостоверяющем центре:

  1. Подписать запрос client1.cert.csr с помощью сертификата УЦ и сохранить подписанный сертификат клиента client1.cert.pem в каталоге /etc/ipsec.d/certs/:
    Command

    sudo pki --issue --lifetime 3650 --cacert /etc/ipsec.d/cacerts/ca.cert.pem --cakey /etc/ipsec.d/private/ca.key.pem \
        --in client
    1.cert.csr --type pkcs10 --flag clientAuth  --flag ikeIntermediate --outform pem \
      | sudo tee /etc/ipsec.d/certs/client1.cert.pem

  2. Скопировать подписанный сертификат клиента client1.cert.pem на клиентский узел в домашний каталог пользователя.

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

На клиентском узле:

  1. sudo apt install strongswan libstrongswan-extra-plugins

  2. Скопировать из УЦ на клиентский узел:
      - ca.cert.pem (сертификат УЦ) в каталог /etc/ipsec.d/cacerts/;
      - client1.cert.pem (сертификат клиента) в домашний каталог пользователя.
  3. Задать настройки 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
                  
  4. Установить пакеты с strongSwan:
    Command

    sudo apt install strongswan libstrongswan-extra-plugins

  5. Скопировать из УЦ на клиентский узел:
      - ca.cert.pem (сертификат УЦ) в каталог /etc/ipsec.d/cacerts/;
      - client1.cert.pem (сертификат клиента) в домашний каталог пользователя.
  6. Задать настройки 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
    
    разделе "Настройка ... токена ...".
            leftauthleftsendcert=pubkeyalways
            leftcert=<токен_и_закрытый_ключ>leftsourceip=%config
    
            right=<IP-адрес_сервера>                            # Например: %smartcard0@rutoken:45
                  # Например: 10.192.6.108
            rightid=<IP-адрес_сервера>                                          #       Например: 10.192.6.108
            rightauth=pubkey
           # Формат значения <токен_и_закрытый_ключ> описан ниже в разделе "Настройка ... токена ...".
     rightsubnet=<виртуальная_сеть__предоставляемая_сервером>            # Например: 10.1.1.0/24
             leftsendcert=always
            leftsourceip=%config
    
            right=<IP-адрес_сервера>                                                   # Например: 10.192.6.108
            rightid=<IP-адрес_сервера>Если указать 0.0.0.0/0, то весь сетевой траффик клиента
                                                  # Например: 10.192.6.108
            rightauth=pubkey
            rightsubnet=<виртуальная_сеть__предоставляемая_сервером>                # Например: 10.1.1.0/24    будет "заворачиваться" в VPN-соединение (туннель).
                                                                                #  Если   указать 0.0.0.0/0, то весь сетевой траффик клиентаТогда на сервере параметру leftsubnet тоже 
                                                                                #     будетнеобходимо "заворачиваться"задать в VPN-соединение (туннель).
                                                                                #     Тогда на сервере параметру leftsubnet тоже 
                                                                                #     необходимо задать значение 0.0.0.0/0.

Настройка использования ключевого носителя (токена) в качестве второго фактора аутентификации

Предполагается, что на клиентском узле настроен единый доступ к ключевым носителям разных производителей (см. статью).

...

  1. значение 0.0.0.0/0.

Выпуск сертификата клиента и подготовка ключевого носителя (токена)

Предполагается, что на клиентском узле настроен единый доступ к ключевым носителям разных производителей (см. статью).

Общая информация по работе с ключевыми носителями дана в статье "Ключевые носители (токены) PKCS в Astra Linux".


Создание закрытого ключа и сертификата клиента


На клиентском узле в домашнем каталоге пользователя:

  1. Создать закрытый ключ клиента client1.key.pem:
    Command

    openssl genrsa -out client1.key.pem 4096

  2. Создать запрос на подписание клиентского сертификата client1.cert.csr:
    Command

    openssl req -key client1.key.pem -new -out client1.cert.csr -subj "/CN=<IP-адрес_клиента>" -addext "subjectAltName=IP.1:<IP-адрес_клиента>"

  3. Отправить файл с запросом client1.cert.csr на узел УЦ.


На удостоверяющем центре:

  1. Подписать запрос client1.cert.csr с помощью сертификата УЦ и сохранить подписанный сертификат клиента client1.cert.pem в каталоге /etc/ipsec.d/certs/:
    Command

    sudo pki --issue --lifetime 3650 --cacert /etc/ipsec.d/cacerts/ca.cert.pem --cakey /etc/ipsec.d/private/ca.key.pem \
        --in client
    1.cert.csr --type pkcs10 --flag clientAuth  --flag ikeIntermediate --outform pem \
      | sudo tee /etc/ipsec.d/certs/client1.cert.pem

  2. Скопировать подписанный сертификат клиента client1.cert.pem на клиентский узел в домашний каталог пользователя.




  1. Подключить ключевой носитель к клиентскому узлу.
  2. Записать на ключевой носитель сертификат и закрытый ключ клиента:
    Command

    p11tool --login --write --load-certificate="<путь_к_клиентскому_сертификату>" --id=<идентификатор_ключевой_пары> --label="<метка_ключевой_пары>"

    p11tool --login --write --load-privkey="<путь_к_клиентскому_закрытому_ключу>" --id=<идентификатор_ключевой_пары> --label="<метка_ключевой_пары>"

    где
      - <идентификатор_ключевой_пары> – идентификатор, с которым сертификат и ключ будут храниться на токене;
      - <метка_ключевой_пары> – название, с которым сертификат и ключ будут храниться на токене.

    Пример команд:
    Command

    p11tool --login --write --load-certificate="client.cert.pem" --id=45 --label="mykey"

    p11tool --login --write --load-privkey="client.key.pem" --id=45 --label="mykey"


Настройка использования ключевого носителя (токена) в качестве второго фактора аутентификации

  1. Включить поддержку токенов в 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
    #    }
      }
    }
  2. Настроить strongSwan на использование закрытого ключа клиента, который находится на токене.
    Для этого в файле /etc/ipsec.secrets указать строку с описанием токена и закрытого ключа:
    Блок кода
    : PIN <токен_и_закрытый_ключ> <pin-код_пользователя>
    где
      - <токен_и_закрытый_ключ> – задаётся по формату: %smartcard[<номер_слота_с_токеном>[@<название_модуля>]]:<идентификатор_ключевой_пары>
                                                                       где
                                                                         - <название_модуля> – название модуля в файле /etc/strongswan.d/charon/pkcs11.conf, в котором указана интерфейсная библиотека для работы с токеном;
                                                                         - <идентификатор_ключевой_пары> – идентификатор, с которым закрытый ключ записан на токен.
                                                                       Например:
    %smartcard0@rutoken:45
      - <pin-код_пользователя> – pin-код пользователя для токена.

    Пример файла /etc/ipsec.secrets  для вышеприведённого Рутокена:
    Блок кода
    : PIN %smartcard0@rutoken:45 12345678
  3. Перезапустить strongSwan для применения настроек:
    Command

    sudo ipsec restart

...