Перейти к основному контенту

OpenVPN

OpenVPN (https://openvpn.net) - технология виртуальной частной сети (VPN).

Подключение OpenVPN к Blitz Identity Provider выполняется по протоколу RADIUS и состоит из двух этапов:

  • Этап 1. Настройки на стороне Blitz Identity Provider

  • Этап 2. Настройки на стороне OpenVPN

Этап 1. Настройки на стороне Blitz Identity Provider

В консоли управления Blitz Identity Provider перейдите в раздел RADIUS и выполните следующие действия:

  1. Нажмите на Сегменты сети и создайте новый сегмент. Задайте следующие параметры:
  • Имя: укажите имя сети. Например, openvpn.
  • Подсеть: укажите 192.168.122.96/32.
  • Общий ключ: задайте секретный ключ для безопасной аутентификации приложения.

  1. Нажмите Сохранить.
  2. Перейдите на вкладку Процедуры обработки запросов и задайте параметры:
  • Статус: переместите переключатель в режим on.
  • Идентификатор процедуры: укажите идентификатор процедуры. Например, OpenVPN2FA.

  1. Вставьте код процедуры:
package com.identityblitz.idp.radius.flow;
import org.slf4j.LoggerFactory;
import org.slf4j.Logger;
import com.identityblitz.idp.radius.flow.RadiusResult.*;

public class OpenVPN2FA implements RadiusFlow {

  private final Logger logger =
LoggerFactory.getLogger("com.identityblitz.idp.flow.radius");

  public String loginN12(final String login) {
    return login;
}

  public RadiusResult next (final RadiusContext context) {
    if (context.factor() == 1) {
      return RadiusResult.challenge(Challenges.password());
    } else if (context.factor() == 2) {
       final java.util.Map<String, String> answers = new
java.util.HashMap<String, String>();
      answers.put("1", "sms");
      answers.put("2", "totp");
      return RadiusResult.dialog("challengeChoose", answers);
    } else {
      return  RadiusResult.authenticated(context.subject());
    } 
}

  public RadiusResult dialog(final RadiusContext context,
                             final String message,
                             final java.util.Map<String,
String> answers,
                             final String answer) {
    if (message.equals("challengeChoose")) {
      final String challenge = answers.get(answer);
      if(challenge != null) {
return
RadiusResult.challenge(Challenges.byName(challenge));
      } else {
        return RadiusResult.dialog(message, answers);
      }
    } else {
        return RadiusResult.rejected("unsupportedMessage");
    } 
  }

}

  1. Нажмите Сохранить и Активировать.

  2. В консоли управления Blitz Identity Provider перейдите в раздел Приложения и Создайте новое приложение, задав его базовые настройки:

  • Идентификатор (entityID или client_id): введите имя приложения. Например, openvpn.
  • Название: укажите имя приложения OpenVPN. Например, openvpn access server.
  • Домен: http://localhost.

  1. Нажмите Сохранить.

  2. Далее нажмите кнопку Параметры  у предложения openvpn и отредактируйте параметры приложения:

  • Протоколы: выберите RADIUS и нажмите Сконфигурировать
  • Процедура обработки: выберите OpenVPN2FA

  1. Нажмите Сохранить.

  2. Далее перейдите в раздел RADIUS на вкладку Сегменты сети. Укажите Приложение по умолчанию: openvpn access server.

  1. Откройте для редактирования конфигурационный файл /etc/blitz-config/custom_messages/messages и добавьте в него строку radius.display.dialog.challenge.name.sms=SMS.

  2. Перезапустите приложение blitz-idp командой systemctl restart blitz-idp.

Этап 2. Настройки на стороне OpenVPN

  1. В веб-консоли OpenVPN в разделе Authentication перейдите в Settings и укажите RADIUS в качестве подсистемы аутентификации по умолчанию.

  1. В разделе Authentication перейдите в RADIUS и укажите параметры подключения к Blitz, как указано ниже.

  1. В консоли сервера выполните команду для создания файла с настройками подключения: /usr/local/openvpn_as/scripts/sacli --prefer-tls-crypt-v2 GetGeneric >/tmp/client.ovpn.

Настройка подключения клиента

  1. Перенесите файл настроек на клиента с помощью команды nmcli connection import type openvpn file ~/tmp/client.ovpn
  2. Далее импортируйте файл с помощью команды mcli connection modify client vpn.user-name test
В примере используется консольная утилита nmcli для linux
  1. Подключитесь к тестовой учетной записи с настроенным TOTP с помощью команды nmcli connection up client.