OpenVPN

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

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

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

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

  1. Нажмите на Сегменты сети и создайте новый сегмент. Задайте следующие параметры:

ov-1-b.png

  1. Нажмите Сохранить.
  2. Перейдите на вкладку Процедуры обработки запросов и задайте параметры:

ov-3-b.png

  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.byDialogName(challenge));
      } else {
        return RadiusResult.dialog(message, answers);
      }
    } else {
        return RadiusResult.rejected("unsupportedMessage");
    } 
  }

}

ov-4-b.png

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

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

ov-5-b.png

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

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

ov-6-b.png

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

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

ov-7-b.png

  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 в качестве подсистемы аутентификации по умолчанию.

ov-1.png

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

ov-2.png

  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.

ov-3.png

ov-4.png

ov-5.png


Версия #5
Superadmin создал 2024-08-12 14:31:23 UTC
Admin обновил 2025-05-28 08:25:21 UTC