Настройка VPN-клиентов типа "точка — сеть": проверка подлинности на основе сертификата в Linux

Эта статья поможет вам подключиться к виртуальной сети Azure с помощью VPN-шлюз типа "точка — сеть" (P2S) и проверки подлинности на основе сертификата из клиента Linux. В этой статье описано несколько наборов действий в зависимости от типа туннеля, выбранного для конфигурации P2S, операционной системы и VPN-клиента, используемого для подключения.

Подготовка к работе

Перед началом убедитесь, что вы работаете с нужной статьей. В следующей таблице приведены статьи о конфигурации, доступные для VPN-клиентов Azure VPN-шлюза P2S. Шаги различаются в зависимости от типа проверки подлинности, типа туннеля и клиентской ОС.

Проверка подлинности Тип туннеля Статья с руководством
Сертификат Azure IKEv2, OpenVPN, SSTP Windows
Сертификат Azure IKEv2, OpenVPN macOS-iOS
Сертификат Azure IKEv2, OpenVPN Linux
Azure AD OpenVPN (SSL) Windows
Azure AD OpenVPN (SSL) macOS
RADIUS — сертификат - Статья
RADIUS — пароль - Статья
RADIUS — другие методы - Статья

Важно!

Начиная с 1 июля 2018 года прекращается поддержка TLS 1.0 и TLS 1.1 в VPN-шлюзе Azure. VPN-шлюз будет поддерживать только TLS 1.2. Затрагиваются только подключения "точка — сеть", но не подключения "сеть — сеть". Если вы используете TLS для VPN-подключений "точка — сеть" на клиентах с Windows 10 или более поздней версии, никаких действий не требуется. Если вы используете TLS для подключений "точка — сеть" клиентов с Windows 7 и Windows 8, обратитесь к разделу VPN-шлюз: вопросы и ответы за инструкциями по обновлению.

Создайте сертификаты.

Для проверки подлинности сертификата на каждом клиентском компьютере должен быть установлен сертификат клиента. Сертификат клиента, который вы хотите использовать, должен быть экспортирован с закрытым ключом и содержать все сертификаты в пути сертификации. Кроме того, для некоторых конфигураций также потребуется установить сведения о корневом сертификате.

Сведения о работе с сертификатами см. в разделе Точка — сеть: создание сертификатов.

Создание файлов конфигурации VPN-клиента

Все необходимые параметры конфигурации для VPN-клиентов содержатся в ZIP-файле конфигурации профиля VPN-клиента. Создаваемые файлы конфигурации профиля VPN-клиента относятся к конфигурации VPN-шлюза P2S для виртуальной сети. Если после создания файлов в конфигурации VPN типа "точка — сеть" будут изменены, например тип протокола VPN или тип проверки подлинности, необходимо создать новые файлы конфигурации профиля VPN-клиента и применить новую конфигурацию ко всем VPN-клиентам, к которым требуется подключиться. Дополнительные сведения о конфигурациях P2S см. в статье Сведения о VPN "точка — сеть".

Чтобы создать файлы конфигурации с помощью портал Azure:

  1. В портал Azure перейдите к шлюзу виртуальной сети, к которой требуется подключиться.

  2. На странице шлюза виртуальной сети выберите элемент Конфигурация "точка — сеть" , чтобы открыть страницу этой конфигурации.

  3. В верхней части страницы конфигурации "точка — сеть " выберите Скачать VPN-клиент. При этом не скачивается клиентское программное обеспечение для VPN, а создается пакет конфигурации для настройки VPN-клиентов. Пакет конфигурации клиента создается несколько минут. Пока пакет не будет создан, может ничего не происходить.

    Снимок экрана: страница конфигурации

  4. После создания пакета конфигурации браузер выявляет, что доступен ZIP-файл конфигурации клиента. Он получает такое же имя, как у вашего шлюза. Распакуйте файл. После этого отобразятся папки.

Затем настройте VPN-клиент. Выберите один из следующих инструкций:

IKEv2 — шаги strongSwan

Установка strongSwan

В приведенных ниже шагах использовалась следующая конфигурация:

  • Компьютер: Ubuntu Server 18.04
  • Зависимости: strongSwan

Чтобы установить необходимую конфигурацию strongSwan, используйте следующие команды:

sudo apt install strongswan
sudo apt install strongswan-pki
sudo apt install libstrongswan-extra-plugins

Чтобы установить интерфейс командной строки Azure, используйте следующую команду:

curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash

Дополнительные сведения см. в дополнительных инструкциях по установке Azure CLI.

Установка сертификатов

Сертификат клиента требуется при использовании проверки подлинности Azure на основе сертификата. Сертификат клиента должен быть установлен на каждом клиентском компьютере. Экспортируемый сертификат клиента должен быть экспортирован с закрытым ключом и должен содержать все сертификаты в пути сертификации. Прежде чем перейти к следующему разделу, убедитесь, что на клиентском компьютере установлен соответствующий сертификат клиента.

Сведения о сертификатах клиента см. в разделе Создание сертификатов — Linux.

Просмотр файлов профиля VPN-клиента

Перейдите к скачанным файлам конфигурации профиля VPN-клиента. В папке Generic можно найти все необходимые для конфигурации сведения. Azure не предоставляет файл mobileconfig для этой конфигурации.

Если вы не видите папку Generic, проверьте следующие элементы, а затем создайте ZIP-файл еще раз.

  • Проверьте тип туннеля для вашей конфигурации. Скорее всего, вы не выбрали IKEv2 в качестве типа туннеля.
  • В VPN-шлюзе убедитесь в том, что номер SKU отличается от базового. VPN-шлюз со SKU "Базовый" не поддерживает IKEv2. Затем выберите IKEv2 и создайте ZIP-файл еще раз для получения папки Generic.

Эта папка содержит следующие файлы:

  • Файл VpnSettings.xml — содержит такие важные параметры, как адрес сервера и тип туннеля.
  • Файл VpnServerRoot.cer содержит корневой сертификат, который требуется для проверки VPN-шлюза Azure при настройке подключения типа "точка — сеть".

После просмотра файлов перейдите к шагам, которые вы хотите выполнить:

Шаги графического интерфейса strongSwan

В этом разделе описана конфигурация с помощью графического интерфейса strongSwan. Приведенные ниже инструкции были созданы в Ubuntu 18.0.4. Ubuntu 16.0.10 не поддерживает графический пользовательский интерфейс strongSwan. Использовать Ubuntu 16.0.10 можно только с помощью командной строки. В зависимости от версии Linux и strongSwan указанные ниже примеры могут отличаться от экранов, которые вы видите.

  1. Откройте приложение Terminal, чтобы установить strongSwan и его Network Manager, выполнив команду из примера.

    sudo apt install network-manager-strongswan
    
  2. Выберите Settings (Параметры), а затем — Network (Сеть). Нажмите кнопку + , чтобы создать подключение.

    Снимок экрана, на котором показана страница сетевых подключений.

  3. В меню выберите IPSec/IKEv2 (strongSwan) и дважды щелкните.

    Снимок экрана, на котором показана страница добавления VPN.

  4. На странице Add VPN (Добавление VPN) добавьте имя VPN-подключения.

    Снимок экрана, на котором показан выбор типа подключения.

  5. Откройте файл VpnSettings.xml из папки Generic в загруженных файлах конфигурации профиля VPN-клиента. Найдите тег VpnServer и скопируйте имя, начиная с azuregateway и заканчивая .cloudapp.net.

    Снимок экрана, на котором показан интерфейс копирования данных.

  6. Вставьте это имя в поле Address (Адрес) нового VPN-подключения в разделе Gateway (Шлюз). Затем щелкните значок папки в конце поля Certificate (Сертификат), перейдите в папку Generic и выберите файл VpnServerRoot.

  7. В разделе Client (Клиент) подключения для параметра Authentication (Аутентификация) выберите Certificate/private key (Сертификат/закрытый ключ). Для параметров Certificate (Сертификат ) и Private key (Закрытый ключ) выберите созданные ранее сертификат и закрытый ключ. В разделе Options (Параметры) выберите Request an inner IP address (Запросить внутренний IP-адрес). а затем щелкните Добавить.

    Снимок экрана, на котором показан интерфейс запроса внутреннего IP-адреса.

  8. Включите подключение.

    Снимок экрана, на котором показано копирование.

Шаги интерфейса командной строки strongSwan

В этом разделе описана конфигурация с помощью интерфейса командной строки strongSwan.

  1. Из файлов конфигурации профиля VPN-клиента Generic копируйте или переместите файл VpnServerRoot.cer в папку /etc/ipsec.d/cacerts.

  2. Скопируйте или переместите файл cp client.p12 в папку /etc/ipsec.d/private/ . Этот файл является сертификатом клиента для VPN-шлюза.

  3. Откройте файл VpnSettings.xml и скопируйте значение <VpnServer>. Это значение потребуется вам на следующем шаге.

  4. Измените значения в приведенном ниже примере, а затем добавьте этот код в файл конфигурации /etc/ipsec.conf.

    conn azure
          keyexchange=ikev2
          type=tunnel
          leftfirewall=yes
          left=%any
          leftauth=eap-tls
          leftid=%client # use the DNS alternative name prefixed with the %
          right= Enter the VPN Server value here# Azure VPN gateway address
          rightid=% # Enter the VPN Server value here# Azure VPN gateway FQDN with %
          rightsubnet=0.0.0.0/0
          leftsourceip=%config
          auto=add
    
  5. Добавьте следующие значения в файл /etc/ipsec.secrets.

    : P12 client.p12 'password' # key filename inside /etc/ipsec.d/private directory
    
  6. Выполните следующие команды:

    # ipsec restart
    # ipsec up azure
    

Шаги OpenVPN

В этом разделе показано, как настроить клиентов Linux для проверки подлинности на основе сертификата, использующего тип туннеля OpenVPN. Чтобы подключиться к Azure, скачайте клиент OpenVPN и настройте профиль подключения.

  1. Запустите новый сеанс терминала. Новый сеанс можно начать, нажав CTRL+ALT+Т.

  2. Для установки необходимых компонентов введите следующую команду.

    sudo apt-get install openvpn
    sudo apt-get -y install network-manager-openvpn
    sudo service network-manager restart
    
  3. Затем перейдите в папку профиля VPN-клиента и распакуйте его, чтобы просмотреть файлы.

  4. Экспортируйте сертификат клиента P2S, который вы создали и отправили в конфигурацию P2S на шлюзе. Инструкции см. в разделе VPN-шлюз "точка — сеть".

  5. Извлеките закрытый ключ и отпечаток base64 из PFX-файла. Это можно сделать несколькими способами. Это можно сделать с помощью OpenSSL на компьютере.

    openssl pkcs12 -in "filename.pfx" -nodes -out "profileinfo.txt"
    

    Файл profileinfo.txt содержит закрытый ключ, отпечаток для ЦС и сертификат клиента. Не забудьте использовать отпечаток сертификата клиента.

  6. Откройте файл profileinfo.txt в текстовом редакторе. Чтобы получить отпечаток сертификата клиента (дочерний), выделите текст между "-----BEGIN CERTIFICATE-----" и "-----END CERTIFICATE-----", включая эти строки, для дочернего сертификата и скопируйте его. Дочерний сертификат можно определить, просмотрев строку subject=/.

  7. Откройте файл vpnconfig.ovpn и найдите раздел, показанный ниже. Замените весь код между маркерами "cert" и "/cert".

    # P2S client certificate
    # please fill this field with a PEM formatted cert
    <cert>
    $CLIENTCERTIFICATE
    </cert>
    
  8. Откройте файл profileinfo.txt в текстовом редакторе. Чтобы получить закрытый ключ, выделите текст между "-----BEGIN PRIVATE KEY-----" и "-----END PRIVATE KEY-----" (включая эти строки) и скопируйте его.

  9. Откройте файл vpnconfig.ovpn в текстовом редакторе и найдите этот раздел. Вставьте закрытый ключ, заменив все между key и /key.

    # P2S client root certificate private key
    # please fill this field with a PEM formatted key
    <key>
    $PRIVATEKEY
    </key>
    
  10. Не изменяйте остальные поля. Для подключения к VPN используйте заполненную конфигурацию на входе клиента.

  11. Чтобы подключиться с помощью командной строки, введите следующую команду:

    sudo openvpn --config <name and path of your VPN profile file>&
    
  12. Чтобы подключиться с помощью графического пользовательского интерфейса, перейдите в параметры системы.

  13. Щелкните + для добавления нового подключения VPN.

  14. В разделе Добавить VPN выберите Импорт из файла...

  15. Просмотрите файл профиля и дважды щелкните или выберите Открыть.

  16. Щелкните Добавить в окне Добавить VPN.

    Снимок экрана: импорт из файла на странице

  17. Вы можете подключиться, выбрав для VPN Вкл. на странице Параметры сети или под значком сети на панели задач.

Дальнейшие действия

Чтобы узнать о дополнительных шагах, вернитесь к исходной статье о конфигурации "точка — сеть", с которой вы работали.